MediaBrowserServiceCompat 中的 onGetRoot() 和 onLoadChildren() 的目的是什么?
What is the purpose of onGetRoot() and onLoadChildren() in MediaBrowserServiceCompat?
我是 Android 开发的初学者,试图通过实施 MediaBrowser
和 MediaSession
.
创建媒体播放器
我对onGetRoot()
和onLoadChildren()
的功能感到困惑。
- 我的第一个问题是
layman's term
这两个方法的目的是什么。
- 它们在
onGetRoot()
中的词根是什么?我的意思是,它是目录的根目录,我说得对吗?
onLoadChildren()
中的 children 是什么?我想的是根目录中的音乐列表,我说得对吗?
- 这个
onLoadchildren()
return 是实际的播放列表吗?
参考:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice
为了理解这一点,重要的是要清楚地理解 MediaItem
代表什么。
在参考中提供了以下声明 "Your service is responsible for associating the ID with the appropriate menu node or content item."
您需要使用 MediaItem class 来定义项目的层次结构(PLAYABLE 或 BROWSEABLE)。一个例子是
root(不是媒体项,但可以订阅 return 最高级别的媒体项)
->
歌曲(可浏览)
相册(可浏览)
艺术家(可浏览)
相册 MediaItem,如果订阅,会 return 类似
->
专辑 1(可浏览)
专辑 2(可浏览)
并且在您的专辑 1 中,您将拥有可播放的 MP3,例如
->
song1.mp3(可播放)
song2.mp3(可播放)
对于所有可浏览的 MediaItem,我们可以选择 "subscribe" 以获取所有子节点;这有助于我们动态构建 UI.
将此概念与软件架构联系起来,您需要考虑访问onGetRoot
和onLoadChildren
的内容。它们是 MediaBrowserService 的一部分,因此这些函数将通过 MediaBrowser.
进行交互
1) 调用 onGetRoot()
以获得 访问 MediaBrowserService
提供的媒体的权限。它将 return 一个可以订阅的 "root ID" 和 return 层次结构最高级别的 MediaItems。 IE。在上面的示例中,订阅根节点将 return 歌曲、专辑和艺术家。
onLoadChildren()
因此在我们选择订阅 MediaItems 以获取其子节点时被调用。
2) 这与根目录无关,而是 "root ID" 用于订阅您自定义层次结构的顶层(根)
3) OnLoadChildren
由 MediaBrowser 的订阅方法调用,并将 return 所有子 MediaItems(可浏览或可播放)。
4) 如果您愿意,OnLoadChildren
可以 return 一个播放列表。为此,定义一个可浏览的 mediaItem "playlist name",它将 return 该播放列表中的 MediaItems。
我是 Android 开发的初学者,试图通过实施 MediaBrowser
和 MediaSession
.
我对onGetRoot()
和onLoadChildren()
的功能感到困惑。
- 我的第一个问题是
layman's term
这两个方法的目的是什么。 - 它们在
onGetRoot()
中的词根是什么?我的意思是,它是目录的根目录,我说得对吗? onLoadChildren()
中的 children 是什么?我想的是根目录中的音乐列表,我说得对吗?- 这个
onLoadchildren()
return 是实际的播放列表吗?
参考:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice
为了理解这一点,重要的是要清楚地理解 MediaItem
代表什么。
在参考中提供了以下声明 "Your service is responsible for associating the ID with the appropriate menu node or content item."
您需要使用 MediaItem class 来定义项目的层次结构(PLAYABLE 或 BROWSEABLE)。一个例子是
root(不是媒体项,但可以订阅 return 最高级别的媒体项) -> 歌曲(可浏览) 相册(可浏览) 艺术家(可浏览)
相册 MediaItem,如果订阅,会 return 类似 -> 专辑 1(可浏览) 专辑 2(可浏览)
并且在您的专辑 1 中,您将拥有可播放的 MP3,例如 -> song1.mp3(可播放) song2.mp3(可播放)
对于所有可浏览的 MediaItem,我们可以选择 "subscribe" 以获取所有子节点;这有助于我们动态构建 UI.
将此概念与软件架构联系起来,您需要考虑访问onGetRoot
和onLoadChildren
的内容。它们是 MediaBrowserService 的一部分,因此这些函数将通过 MediaBrowser.
1) 调用 onGetRoot()
以获得 访问 MediaBrowserService
提供的媒体的权限。它将 return 一个可以订阅的 "root ID" 和 return 层次结构最高级别的 MediaItems。 IE。在上面的示例中,订阅根节点将 return 歌曲、专辑和艺术家。
onLoadChildren()
因此在我们选择订阅 MediaItems 以获取其子节点时被调用。
2) 这与根目录无关,而是 "root ID" 用于订阅您自定义层次结构的顶层(根)
3) OnLoadChildren
由 MediaBrowser 的订阅方法调用,并将 return 所有子 MediaItems(可浏览或可播放)。
4) 如果您愿意,OnLoadChildren
可以 return 一个播放列表。为此,定义一个可浏览的 mediaItem "playlist name",它将 return 该播放列表中的 MediaItems。