6

我正在编写一个语音助手,并希望能够在 Spotify 中启动搜索结果。为了了解如何连接到 Spotify 和其他应用程序,我正在使用Google 的媒体控制器测试应用程序,它被描述为执行以下操作:

创建一个连接到 MediaBrowserService 的简单 MediaController 以测试应用间媒体控件。

此应用程序适用于通用 Android 音乐播放器示例,或任何其他实现媒体 API 的应用程序。

当我运行该应用程序时,它会将 Spotify 标识为提供MediaBrowserService,但当我尝试通过该应用程序连接到 Spotify 时出现错误:

包含错误的 Android 屏幕截图:

这是连接代码

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来自未列入白名单的应用程序的请求(如此所述)并且单个应用程序编写者无法连接到 Spotify 的MediaBrowserService,或者是否有其他连接方式?FWIW,谷歌播放音乐也拒绝通过应用程序连接。

我还尝试通过启动 intent 让 Spotify 进行搜索和播放,但没有成功。

4

2 回答 2

5

这是否意味着 Spotify 拒绝来自非白名单应用程序的 MediaBrowserService 请求(如此处所述),并且单个应用程序编写者无法连接到 Spotify 的 MediaBrowserService,或者是否有其他连接方式?

是的,就是这个onConnectionFailed意思。

您可以通过将 UAMP 更改onGetRoot为 returnnull而不是BrowserRoot(UAMP_EMPTY_ROOT, rootExtras).

一般来说,如果您想使用标准的 Android API 并MediaBrowserCompat连接到它们,您需要联系每个音乐播放器并要求他们将您的应用列入白名单(或切换到允许所有应用控制其播放)。

于 2020-02-20T02:04:29.277 回答
1

除非您的应用程序是使用 Android Build 密钥签名的系统应用程序,否则您无法使用 MediaBrowserService 连接到 Spotify。我不能 100% 确定即使这样也能解决问题。

但是,您不需要 MediaBrowserService 来查询 Spotify。我建议你试试 Spotify Android SDK:https ://developer.spotify.com/documentation/android/

于 2020-02-22T23:32:18.383 回答