我使用客户端/服务器架构制作了我的第一个音频应用(音乐播放器):https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice.html
一切正常。我只测试了一首歌 - 我在MediaPlayer
类中使用硬编码方式为MediaService
实例设置了一个源(Uri),仅用于测试。
它正常播放此歌曲,在通知和锁定屏幕中显示有关它的信息,播放/暂停按钮也可正常工作。
但现在我需要制作一个播放列表。
这样做的最佳做法是什么?
只创建一些List
类的实例MyAudio
,设置所有MyAudio
实例的标题,艺术家,源(等等)字段(当用户从中选择一些文件夹时)他的设备存储空间)然后只需在onSkipToNext
,onSkipToPrevious
MediaSessionCallback
,onCompletion
' MediaPlayer'中使用它们。
来自该客户端/服务器架构示例的List<MediaItem> mediaItems = new ArrayList<>();
方法中有一行onLoadChildren()
。
但我需要这个吗?或者这些方法(使用getRoot()
)只需要让其他应用程序有机会使用我的MediaService获取音乐/播放列表列表。
如果我不这样做,我可以不关心这些方法吗?
答案 0 :(得分:1)
使用MediaItem
的重点在于它为您提供了一个预先构建的机制,用于传递可在MediaBrowserServiceCompat
和您的用户界面之间播放的对象列表,如{{3}中所述 - 如果你构建自己的MyAudio
类,那么以任何干净的方式在两者之间传递它会更加困难。
当然,如果您只有一个固定的播放列表来显示当前播放的内容(而不是可供选择的项目列表),您可能更适合在MediaSession
中使用队列API 。即,this MediaBrowserService blog post和setQueue()。