我已經看到幾個類似的問題與解決方案,但我找不到適合我的情況。音量首選項 - 阻止音量鍵
我正在使VolumePreference(擴展DialogPreference)讓我們的用戶選擇音量級別的一些警報。
在其他優選情況下,用戶選擇在警報期間播放的期望的鈴聲。當用戶在VolumePreference中選擇音量時也會播放,所以他知道它實際上是如何發聲的。
在另一個首選項中,用戶選擇是否在播放時應該「覆蓋」手機的媒體音量級別 - 我這樣做,所以如果用戶想要具有固定音量級別的鬧鈴,那麼它不應該受到音量鍵等。 如果用戶選擇這樣做,在AlarmActivity中開始播放鬧鐘之前,我使用AudioManager將音量設置爲最大音量,並攔截音量鍵的所有keyDown事件,在鬧鐘結束後恢復音量級別。
問題是,我無法阻止我的VolumePreference中的音量鍵,因爲沒有onKeyDown方法。
經過一番檢查後,我發現AudioManager的registerMediaButtonEventReceiver方法是「註冊一個組件作爲MEDIA_BUTTON意圖的唯一接收者」,我相信這可能有助於我的情況(製作一些空的接收器),甚至進行音量鎖定更普遍的(註冊時,我要開始鎖定,註銷後解鎖),但它是從API8工作,而我正在爲API7應用程序 - 這仍持有超過市場的10%,從我讀,所以我想堅持到它。
有關如何阻止PreferenceDialog中音量更改的任何想法?