我正在尝试向其他媒体应用程序公开媒体项目,这些应用程序可以通过我的MediaBrowserServiceCompat服务浏览我的应用程序的内容。在我的onLoadChildren方法中,我使用一个MediaDescriptionCompat构造MediaBrowserCompat.MediaItem,其中包含一个Bundle,它有一些播放项目所需的额外内容。
public class Service extends MediaBrowserServiceCompat {
...
@Override
public void onLoadChildren(@NonNull String parentId, @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {
val bundle = Bundle().apply {
putString("extra", "some value")
}
MediaDescriptionCompat description = new MediaDescriptionCompat.Builder()
.setMediaId(mediaId)
.setExtras(bundle)
.setTitle("title")
.setSubtitle("subtitle")
.setIconUri(uri)
.build();
MediaBrowserCompat.MediaItem item = new MediaBrowserCompat.MediaItem(description, MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
val items = ArrayList<MediaBrowserCompat.MediaItem>()
items.add(item)
result.sendResult(items)
}因此,在用户单击项目时得到的onPlayFromMediaId(String mediaId, Bundle extras)回调中,我得到了正确的mediaId,但extras是一个空包。
private class MediaSessionCallback extends MediaSessionCompat.Callback {
...
@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
super.onPlayFromMediaId(mediaId, extras);
//here extras is empty
}我确信MediaItem在以onLoadChildren格式的Result<List<MediaBrowserCompat.MediaItem>>结果中发送时会有额外的捆绑包,但我不确定为什么它会被返回为空。是什么导致了这样的问题?
谢谢!
发布于 2019-08-01 03:46:29
我不认为你真的得到了捆绑包。您额外设置了参数Bundle,但我认为该包中实际上没有任何内容
通常,在创建包以检索它之后,我过去是如何做的,会做这样的事情
创建一个变量来存储接收到的
val extra:String然后使用该字符串变量获取您创建的包
extra = bundle.getstring("extra")哪个"extra“与您在顶部创建的捆绑包的键相匹配,而您实际上并没有从捆绑包中获得.getstring("extra")将获得的字符串
发布于 2020-05-25 20:48:02
有同样的问题,我找不到MediaDescriptionCompat的附加组件和onPlayFromMediaId的附加组件之间的关系。所以"mediaId“-这只是你从MediaItem获得的信息,你需要把你所有的数据放在这里onPlayFromMediaId。
https://stackoverflow.com/questions/57147007
复制相似问题