Можно ли подключиться к Spotify MediaBrowserService?

Я пишу голосовой помощник и хотел бы иметь возможность запускать результаты поиска в Spotify. Чтобы понять, как подключиться к Spotify и другим приложениям, я играю с тестовым приложением Google Media Controller, который описывается следующим образом:

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

Это приложение работает с образцом универсального музыкального проигрывателя Android или любым другим приложением, реализующим мультимедийные API.

Когда я запускаю приложение, оно определяет, что Spotify предоставляет MediaBrowserService, но я получаю сообщение об ошибке, когда пытаюсь подключиться к Spotify через приложение:

«Снимок

Вот код подключения:

mBrowser = new MediaBrowserCompat(this, mMediaAppDetails.componentName,
        new MediaBrowserCompat.ConnectionCallback() {
             @Override
             public void onConnected() {
                 setupMediaController();
                 mBrowseMediaItemsAdapter.setRoot(mBrowser.getRoot());
             }

             @Override
             public void onConnectionSuspended() {
                 //TODO(rasekh): shut down browser.
                 mBrowseMediaItemsAdapter.setRoot(null);
             }

             @Override
             public void onConnectionFailed() {
                 showToastAndFinish(getString(
                         R.string.connection_failed_msg, mMediaAppDetails.appName));
             }

         }, null);
mBrowser.connect();

В частности, вскоре после вызова mBrowser.connect() вызывается метод обратного вызова onConnectionFailed().

Означает ли это, что Spotify отклоняет MediaBrowserService запросы от приложений, не внесенных в белый список (как описано здесь), и что отдельный автор приложений не может подключиться к MediaBrowserService Spotify или есть какой-то другой способ подключения? FWIW, Google Play Music также отклоняет подключения через приложение.

У меня также есть пытался заставить Spotify искать и воспроизводить, запустив намерение, но безуспешно.


person Ellen Spertus    schedule 13.02.2020    source источник
comment
MediaBrowserService не имеет ничего общего со Spotify, и ожидается, что тестовый пример Media Controller будет подключаться к примеру универсального музыкального проигрывателя Android. См. MusicService.kt; Spotify должен был бы предоставить услугу Intent, подобную этой.   -  person Martin Zeitler    schedule 16.02.2020
comment
@MartinZeitler Спасибо за ответ. Согласно README для теста Media Controller, он показывает приложения, которые регистрируют службу с действием фильтра намерений «android.media.browse.MediaBrowserService». Spotify отображается в списке в приложении, как показано на скриншоте, который я добавил. Я также пытался использовать намерения, как описано в обновленном вопросе.   -  person Ellen Spertus    schedule 17.02.2020
comment
Возможно, констатируя очевидное, но разве не с этого следует начинать чтение? developer.spotify.com/documentation/android   -  person Simson    schedule 17.02.2020
comment
Спасибо @Simson. Я знаю о SDK, но надеюсь на общее решение, которое будет работать для нескольких музыкальных плееров.   -  person Ellen Spertus    schedule 17.02.2020
comment
@EllenSpertus Я не знал о возможном белом списке в реализации Spotify MediaBrowserService, поэтому исходное утверждение было частично неточным.   -  person Martin Zeitler    schedule 20.02.2020
comment
@Ellen Spertus, решило ли это проблему с системным приложением для вас?   -  person Sankalp Pandya    schedule 31.05.2021


Ответы (2)


Означает ли это, что Spotify отклоняет запросы MediaBrowserService от приложений, не внесенных в белый список (как описано здесь), и что у отдельного автора приложений нет возможности подключиться к MediaBrowserService Spotify, или есть какой-то другой способ подключения?

Да, это именно то, что означает onConnectionFailed.

Вы можете проверить это, изменив onGetRoot, чтобы вернуть null, а не BrowserRoot(UAMP_EMPTY_ROOT, rootExtras).

Как правило, вам нужно обратиться к каждому музыкальному проигрывателю и попросить его внести ваше приложение в белый список (или разрешить всем приложениям управлять своим воспроизведением), если вы хотите использовать стандартные API Android и MediaBrowserCompat для подключения к ним.

person ianhanniballake    schedule 20.02.2020
comment
Спасибо. Не могли бы вы рассмотреть другие мои недавние вопросы? - person Ellen Spertus; 20.02.2020

Вы не можете подключиться к Spotify с помощью MediaBrowserService, если ваше приложение не является системным приложением, подписанным ключом Android Build. Я не уверен на 100%, что даже это поможет.

Однако вам не нужен MediaBrowserService для запроса Spotify. Я бы посоветовал вам попробовать Spotify Android SDK: https://developer.spotify.com/documentation/android/

person Yuriy Kulikov    schedule 22.02.2020
comment
Спасибо. Я попытался самоподписать сертификат и использовать его для приложения без каких-либо изменений в поведении. Это вы предлагали или что-то другое? - person Ellen Spertus; 23.02.2020
comment
Для этого вам понадобится ключ платформы, который есть только у производителя устройства. Поэтому я предлагаю вам попробовать Spotify SDK, который можно использовать для достижения того, чего вы хотите. - person Yuriy Kulikov; 25.02.2020