2012-11-09 52 views
1

在Android中,通常有3個音頻音量通道對用戶感興趣:音樂/媒體,鈴聲和鬧鐘。通常情況下,當按下硬件音量按鈕時,鈴聲音量會被設置,並顯示一個帶有搜索欄的對話框。選擇音量通道更改音量按鍵

但是,如果我已打開音樂應用程序並按音量按鈕,媒體音量通道被設置(並且在搜索欄對話框中顯示揚聲器圖標而不是電話)。我現在的問題是,如何爲我的應用程序設置使用媒體通道音量控制而不是鈴聲通道?有沒有這樣的開關,或者我必須手動執行此操作(捕捉音量按鈕的筆觸)?

+0

可能重複(http://stackoverflow.com/questions/2539264/volume-control-in-android-application) –

+0

是它是確實是重複的。 – joni

回答

5

經過一番谷歌搜索後,我發現了自己。

您可以在您的活動的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); 
} 
+1

不要忘記「接受」你自己的答案 – RvdK

+0

「你可以在2天內接受你自己的答案」;) – joni

0

對於音樂串流

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

+0

抱歉,我不想獲得音量,但是我想設置當哪個音量流被修改時用戶按下硬件音量鍵。 – joni

+0

http://stackoverflow.com/a/13304713/1412308正確答案 –

0

您使用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); 
[在機器人應用音量控制]的
+0

對不起,我不想獲得音量,但我想要設置當用戶按下硬件音量鍵時要修改哪個音量流。 – joni