Android Car音乐播放器分析
概述
Android Car系统音乐路径是packages/apps/Car/Media,应用名称是CarMediaApp,包名是com.android.car.media。系统音乐的数据来自同目录的LocalMediaPlayer,应用名称是LocalMediaPlayer,包名是com.android.car.media.localmediaplayer。这两个应用共用了sharedUserId,这样可以互相访问数据了。注意共用sharedUserId,必需签名也要相同,否则应用无法安装。
MediaSession框架
MediaBrowser
媒体浏览器,用来连接MediaBrowserService和订阅数据,通过它的回调接口我们可以获取和Service的连接状态以及获取在Service中异步获取的音乐库数据。媒体浏览器一般创建于客户端。
MediaBrowserService
浏览器服务,提供onGetRoot(控制客户端媒体浏览器的连接请求,通过返回值决定是否允许该客户端连接服务)和onLoadChildren(媒体浏览器向Service发送数据订阅时调用,一般在这执行异步获取数据的操作,最后将数据发送至媒体浏览器的回调接口中)这两个抽象方法 。客户端通过MediaBrowser.subscribe()方法发起数据请求,每次subscribe都会调用到onLoadChildren。
MediaSession
媒体会话,即受控端,通过设置MediaSessionCompat.Callback回调来接收媒体控制器MediaCont