android - 对于正在播放的 Intent 过滤器,正确的 Spotify 操作是什么?

标签 android spotify

精简版
Spotify Android 应用程序在最近的版本中引入了“设备广播状态”开关,我想在我的应用程序中接收这些广播。可以使用哪些广播以及我应该如何配置我的 BroadcastReceiver?

长篇大论
我正在将一个正在播放的功能集成到我的 Android 应用程序中,并让它与大多数主要的音频媒体播放器一起使用。我想将它连接到 Spotify,因为这是我主要用来播放音乐的。

我看到了其他一些关于实现此目的的 Stack Overflow 帖子(例如 How is it possible to know what's spotify is playing from an external Android app?Intercept / Get Data sent to Spotify Widget on Android),我还使用了 adb shell dumpsys activity broadcasts 命令来确定我认为我感兴趣的两个操作在

com.spotify.mobile.android.playbackstatechangedcom.spotify.mobile.android.metadatachanged

我在 Spotify 应用程序本身中使用了设备广播状态开关,我很高兴该开关停用/激活了这些广播事件。

我遇到的问题是消息似乎只是偶尔发送。我在您可能期望的时候收到 playstatechanged 事件(播放、暂停、下一首、上一首),但它们不包含与当前轨道的任何相关信息。 metadatachanged 事件很少发生并且没有明显的模式。结合这使得很难(阅读,不可能)知道当前正在播放哪个轨道(如果有的话)。在一个好的 session 中,一切都可以顺利进行数小时,只要一首新歌开始,就会触发元数据更改事件,而在其他时候,我可能在整个 session 期间只收到一个事件。

我确实注意到,通过打开/关闭 WiFi 可以触发一系列事件,而且(可能)有趣的是,如果我收听加星标的播放列表,那么我会得到明显更明智的结果。

其他一些帖子建议我应该能够使用标准的 Android 操作 com.android.music.playbackcomplete、com.android.music.playstatechanged 和 com.android.music.metachanged 但我的 Spotify 应用程序版本没有似乎会触发这些(我正在使用它们与标准媒体播放器集成)。

我知道这是 Spotify 应用程序中的一项新功能,但尚未记录,但有没有人成功地将此功能集成到他们的应用程序中?如果是这样,你能分享你的 BroadcastReceiver 的配置吗?或者,如果有其他更好的方法,我也很想听听。

我使用的 Spotify 应用程序版本是 0.7.4.606。

最佳答案

我已经使用 Spotify 2.7.0.883 获得了以下 Intent Filter 操作:

   <!-- AndroidManifest.xml -->
   ...
   <receiver
        android:name=".MyBroadcastReceiver"
        android:enabled="true"
        android:exported="true" >

        <intent-filter>

            <!-- Spotify -->
            <action android:name="com.spotify.music.playbackstatechanged" />
            <action android:name="com.spotify.music.metadatachanged" />
            <action android:name="com.spotify.music.queuechanged" />

        </intent-filter>

    </receiver>

就 bundle 的 Intent 附加功能而言,这个 Spotify developer article很有用(但要注意他们在这篇文章中的不正确的 Intent Filter 操作)。

关于android - 对于正在播放的 Intent 过滤器,正确的 Spotify 操作是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468165/

相关文章:

android - 如何在 Spotify Android 应用程序中自动播放播放列表

spotify - 存储来自 spotify api 的元数据

spotify - 将歌曲添加到 Spotify 应用程序中的当前播放队列

android 使 LinearLayout 及其子元素透明

java - Android 中取消缩短 URL

android - Gradle : "Configuration cache state could not be cached"

ios - 如何使用 Spotify SDK 和 Swift 3 正确处理 token 刷新。错误代码=3840

android - PhoneGap:使用Android的闹钟音量播放声音

Android:覆盖应用程序中的可绘制滚动条

spotify - 我的应用程序图标从侧边栏中删除