MediaSession, передать дополнительный пакет из MediaCtroller (TransportControls) в MediaBrowserService, но не получить данные о MediaBrowserService - PullRequest
0 голосов
/ 14 сентября 2018

Я сейчас пытаюсь использовать Android MediaSession, но когда я хочу передать дополнительные данные пакета со стороны клиента на сторону сервера, наконец, я получаю пустой объект пакета на стороне сервера, я попробовал много способов достигните этого, но это все еще не работает. В дополнение к экспериментам с моим собственным проектом, я также попытался использовать проект android-UniversalMediaPlayer, но в итоге не получилось.

это код из демонстрационного примера Google android-UniversalMediaPlayer ,, но не последняя версия (я скачал его несколько месяцев назад): https://github.com/googlesamples/android-UniversalMusicPlayer

Я отправляю новые созданные дополнения сюда на стороне клиента ,, и я только внес изменения в этом месте.

Client:
@Override
public void onMediaItemSelected(MediaBrowserCompat.MediaItem item) {
    LogHelper.d(TAG, "onMediaItemSelected, mediaId=" + item.getMediaId());
    if (item.isPlayable()) {
        Bundle bundle = new Bundle();
        bundle.putString("test_key", "my_test_data");
        bundle.putInt("test_key_int", "2018");
        MediaControllerCompat.getMediaController(MusicPlayerActivity.this).getTransportControls()
                .playFromMediaId(item.getMediaId(), bundle);
    } else if (item.isBrowsable()) {
        navigateToBrowser(item.getMediaId());
    } else {
        LogHelper.w(TAG, "Ignoring MediaItem that is neither browsable nor playable: ",
                "mediaId=", item.getMediaId());
    }
}

Я отлаживаю здесь на стороне сервера, он может получить mediaId, но пакет пуст:

Server:
@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
    LogHelper.d(TAG, "playFromMediaId mediaId:", mediaId, "  extras=", extras);
    mQueueManager.setQueueFromMusic(mediaId);
    handlePlayRequest();
}

Я также пытался использовать MediaController.sendCommand (команда String, Bundle bundle) и TransportControls.sendCustomAction (String action, Bundle bundle), на стороне сервера могут быть получены как команда, так и действие, но пакет все еще пуст.

Мое неправильное понимание этих методов, или способ, которым я создал объект пакета, неверен, или здесь есть ошибка в MediaSession?

Я очень смущен этим, и мой английский плохой, я надеюсь, что я правильно выразил свое значение, наконец, благодарен за ваш ответ.

...