2013-08-16 48 views
2

我需要設置媒體音量到MAX在我的應用程序中發揮蜂鳴器。 我試圖通過使用media.setVolume()函數來做到這一點,但它似乎並不奏效。media.setVolume()函數似乎不工作

我已經嘗試

mp.setVolume(1.0f, 1.0f); 

&

int MAX_VOLUME = 1000; 
final float volume = (float) (1 - (Math.log(MAX_VOLUME - 999)/Math.log(MAX_VOLUME))); 
mp.setVolume(volume, volume); 

以上都不爲我工作。

有人請幫助我如何使用setVolume()函數將媒體音量設置爲完整

回答

2

最後,我找到了一個簡單的解決方案,我只是想在這裏添加它,這樣其他人可能得不到什麼幫助。

有用備註:我發現stackoverflow.com很多答案設置最大音量級別改變容積,他們大多使用報警流(STREAM_ALARM)這樣做。如果你隨便播放音頻,我認爲使用報警流不是一個好的選擇。

而不是使用media.setVolume(float, float)函數,它更好地使用AudioManager進行這項工作。以下代碼將把音量設置爲最大。級別:

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    am.setStreamVolume(AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 

現在,播放媒體對象作爲一個音樂流:

mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 

確保你有許可權設置爲你在你的應用程序要求的權限。 如果沒有此權限的代碼添加到您的清單:

<uses-permission 
      android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 

注:這隻會介質體積其最大。水平。要設置其他卷,如林格,請使用STREAM_RING

感謝@MrTristan的建議,這真的很有幫助。

+0

這是不好的做法,除非您旨在影響整個設備流,否則可以使用MediaPlayer對象在給定的應用程序範圍內生效。 – shaydel

2

確保您已將MODIFY_AUDIO_SETTINGS設置爲您在應用中請求的權限,如果這是您希望設置的卷的類型。

+0

即使在獲得此權限後也沒有任何事情發生。 – ashu