我试图让我的应用程序打开Google Play音乐,然后模拟播放/暂停命令。我的应用程序可以成功启动Google Play音乐,但downIntent
和upIntent
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);
答案 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上测试过它。