【发布时间】:2013-12-26 10:00:49
【问题描述】:
短版
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 活动广播命令来确定我认为我感兴趣的两个操作在
com.spotify.mobile.android.playbackstatechanged 和 com.spotify.mobile.android.metadatachanged
我在 Spotify 应用程序本身中使用了设备广播状态开关,我很高兴该开关停用/激活这些广播事件。
我遇到的问题是消息似乎只是偶尔发送。当您可能期望它们(播放、暂停、下一个、上一个)时,我会收到 playstatechanged 事件,但它们不包含与当前曲目相关的任何信息。 metadatachanged 事件很少发生,并且没有明显的模式。综合起来,很难(阅读,不可能)知道当前正在播放哪个曲目(如果有的话)。在一个好的会话中,数小时内一切顺利,每当一首新歌开始时都会触发 metadatachanged 事件,而在其他时候,我可能在整个会话期间只收到一个事件。
我确实注意到,打开/关闭 WiFi 可以触发一系列事件,而且(可能)有趣的是,如果我收听已加星标的播放列表,那么我会得到明显更明智的结果。
其他一些帖子建议我应该能够使用标准的 Android 操作 com.android.music.playbackcomplete、com.android.music.playstatechanged 和 com.android.music.metachanged,但我的 Spotify 应用程序版本没有似乎触发了这些(我正在使用它们与标准媒体播放器集成)。
我知道这是 Spotify 应用程序中的一项新功能,但尚未记录在案,但有没有人成功将此功能集成到他们的应用程序中?如果是这样,您可以分享您的广播接收器的配置。或者,如果有其他更好的方法,我也很乐意听到。
我使用的 Spotify 应用程序的版本是 0.7.4.606。
【问题讨论】: