我正在编写语音助手,希望能够在Spotify中启动搜索结果。为了了解如何连接到Spotify和其他应用程序,我在玩Google's Media Controller Test app,它被描述为执行以下操作:
创建连接到MediaBrowserService的简单MediaController为了测试应用程序间媒体控件。
此应用可与Universal Android Music Player示例或任何其他版本一起使用其他实现媒体API的应用。
[运行应用程序时,它会将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音乐也拒绝通过该应用的连接。
我也有tried getting Spotify to search and play by launching an intent,但没有成功。
这是否意味着Spotify拒绝了来自非列入白名单的应用程序的MediaBrowserService请求(如此处所述),并且单个应用程序编写者无法连接到Spotify的MediaBrowserService,或者是否有其他连接方法?
是,这正是onConnectionFailed
的意思。
您可以通过更改UAMP的onGetRoot
以返回onGetRoot
而不是null
来验证。
[通常,如果您想使用标准的Android API,并且需要BrowserRoot(UAMP_EMPTY_ROOT, rootExtras)
连接到他们。
除非您的应用程序是使用Android Build键签名的系统应用程序,否则无法使用MediaBrowserService连接到Spotify。我也不是100%肯定能做到这一点。
但是,您不需要MediaBrowserService即可查询Spotify。我建议您尝试一下Spotify Android SDK:MediaBrowserCompat