我正在写一个语音助理,并希望能够启动搜索结果在Spotify。为了了解如何连接到Spotify和其他应用程序,我正在使用谷歌媒体控制器测试应用程序,它被描述为执行以下操作:
创建一个连接到MediaController的简单MediaBrowserService,以便测试应用程序间媒体控件。 这个应用程序适用于示例,或者任何其他实现媒体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请求(如这里描述的那样),以及一个单独的应用程序编写者没有办法连接到Spotify的MediaBrowserService,还是有其他方式连接?FWIW,Google Play Music也拒绝通过这个应用程序连接。
我也有尝试让Spotify通过启动一个意图来搜索和播放,但没有成功。
发布于 2020-02-20 02:04:29
这是否意味着Spotify拒绝了来自非白名单应用程序的MediaBrowserService请求(如本文所述),以及单个应用程序编写者无法连接到Spotify的MediaBrowserService,还是有其他方式连接?
是的,这正是onConnectionFailed的意思。
您可以通过将UAMP的onGetRoot更改为返回null而不是BrowserRoot(UAMP_EMPTY_ROOT, rootExtras)来验证这一点。
一般来说,如果你想使用标准的Android和MediaBrowserCompat,你需要联系每个音乐播放器,让他们把你的应用程序白名单(或者切换到允许所有应用程序控制播放)。
发布于 2020-02-22 23:32:18
除非您的应用程序是使用Android键签名的系统应用程序,否则您无法使用MediaBrowserService连接到Spotify。我不能百分之百地肯定即使这样也能起作用。
但是,您不需要MediaBrowserService来查询Spotify。我建议您尝试一下Spotify Android:https://developer.spotify.com/documentation/android/
https://stackoverflow.com/questions/60216008
复制相似问题