如何控制Android中当前播放的音乐播放器?

时间:2013-12-31 11:32:34

标签: android android-broadcast

我使用此代码发送音乐播放器播放/暂停等操作。

// play / pause
i.putExtra("command", "togglepause");
context.sendBroadcast(i);

但它仅适用于默认音乐播放器(手机自带的音乐播放器)。有没有办法在他们玩的时候控制其他音乐播放器?

3 个答案:

答案 0 :(得分:3)

从API级别19开始,引入了新的API dispatchMediaKeyEvent()

  

为媒体按钮发送模拟按键事件。要模拟按键,必须首先发送使用ACTION_DOWN操作构建的KeyEvent,然后发送带有ACTION_UP操作的另一个事件。

AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    downEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
    am.dispatchMediaKeyEvent(downEvent);

    upEvent = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);         
    am.dispatchMediaKeyEvent(upEvent);

此媒体事件将仅发送给当前正在运行的音乐播放器,而不是发送给所有播放器。

由于

答案 1 :(得分:2)

你试过这个 -

 i.putExtra("command", "pause");

编辑:

替代解决方案,使用PackageManager,Intent,ResolveInfo等以编程方式列出所有音乐应用,然后将命令发送到列表中的所有应用。

答案 2 :(得分:1)

广播意图无法正常运行,并且无法支持Spotify。请参阅我的answer和解决方案。