我目前正在尝试实现一个MediaBrowserService
为 Android Auto 构建媒体应用程序。我按照官方的 Android Auto 文档(https://developer.android.com/training/cars/media#onLoadChildren)来实现该onLoadChildren
功能。
以下是我尝试在 Android Auto 屏幕上显示内容的代码片段:
override fun onLoadChildren(parentId: String, result: Result<MutableList<MediaBrowserCompat.MediaItem>>) {
...
if (parentId == NODE_LIBRARY_ALBUMS) {
val items = mutableListOf<MediaBrowserCompat.MediaItem>()
val albumList = LibraryManager.getAlbumList()
for (it in albumList) {
val descriptionBuilder = MediaDescriptionCompat.Builder()
.setTitle(it.albumName)
items.add(MediaBrowserCompat.MediaItem(descriptionBuilder.build(), MediaBrowserCompat.MediaItem.FLAG_BROWSABLE))
}
result.sendResult(items)
}
...
}
当项目数量足够少时,这非常有效。但是,当项目数量很大(例如,大约 5,000 个项目)时,会出现以下错误:
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 1339384)
我发现其他几个支持 Android Auto 的媒体应用程序(例如三星音乐)可以显示大量项目。有没有办法在函数上返回大量项目onLoadChildren
,或者有没有其他方法可以解决这个问题?
谢谢!