【问题标题】:Is it possible to connect to Spotify's MediaBrowserService?是否可以连接到 Spotify 的 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 实现中可能存在白名单,因此最初的声明部分不准确。

标签: android android-service spotify google-music 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 来实现您想要的。
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2017-11-12
  • 2014-04-13
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多