gpt4 book ai didi

android - MediaBrowserServiceCompat 中的 onGetRoot() 和 onLoadChildren() 的目的是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:49 26 4
gpt4 key购买 nike

我是 Android 开发的初学者,试图通过实现 MediaBrowserMediaSession 创建一个媒体播放器。

我对 onGetRoot()onLoadChildren() 的功能感到困惑。

  1. 我的第一个问题是外行人这两个方法的目的是什么。
  2. 它们在 onGetRoot() 中属于什么根?我的意思是,它是目录的根目录,我说得对吗?
  3. onLoadChildren() 中的子项与什么有关?我想的是根目录中的音乐列表,我说得对吗?
  4. 这个 onLoadchildren() 会返回实际的播放列表吗?

最佳答案

引用:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice

为了理解这一点,清楚地了解 MediaItem 代表什么是很重要的。在引用中提供了以下声明“您的服务负责将 ID 与适当的菜单节点或内容项相关联。”您需要使用 MediaItem 类来定义项目的层次结构(PLAYABLE 或 BROWSEABLE)。一个例子是

root(不是媒体项,但可以订阅以返回最高级别的媒体项)->歌曲(可浏览)相册(可浏览)艺术家(可浏览)

相册 MediaItem,如果订阅,将返回类似->专辑 1(可浏览)album2(可浏览)

并且在您的专辑 1 中,您将拥有可播放的 MP3,例如->song1.mp3(可播放)song2.mp3(可播放)

对于所有可浏览的 MediaItem,我们可以选择“订阅”它们以获取所有子节点;这有助于我们动态构建 UI。

将这个概念与软件架构联系起来,您需要考虑什么将访问onGetRootonLoadChildren。它们是 MediaBrowserService 的一部分,因此这些函数将通过 MediaBrowser 进行交互。

1) onGetRoot() 被调用以获得权限 来访问MediaBrowserService 提供的媒体。它将返回一个可以订阅的“根 ID”,并返回层次结构最高级别的 MediaItems。 IE。在上面的示例中,订阅根节点将返回歌曲、专辑和艺术家。

onLoadChildren() 因此在我们选择订阅 MediaItems 以获取其子节点时调用。

2) 这与根目录无关,而是用于订阅您自定义层次结构的顶层(根)的“根 ID”

3) OnLoadChildren 由 MediaBrowser 的订阅方法调用,并将返回所有子 MediaItem(可浏览或可播放)。

4) 如果您愿意,OnLoadChildren 可以返回一个播放列表。为此,定义一个可浏览的 mediaItem“播放列表名称”,它将返回该播放列表中的 MediaItems。

关于android - MediaBrowserServiceCompat 中的 onGetRoot() 和 onLoadChildren() 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49545835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com