【发布时间】:2020-09-05 06:17:44
【问题描述】:
我有一个通用的 Android Automotive OS 模拟器正在运行。我创建了一个示例汽车应用程序,该应用程序应在主可浏览根目录中显示 6 首歌曲。我MediaBrowserService中的代码sn-p是:
override fun onLoadChildren(parentId: String, result: Result<MutableList<MediaItem>>) {
val mediaList = ArrayList<MediaItem>()
if (parentId == "root") {
AUTO_SOURCES.forEach { mediaList.add(buildMediaItem(it.sourceId, it.sourceName)) }
}
result.sendResult(mediaList)
}
private fun buildMediaItem(mediaId: String, title: String): MediaItem {
val desc = MediaDescriptionCompat.Builder()
.setMediaId(mediaId)
.setTitle(title)
.setIconUri(mediaId.asAlbumArtContentUri())
.build()
return MediaItem(desc, MediaItem.FLAG_PLAYABLE)
}
我看到onLoadChildren 被调用并且对应的sendResult 但是永远不会显示可播放的媒体项目。如果我将它们更改为MediaItem.FLAG_BROWSABLE,它们会正确显示。知道我做错了什么吗?
【问题讨论】:
-
看起来该标志是强制性的。例如。见:androidxref.com/9.0.0_r3/xref/packages/apps/Car/…
-
@AndreySamoilov 感谢您的回复,但您能详细说明一下吗?我正在添加 MediaItem.FLAG_PLAYABLE 标志。你是不是要换一个?
-
我的意思是 MediaItem.FLAG_BROWSABLE 看起来像是必须浏览的。我已经查看了使用这两个标志(MediaItem.FLAG_BROWSABLE 和 MediaItem.FLAG_PLAYABLE)的 AOSP。请参阅androidxref.com/9.0.0_r3/xref/frameworks/base/media/java/… 根据这些评论,我认为:FLAG_BROWSABLE 应该用于 BrowserCallback。 MediaItem.FLAG_PLAYABLE 应该用于 MediaPlayback 中的查询。
标签: android android-auto android-automotive mediabrowserservice