现在正在播放的意图过滤器的Spotify操作是什么?

时间:2013-12-09 10:23:06

标签: 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应用程序中使用了设备广播状态切换,我很高兴切换de /激活这些广播事件。

我遇到的问题是这些消息似乎只是偶尔发送的。当你可能期望它们(播放,暂停,下一个,前一个)时,我会收到playstatechanged事件,但它们不包含任何与当前曲目相关的信息。 metadatachanged事件很少发生,没有明显的模式。结合这使得很难(阅读,不可能)知道当前正在播放哪首曲目(如果有的话)。在一个好的会话中,事情可以持续数小时,每当新歌开始时会触发metadatachanged事件,在其他时候,我可能只会在整个会话期间获得一个事件。

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

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

我知道这是Spotify应用程序中的一个新功能,但尚未记录,但有没有人在将此功能集成到他们的应用程序中有任何成功?如果是这样,您可以共享BroadcastReceiver的配置。或者,如果还有其他更好的方法,我也很乐意听到。

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

2 个答案:

答案 0 :(得分:1)

我使用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>

就捆绑的Intent附加内容而言,这个Spotify developer article很有用(但要注意这个帖子中的Intent Filter操作不正确)。

答案 1 :(得分:-2)

我意识到,Spotify不会为下载的曲目触发com.android.music.metachanged。 它只触发下载播放列表中的第一首曲目,而不会触发com.spotify.mobile.android.queuechanged,除了sentTime之外没有任何信息......

这是spotify中的错误吗?