2012-05-15 148 views
0

我正在使用Androids MediaPlayer播放來自某項服務的音樂。當音樂正在播放時,音量可以通過音量搖桿鍵來改變。但是我不希望用戶在播放過程中更改音樂音量。Android:防止音樂音量被改變

這怎麼辦?

獲得keydown事件並返回true時有可能,但只有當應用處於頂層時纔有效。由於我從服務播放音樂,因此當屏幕關閉或背景中的應用程序播放時,音量仍可以更改。

另一個想法我是叫

setVolumeControlStream(AudioManager.STREAM_RING); 

已經開始播放音樂後,但我不能從服務,但只有從活動中調用此...

或者是可以在另一個流(Ring或鬧鐘)上播放音樂,但讓音量搖桿還是改變音樂流?

任何想法?

+0

爲什麼你想要防止這種情況?聽起來像一個很好的功能,可以調整聲音水平? – vidstige

回答

0

'當您的應用程序處於後臺時,您無法攔截該鍵,而是無法監聽KeyPress本身。如果音量已經改變,因爲我還沒有找到另一種方式來做到這一點,你可以註冊一個ContentObserver」

Is there a broadcast action for volume changes?

+0

這可以工作,但只有在顯示新卷的對話框消失後才調用ContentObserver的onChange方法。因此,您仍然可以更改音量,音量對話框將顯示新音量,當音量消失時,您可以重設音量。這不是我正在尋找的......你可能會阻止音樂音量對話框顯示出來嗎?Change立即被調用? – DominicM

0

,我在一個計時器每秒檢查約5倍。如果有的話,我把它改回來。

這是一個非常醜陋的解決方案,但它的工作原理,如果沒有其他方式來做到這一點,我必須離開它。

唯一真正可怕的是當您按音量搖桿時音量對話框顯示。有沒有辦法禁用音量對話框?

或者您知道更好的解決方案嗎?