是否可以连接到 Spotify 的 MediaBrowserService?

Is it possible to connect to Spotify's MediaBrowserService?

我正在编写一个语音助手,希望能够在 Spotify 中启动搜索结果。为了了解如何连接到 Spotify 和其他应用程序,我正在玩 Google's Media Controller Test app,它被描述为执行以下操作:

Create a simple MediaController that connects to a MediaBrowserService in order to test inter-app media controls.

This app works with the Universal Android Music Player sample, or any other app that implements the media APIs.

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

这是 connection code:

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 请求(如 here 所述),并且单个应用作者无法连接到 Spotify 的 MediaBrowserService ,还是有其他连接方式? FWIW,Google Play Music 也拒绝通过应用连接。

我也tried getting Spotify to search and play by launching an intent,但是没有成功。

Does this imply that Spotify refuses MediaBrowserService requests from non-whitelisted apps (as described here) and that there's no way for an individual app writer to connect to Spotify's MediaBrowserService, or is there some other way to connect?

是的,这正是 onConnectionFailed 的意思。

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

来验证这一点

一般来说,如果您想使用标准 Android API 和 MediaBrowserCompat 连接到它们。

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

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