在app中,如果不是特殊场景,音量键默认调整铃声音量。但是很多情况下,我们需要调整的是媒体音量。所以可以在activty中加上这句 加
- this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
在一些特殊场景下,比如视频通话之类,因为打开了麦克风,所以系统默认会让音量键调整通话音量,类似于你打电话的时候。
此时想要控制音量键按下的操作,需要重写onKeyDown方法:
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- AudioManager am = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
- switch (keyCode) {
- case KeyEvent.KEYCODE_VOLUME_UP:
- am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
- am.adjustStreamVolume(AudioManager.STREAM_DTMF, AudioManager.ADJUST_RAISE, 0);
- break;
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
- am.adjustStreamVolume(AudioManager.STREAM_DTMF, AudioManager.ADJUST_RAISE, 0);
- break;
- default:
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
第一个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 表示什么也没有