【问题标题】:What is the correct Spotify action for a now playing intent filter?正在播放的意图过滤器的正确 Spotify 操作是什么?
【发布时间】: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.playbackstatechangedcom.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。

【问题讨论】:

    标签: android spotify


    【解决方案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 操作)。

    【讨论】:

    • 抱歉,这对我不起作用。你能帮我解决这个问题吗??
    【解决方案2】:

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

    这是 Spotify 中的错误吗?

    【讨论】:

    • 如果您需要提问或有困惑,您可以在评论或新问题中提问。这不是问题的答案。
    • 大家有没有找到更多相关信息? Spotify queuechanged 在我的设备上运行可靠,但我收到了用户的投诉..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多