2010-06-05 21 views
1

這裏是我的情況:的Android的MediaPlayer忽略它的內部容積,當系統的體積變化

我有一個媒體播放器播放音樂在Android應用程序。我發現使用某些耳機時,即使音量設置爲最低設置,音量也非常大。因此,我希望將所有音量級別的音樂音量改爲通常情況下的10%(實際上,這個值當然是由用戶定義的)。

以下作品完美:

mediaPlayer.setVolume(0.1f, 0.1f); 

的音樂的音量,現在是在一個良好的水平的收聽。但是,如果用戶現在使用音量搖桿改變音量(從而改變音樂流音量),媒體播放器會按照預期改變音量,但它似乎也會將'setVolume'參數重置爲1.0,導致音量劇烈變化。將音量設置回0.1將音量設置爲應該如何(這是當前音樂流音量的10%)。

引述的MediaPlayer.setVolume方法Android的文檔:

這個API被推薦用於在應用程序中平衡音頻流輸出

你怎麼能做到這一點,如果它得到每當系統音量改變時重置爲1.0?

任何幫助非常感激。謝謝。

+0

這可能是由於英雄上的錯誤。在版本1.5/2.01/2.1上使用仿真器時,音量級別不會重置。 – 2010-06-05 18:55:38

回答

0

我的建議是嘗試重寫的onkeydown(...),並通過獲取使用AudioManager對象手動調節音量:

getSystemService(AUDIO_SERVICE).adjustVolume(ADJUST_RAISE);

或任何你正在使用來改變音量。通過覆蓋音量搖桿按鈕行爲,您將刪除導致問題的任何默認行爲。

+0

感謝您的評論。重寫onKeyUp/Down(然後將MediaPlayer對象重新設置爲正確的音量)稍有改進,但存在兩個問題: 1:該活動必須處於焦點狀態(通常情況下,音樂播放器不會播放服務) 2:如果正確的視圖確實有焦點,在一秒鐘之內,音量在糾正之前變得非常響亮。 但是再次感謝。無論如何,我想我需要一套Android手機來測試這種事情...... – 2010-06-07 21:49:25

+0

在API中有一些其他adjustVolume方法,以特定的方式影響特定的流,所以你可能想檢查出來(我不知道如果他們會對你有任何幫助)。 – mtmurdock 2010-06-08 03:44:03