2011-07-22 47 views
24

我想用我的应用程序使用常规音量按钮来控制媒体音量。 问题是我的应用程序使用短的声音,他们可能会为用户烦人。您只能在播放时调整媒体音量(1秒),然后开始调整铃声音量。 如何让媒体音量默认?如何控制媒体音量?

回答

45

在你活动的onCreate(),你可以这样做:

setVolumeControlStream(AudioManager.STREAM_MUSIC); 
+0

谢谢,这工作得很好。 –

+0

@Kevin:+1,我不知道那种方法 - 比我的方法稍微简单一些。 ;-) – Squonk

+0

如果我需要两个音量控制流,我应该怎么做? –

3

我还没有尝试过,但是您应该可以通过在活动中重写onKeyDown(int keyCode, KeyEvent event)来拦截常规音量按钮。检查键码KEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWN

使用AudioManager.setStreamVolume(int, int, int)STREAM_MUSICstreamType参数应该工作,如果你从onKeyDown(...)方法返回true(表示你已经处理的事件),应防止系统调整铃声音量。确保你返回false你没有处理的所有其他键码。

+0

如果我需要两个音量控制流,该怎么办? –

3

请不要处理的音量键你自己 - 这几乎是我mpossible to guarantee,你不会打破音量键的行为。

调用此API在onCreate():

setVolumeControlStream(AudioManager.STREAM_MUSIC); 

这告诉AudioManager,当你的application has focus,音量键应该调整音乐的音量。