我使用此代码发送音乐播放器播放/暂停等操作。
// play / pause
i.putExtra("command", "togglepause");
context.sendBroadcast(i);
但它仅适用于默认音乐播放器(手机自带的音乐播放器)。有没有办法在他们玩的时候控制其他音乐播放器?
答案 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和解决方案。