是否可以连接到 Spotify 的 MediaBrowserService?
Posted
技术标签:
【中文标题】是否可以连接到 Spotify 的 MediaBrowserService?【英文标题】:Is it possible to connect to Spotify's MediaBrowserService? 【发布时间】:2020-05-29 15:27:29 【问题描述】:我正在编写语音助手,并希望能够在 Spotify 中启动搜索结果。为了了解如何连接到 Spotify 和其他应用程序,我正在使用Google's Media Controller Test app,它被描述为执行以下操作:
创建一个连接到 MediaBrowserService 的简单 MediaController 为了测试应用间媒体控件。
此应用适用于通用 android 音乐播放器示例,或任何 其他实现媒体 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,但没有成功。
【问题讨论】:
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
实现中可能存在白名单,因此最初的声明部分不准确。
【参考方案1】:
这是否意味着 Spotify 拒绝来自未列入白名单的应用的 MediaBrowserService 请求(如此处所述),并且单个应用编写者无法连接到 Spotify 的 MediaBrowserService,还是有其他连接方式?
是的,这正是onConnectionFailed
的意思。
您可以通过将 UAMP 的 onGetRoot
更改为返回 null
而不是 BrowserRoot(UAMP_EMPTY_ROOT, rootExtras)
来验证这一点。
一般来说,如果您想使用标准 Android API 和MediaBrowserCompat
,您需要联系每个音乐播放器并要求他们将您的应用列入白名单(或切换到允许所有应用控制其播放)连接到他们。
【讨论】:
谢谢。你会考虑看看我最近的其他问题吗?【参考方案2】:除非您的应用程序是使用 Android Build 密钥签名的系统应用程序,否则您无法使用 MediaBrowserService 连接到 Spotify。我不能 100% 确定即使这样也能解决问题。
但是,您不需要 MediaBrowserService 来查询 Spotify。我建议你试试 Spotify Android SDK:https://developer.spotify.com/documentation/android/
【讨论】:
谢谢。我尝试自签名证书并将其用于应用程序,但行为没有改变。这是你的建议还是别的什么? 您需要一个只有设备制造商拥有的平台密钥。因此,我建议您尝试使用 Spotify SDK 来实现您想要的。以上是关于是否可以连接到 Spotify 的 MediaBrowserService?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spotify API 和 Spotify SDK [关闭]