微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使 MediaItem 在 Android Auto 中既可浏览又可播放

如何解决使 MediaItem 在 Android Auto 中既可浏览又可播放

我编写了一个播放音乐的 Android 服务。它派生自 MediabrowserServiceCompat,并且在 Android Auto 应用中基本按预期工作。

在我的 onLoadChildren 实现中,我提供了与专辑对应的 MediabrowserCompat.MediaItem 对象列表。我希望专辑能够播放(播放专辑中的所有歌曲)和浏览显示专辑中的个别歌曲),所以我使用如下代码构建项目:

val desc = MediaDescriptionCompat.Builder()
    .setTitle(album)
    .setMediaId(albumId)
    .build()
val item = MediaItem(desc,MediaItem.FLAG_broWSABLE or MediaItem.FLAG_PLAYABLE)

但是,Android Auto 应用似乎并没有让我浏览相册:

screenshot of album listing

这些项目的右侧没有箭头(就像我在仅使用 FLAG_broWSABLE 的项目上看到的那样)并且我只能点击它们(导致相册的媒体 ID 被传递到我的服务的 {{1} } 方法)。长按项目没有任何作用。当我只在项目上设置 MediaSessionCompat.Callback.onPlayFromMediaId 时,我可以浏览它们,但是我无法播放整个专辑。

根据 Android 的 Build media apps for cars 文档,我希望 UI 能够播放和浏览每个项目,后者操作会触发另一个带有专辑 ID 的 FLAG_broWSABLE 调用

媒体项目可以有这两个标志中的一个或两个:

  • Playable:此标志表示该项目是内容树上的叶子。该项目代表单个声音流,例如专辑中的歌曲、有声读物中的一章或播客的一集。
  • browsable:该标志表示该项目是内容树上的一个节点并且它有子项。例如,该项目代表一张专辑,其子项是专辑中的歌曲。

既可浏览又可播放的媒体项目就像播放列表一样。您可以选择项目本身来播放其所有子项,也可以浏览其子项。

我做错了什么,还是 Android Auto 应用不支持可浏览和可播放的媒体项目?我在搭载 Android 11 的手机上使用 Android Auto 版本 onLoadChildren,我的应用设置为 6.1.610544-release

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。