我正在开发Android Auto Media App,无法理解MediaBrowserService

时间:2016-10-25 08:45:29

标签: android mediastore android-auto

创建Android时自动媒体App MusicService类创建扩展MediaBrowserService,两个方法在GetRoot和onLoadChildren上自动实现。 任何人都可以详细解释每件事情是如何运作的。

2 个答案:

答案 0 :(得分:2)

取自MusicPlayer.java

  

此类通过服务提供MediaBrowser。它暴露了   媒体库通过onGetRoot和浏览客户端   onLoadChildren方法

onGetRoot(..):如果客户端软件包具有访问媒体信息的权限,则返回root id(如果不允许客户端,则返回null)。 Source

onLoadChildren :返回媒体项的子项列表。 Source

要了解两者的实现,请检查MusicPlayer.java

中的实现

答案 1 :(得分:2)

MediaBrowserService的生命周期看起来像它延伸的简单Service的生命周期。 From documentation:

  

MediaBrowserService的生命周期由它的控制方式控制   创建,拥有它的客户端数量和调用   它从媒体会话回调中接收。总结一下:

     
      
  • 服务在启动时响应媒体按钮或活动绑定时创建(通过其连接后)   MediaBrowser时)。
  •   
  • 媒体会话onPlay()回调应该包含调用startService()的代码。这可确保服务启动并继续   运行,即使绑定到它的所有UI MediaBrowser活动也是如此   解除绑定。
  •   
  • onStop()回调应该调用stopSelf()。如果服务已启动,则会停止该服务。此外,如果存在,该服务将被销毁   没有任何约束的活动。否则,服务仍然受约束   直到它的所有活动解开。 (如果后续的startService()调用   在服务被销毁之前收到,待处理的停止是   取消。)
  •   
     

以下流程图演示了服务的生命周期   管理。变量计数器跟踪绑定客户端的数量:   life cycle

onGetRootonLoadChildren用于manage client connections

但要使用MediaBrowserService这还不够,所以你应该阅读this documentation(按照嵌套链接)。