【发布时间】:2020-05-29 15:27:29
【问题描述】:
我正在编写语音助手,并希望能够在 Spotify 中启动搜索结果。为了了解如何连接到 Spotify 和其他应用程序,我正在使用Google's Media Controller Test app,它被描述为执行以下操作:
创建一个连接到 MediaBrowserService 的简单 MediaController 为了测试应用间媒体控件。
此应用适用于通用 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 请求(如 here 所述),并且单个应用程序编写者无法连接到 Spotify 的 MediaBrowserService,或者有其他方法可以连接? FWIW,Google Play 音乐也拒绝通过该应用进行连接。
我也有tried getting Spotify to search and play by launching an intent,但没有成功。
【问题讨论】:
-
MediaBrowserService与 Spotify 无关,“媒体控制器测试”示例预计将连接到 Universal Android Music Player Sample。见MusicService.kt; Spotify 需要公开类似的 Intent 服务。 -
@MartinZeitler 感谢您的回复。根据“媒体控制器测试”的自述文件,它显示“使用 'android.media.browse.MediaBrowserService' 的意图过滤器操作注册服务的应用程序”。 Spotify 显示在应用程序的列表中,如我添加的屏幕截图所示。我也尝试过使用意图,如更新的问题中所述。
-
可能是显而易见的,但是,这不是您应该开始阅读的地方吗? developer.spotify.com/documentation/android
-
谢谢@Simson。我知道 SDK,但我希望有一个适用于多个音乐播放器的通用解决方案。
-
@EllenSpertus 我不知道 Spotify 的
MediaBrowserService实现中可能存在白名单,因此最初的声明部分不准确。
标签: android android-service spotify google-music mediabrowserservice