当开发多媒体应用或者游戏应用的时候,需要使用音量控制键来设置程序的音量大小。在Android系统中有多中音频流,通过Activity中的函数 setVolumeControlStream(int streamType)可以设置该Activity中音量控制键控制的音频流,一般在onCreate函数中设置。
Android中有如下几种音频流(streamType是需要调整音量的类型):
- AudioManager.STREAM_MUSIC
/音乐回放即媒体音量/ - AudioManager.STREAM_RING /铃声/
- AudioManager.STREAM_ALARM
/警报/ - AudioManager.STREAM_NOTIFICATION /窗口顶部状态栏通知声/
- AudioManager.STREAM_SYSTEM
/系统/ - AudioManager.STREAM_VOICECALL /通话 /
- AudioManager.STREAM_DTMF /双音多频,不是很明白什么东西 /
首先是得到AudioManager实例:
Java代码
- AudioManager
am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
1、渐进式
Java代码
- public
void adjustStreamVolume (int streamType, int direction, int flags) -
- am.adjustStreamVolume
(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
解释一下三个参数
Java代码
- 第一个streamType是需要调整音量的类型,这里设的是媒体音量,可以是:
- STREAM_ALARM
警报 - STREAM_MUSIC
音乐回放即媒体音量 - STREAM_NOTIFICATION
窗口顶部状态栏Notification, - STREAM_RING
铃声 - STREAM_SYSTEM
系统 - STREAM_VOICE_CALL
通话 - STREAM_DTMF
双音多频,不是很明白什么东西 -
- 第二个direction,是调整的方向,增加或减少,可以是:
- ADJUST_LOWER
降低音量 - ADJUST_RAISE
升高音量 - ADJUST_SAME
保持不变,这个主要用于向用户展示当前的音量 -
- 第三个flags是一些附加参数,只介绍两个常用的
- FLAG_PLAY_SOUND
调整音量时播放声音 - FLAG_SHOW_UI
调整时显示音量条,就是按音量键出现的那个 - 0
表示什么也没有
Java代码
- public
void setStreamVolume (int streamType, int index, int flags) -
- am.setStreamVolume(AudioManager.STREAM_MUSIC,
am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_PLAY_SOUND); - am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);//得到听筒模式的最大值
- am.getStreamVolume(AudioManager.STREAM_VOICE_CALL);//得到听筒模式的当前值
第二个参数是一个音量的int值,getStreamMaxVolume(int streamType)得到的是该类型音量的最大值,可以根据这个值计算你需要的音量,我这里直接调到最大.