MediaBrowserServiceCompat получает пустой пакет при нажатии на элемент

Я пытаюсь открыть элементы мультимедиа для других мультимедийных приложений, которые могут просматривать содержимое моего приложения через мой MediaBrowserServiceCompat оказание услуг. В моем onLoadChildren метод, который я строю MediaBrowserCompat.MediaItem с MediaDescriptionCompat это включает в себя 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 имеет пакет дополнений при отправке в Result<List<MediaBrowserCompat.MediaItem>> результат в onLoadChildren но я не уверен, почему он возвращается пустым. Что может вызвать такую ​​проблему?

Спасибо!

1 ответ

У меня такая же проблема, и я не могу найти связь между дополнительными функциями MediaDescriptionCompat и дополнительными функциями onPlayFromMediaId. Итак, "mediaId" - это только информация, которую вы получили от MediaItem, и вам нужно поместить сюда все свои данные для onPlayFromMediaId.

Я не думаю, что вы на самом деле получаете пакет. Вы устанавливаете параметр Bundle extra, но я не думаю, что на самом деле есть что-то в этом комплекте

обычно, как я делал это в прошлом, после того, как я создал пакет для извлечения, он сделал бы что-то вроде этого

создать переменную для хранения полученных

val extra:String

затем используйте эту строковую переменную, чтобы получить пакет, который вы создали

extra = bundle.getstring("extra")

какой "extra" совпадает с вашим ключом для пакета, который вы создали вверху, и у вас есть практически только то, что вы фактически не получаете строку из пакета, которую получил бы.getstring("extra")

Другие вопросы по тегам