该标题使得这个声音比它更简单..我试图播放一个可以暂停大多数音乐播放器的意图。在Android系统中可靠地暂停媒体播放系统
我知道我可以使用创建的KeyEvent为将广播KEYCODE_MEDIA_PLAY_PAUSE本:
long eventTime = SystemClock.uptimeMillis();
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
ctx.sendOrderedBroadcast(downIntent, null);
这工作。它会暂停股票媒体播放器以及其他大多数支持耳机播放/暂停按钮的音乐播放器。但由于某种原因,它只能与音乐播放器一起使用。我可以按下按钮来调用它,它会暂停音乐。如果我再次开始播放,并再次点击暂停按钮,则无法使用。一旦我重新启动设备,它将再次工作。但是,随着潘多拉,它的工作原理应该如此。
我想我可以解决这个问题,只是暂停而不使用KeyEvent。我试着用AudioManager和其他意图:
AudioManager mAudioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager.isMusicActive()) {
Intent mediaIntent = new Intent("com.android.music.musicservicecommand");
mediaIntent.putExtra("command", "pause");
ctx.sendBroadcast(mediaIntent);
}
而且这也适用,它的工作原理一致。但它本质上是脆弱的,因为通过将意图直接发送到Android音乐播放器,这是唯一可以使用的播放器。没有潘多拉,Last.FM等的控制,我需要它与大多数音乐播放器一起工作。
我只是不确定下一步该去哪里。只要它有效,我不会挑剔给出什么样的解决方案。如果你能帮我做KeyEvent的工作,太棒了,如果你有一些完全不同的解决方案,太棒了。我只是想让它工作!谢谢!
你在这里做的任何事情都是“固有的脆弱”。而且,会有很多媒体玩家完全无视这一事件。而且完全有可能有一天,操作系统将开始阻止伪造的ACTION_MEDIA_BUTTON事件,以阻止其他类似的伪造事件。如果您正在编写自己的媒体播放器,请使用'AudioManager'中的音频焦点功能来获取音频焦点。 – CommonsWare
我实际上并没有写我自己的媒体播放器。我知道Play商店中有很多功能齐全的应用会在一段时间后停止播放音乐,但我对其中的任何应用都不满意。我只是想自己写一篇文章,而且我需要能够暂停大部分音乐应用。 – Geniusdog254