首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android获取当前歌曲播放和歌曲更改事件,如Musixmatch

Android获取当前歌曲播放和歌曲更改事件,如Musixmatch
EN

Stack Overflow用户
提问于 2015-12-21 13:20:39
回答 2查看 3K关注 0票数 3

我想要实现的目标与Musixmatch正在做的非常相似。

我需要知道什么时候音乐开始播放,什么时候歌曲被改变。所有这些都在服务中,因为我的应用程序可能会被关闭(即使musicmatch也会这样做)。

在上述情况下,即使Musixmatch应用程序没有运行,当我在spotify或任何播放器上更改歌曲时,我都会收到通知。

谁能告诉我如何做到这一点。我不需要代码帮助,只需要知道如何实现它。我真的很困惑Musixmatch是怎么做到的。

EN

回答 2

Stack Overflow用户

发布于 2015-12-21 13:53:32

这是一个解决方案,可以找出音乐播放器是否正在播放。

代码语言:javascript
复制
   AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
    if(manager.isMusicActive())
     {
         // Something is being played.
     }

然后,您可以从音乐播放器获取当前正在播放的歌曲的信息。将下面的代码粘贴到activity类中的onCreate方法中。

代码语言:javascript
复制
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        IntentFilter iF = new IntentFilter();

        // Read action when music player changed current song
        // I just try it with stock music player form android

        // stock music player
        iF.addAction("com.android.music.metachanged");

        // MIUI music player
        iF.addAction("com.miui.player.metachanged");

        // HTC music player
        iF.addAction("com.htc.music.metachanged");

        // WinAmp
        iF.addAction("com.nullsoft.winamp.metachanged");

        // MyTouch4G
        iF.addAction("com.real.IMP.metachanged");

        registerReceiver(mReceiver, iF);
    }

在您的activity类中创建新的BroadcastReceiver mReceiver。

代码语言:javascript
复制
 BroadcastReceiver mReceiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context arg0, Intent intent) {

                String action = intent.getAction();
                String cmd = intent.getStringExtra("command");
                Log.d("mIntentReceiver.onReceive ", action + " / " + cmd);
                String artist = intent.getStringExtra("artist");
                String album = intent.getStringExtra("album");
                String track = intent.getStringExtra("track");
                Log.d("Music", artist + ":" + album + ":" + track);
                 }
票数 2
EN

Stack Overflow用户

发布于 2021-03-29 05:52:23

我正在研究类似的(了解事件和意图,以及在没有根的情况下可能发生的事情,使用automate、tasker、谷歌助手例程、adb和(第一:) MacroDroid

我希望你还在调查这件事!这不能满足您的需求,但需要注意的是

(重新spotify)

元数据更改意图在新曲目开始播放时发送。它使用意图操作com.spotify.music.metadatachanged,并包含以下意图附加内容

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34389404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档