7

我正在尝试将媒体项目公开给其他可以通过我的MediaBrowserServiceCompat服务浏览我的应用程序内容的媒体应用程序。在我的onLoadChildren方法中,我正在构建 MediaBrowserCompat.MediaItem一个MediaDescriptionCompat包含一个Bundle我需要播放该项目的额外内容的 a。

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 在Result<List<MediaBrowserCompat.MediaItem>>结果中发送时具有附加包,onLoadChildren但我不确定为什么它被返回为空。什么会导致这样的问题?

谢谢!

4

2 回答 2

0

有同样的问题,我找不到 MediaDescriptionCompat 的附加功能和 onPlayFromMediaId 的附加功能之间的关系。所以“mediaId” - 这只是您从 MediaItem 获得的信息,您需要将 onPlayFromMediaId 的所有数据放在这里。

于 2020-05-25T12:48:01.663 回答
0

我不认为你真的得到了捆绑。您设置了参数 Bundle extra 但我认为该捆绑包中实际上没有任何内容

通常在我创建捆绑包以检索它之后我过去是如何做到的会做这样的事情

创建一个变量来存储接收到的

val extra:String

然后使用该字符串变量来获取您创建的包

extra = bundle.getstring("extra")

哪个“额外”与您在顶部创建的捆绑包的密钥匹配,您几乎只有您实际上没有从 .getstring("extra") 将获得的捆绑包中获取字符串

于 2019-07-31T19:46:28.893 回答