MediaBrowserCompat MediaBrowserServiceCompat

MediaBrowserCompat MediaBrowserServiceCompat

学习代码参考:
googlesamples/android-MediaBrowserService

我的源码注释与简单代码修改:
AndroidHighQualityCodeStudy/android-GoogleSample-MediaBrowserService

MediaBrowserCompatMediaBrowserServiceCompat为Android Support Library 23.2新增API,为一套CS架构的媒体播放框架。

  • MediaBrowserServiceCompat继承字Service,为运行在后台的音频服务。
  • MediaBrowserCompat 运行与前台,通过MediaSessionCompat与MediaBrowserServiceCompat建立连接,从而获取到一个MediaControllerCompat用于控制前台音频播放。
  • MediaControllerCompat UI界面控制音频播放进度、播放速度、上一曲、下一曲音频播放等等。
  • MediaSessionCompat 运行于后台的MediaBrowserServiceCompat与运行于前台的MediaBrowserCompat通过MediaSessionCompat来建立连接。
  • MediaSessionCompat.Callback 用户通过MediaControllerCompat对UI的操作,会通过MediaSessionCompat.Callback 回调到Service端,来操纵“播放器”进行播放、暂定、快进、上一曲、下一曲等操作
  • MediaControllerCompat.Callback Service端播放器播放完成、播放下一曲等操作,通过MediaControllerCompat.Callback回调到UI页面,操纵UI的变化。

因此 MediaBrowserCompatMediaBrowserServiceCompat 仅为一套CS架构的播放框架,其对应的播放器,既可以为系统播放器MediaPlayer亦可以为其他自定义的播放器 XXXMediaPlayer

关于MediaBrowserService官方demo中这样写道

  • Set a MediaSession.Callback class on the MediaSession. The callback class will receive all the user’s actions, like play, pause, etc; 用户的UI操作,最终通过MediaSession.Callback回调到Service端
  • Handle all the actual music playing using any method your app prefers (for example, the Android MediaPlayer class) MediaBrowserService可以控制任意播放器播放,例:MediaPlayer
  • Whenever it changes, update info about the playing item and the playing queue using MediaSession corresponding methods (setMetadata, setPlaybackState, setQueue, setQueueTitle, etc) 这里通过阅读源码得知(setMetadata, setPlaybackState, setQueue, setQueueTitle, etc) 这些方法最终回调到了Client端的MediaControllerCompat.Callback方法。
  • Handle AudioManager focus change events and react appropriately (e.g. pause when audio focus is lost) 音频焦点变化的管理

MediaSession架构

来自https://github.com/kevinshine/android-UniversalMusicPlayer-Analysis
的MediaSession架构图
这里写图片描述

官方demo android-MediaBrowserService的架构图

[外链图片转存中…(img-LcVIW6WF-1574931919759)]

源码阅读,可以参考我的注释demo

AndroidHighQualityCodeStudy/android-GoogleSample-MediaBrowserService

播放网络音频 封装

Android_MediaBrowser_Demo

========== THE END ==========

您对“我的文章”有任何疑问,可用微信扫描以下“二维码”向我提问!

在这里插入图片描述

如果文章对您有帮助,请扫描以下二维码支持我!

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjxiaxueliang

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值