音频应用程序(客户端/服务器设计),我需要onLoadChildren()方法吗?

时间:2017-02-02 19:18:57

标签: android

我使用客户端/服务器架构制作了我的第一个音频应用(音乐播放器):https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice.html

一切正常。我只测试了一首歌 - 我在MediaPlayer类中使用硬编码方式为MediaService实例设置了一个源(Uri),仅用于测试。

它正常播放此歌曲,在通知和锁定屏幕中显示有关它的信息,播放/暂停按钮也可正常工作。

但现在我需要制作一个播放列表。 这样做的最佳做法是什么? 只创建一些List类的实例MyAudio,设置所有MyAudio实例的标题,艺术家,源(等等)字段(当用户从​​中选择一些文件夹时)他的设备存储空间)然后只需在onSkipToNextonSkipToPrevious MediaSessionCallbackonCompletion' MediaPlayer'中使用它们。

来自该客户端/服务器架构示例的List<MediaItem> mediaItems = new ArrayList<>();方法中有一行onLoadChildren()

但我需要这个吗?或者这些方法(使用getRoot())只需要让其他应用程序有机会使用我的MediaService获取音乐/播放列表列表。 如果我不这样做,我可以不关心这些方法吗?

1 个答案:

答案 0 :(得分:1)

使用MediaItem的重点在于它为您提供了一个预先构建的机制,用于传递可在MediaBrowserServiceCompat和您的用户界面之间播放的对象列表,如{{3}中所述 - 如果你构建自己的MyAudio类,那么以任何干净的方式在两者之间传递它会更加困难。

当然,如果您只有一个固定的播放列表来显示当前播放的内容(而不是可供选择的项目列表),您可能更适合在MediaSession中使用队列API 。即,this MediaBrowserService blog postsetQueue()