在Android中,通常有3個音頻音量通道對用戶感興趣:音樂/媒體,鈴聲和鬧鐘。通常情況下,當按下硬件音量按鈕時,鈴聲音量會被設置,並顯示一個帶有搜索欄的對話框。選擇音量通道更改音量按鍵
但是,如果我已打開音樂應用程序並按音量按鈕,媒體音量通道被設置(並且在搜索欄對話框中顯示揚聲器圖標而不是電話)。我現在的問題是,如何爲我的應用程序設置使用媒體通道音量控制而不是鈴聲通道?有沒有這樣的開關,或者我必須手動執行此操作(捕捉音量按鈕的筆觸)?
在Android中,通常有3個音頻音量通道對用戶感興趣:音樂/媒體,鈴聲和鬧鐘。通常情況下,當按下硬件音量按鈕時,鈴聲音量會被設置,並顯示一個帶有搜索欄的對話框。選擇音量通道更改音量按鍵
但是,如果我已打開音樂應用程序並按音量按鈕,媒體音量通道被設置(並且在搜索欄對話框中顯示揚聲器圖標而不是電話)。我現在的問題是,如何爲我的應用程序設置使用媒體通道音量控制而不是鈴聲通道?有沒有這樣的開關,或者我必須手動執行此操作(捕捉音量按鈕的筆觸)?
經過一番谷歌搜索後,我發現了自己。
您可以在您的活動的onCreate方法中調用setVolumeControlStream。下面的例子。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// change the music vol instead of ringtone vol
// when hardware volume buttons are pressed
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
對於音樂串流
AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
對於鈴聲
AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
更多here
抱歉,我不想獲得音量,但是我想設置當哪個音量流被修改時用戶按下硬件音量鍵。 – joni
http://stackoverflow.com/a/13304713/1412308正確答案 –
您使用AudioManager並設置下列之一:
STREAM_ALARM //The audio stream for alarms
STREAM_DTMF //The audio stream for DTMF Tones
STREAM_MUSIC //The audio stream for music playback
STREAM_NOTIFICATION //The audio stream for notifications
STREAM_RING //The audio stream for the phone ring
STREAM_SYSTEM //The audio stream for system sounds
STREAM_VOICE_CALL
像這樣:
myManager.getStreamVolume(AudioManager.STREAM_MUSIC);
[在機器人應用音量控制]的
對不起,我不想獲得音量,但我想要設置當用戶按下硬件音量鍵時要修改哪個音量流。 – joni
可能重複(http://stackoverflow.com/questions/2539264/volume-control-in-android-application) –
是它是確實是重複的。 – joni