該標題使得這個聲音比它更簡單..我試圖播放一個可以暫停大多數音樂播放器的意圖。在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