Android模拟播放/暂停按钮

时间:2015-02-03 01:54:06

标签: android android-intent android-broadcast keyevent android-context

我试图让我的应用程序打开Goog​​le Play音乐,然后模拟播放/暂停命令。我的应用程序可以成功启动Google Play音乐,但downIntentupIntent KeyEvents永远不会广播。我怀疑这是因为调用方法只调用我的主类上的方法而不是Play Music本身。将这些KeyEvent播放到播放音乐的正确方法是什么?

Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.music");
startActivity(intent);

Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);

Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendOrderedBroadcast(upIntent, null);

3 个答案:

答案 0 :(得分:1)

如果你想控制音乐播放器(当前正在播放的音乐播放器),有一种方法可以向它发送KeyEvents:

if(mAudioManager == null)mAudioManager =(AudioManager)getSystemService(AUDIO_SERVICE);

KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,keyCode); mAudioManager.dispatchMediaKeyEvent(事件);

注意:它需要minSdk 19或更多。

答案 1 :(得分:0)

出于安全原因,您不能这样做。 EXTRA_KEY_EVENT不会按照您的想法执行操作 - 它不会向系统发送关键事件。

答案 2 :(得分:-2)

我找到了一位非常有帮助的伙伴,他指出了我正确的方向。

Intent intent = new Intent("com.android.music.musicservicecommand");
intent.putExtra("command", "togglepause");
sendBroadcast(intent);

这似乎在Android 4.x上运行良好,但我还没有在5.x上测试过它。