android控制音量键按下的操作

在app中,如果不是特殊场景,音量键默认调整铃声音量。但是很多情况下,我们需要调整的是媒体音量。所以可以在activty中加上这句 加

[java]  view plain  copy
  1. this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  

在一些特殊场景下,比如视频通话之类,因为打开了麦克风,所以系统默认会让音量键调整通话音量,类似于你打电话的时候。

此时想要控制音量键按下的操作,需要重写onKeyDown方法:

[java]  view plain  copy
  1. @Override  
  2. public boolean onKeyDown(int keyCode, KeyEvent event) {  
  3.     AudioManager am = (AudioManager) getSystemService(Service.AUDIO_SERVICE);  
  4.     switch (keyCode) {  
  5.     case KeyEvent.KEYCODE_VOLUME_UP:  
  6.         am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);  
  7.         am.adjustStreamVolume(AudioManager.STREAM_DTMF, AudioManager.ADJUST_RAISE, 0);  
  8.         break;  
  9.     case KeyEvent.KEYCODE_VOLUME_DOWN:  
  10.         am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);  
  11.         am.adjustStreamVolume(AudioManager.STREAM_DTMF, AudioManager.ADJUST_RAISE, 0);  
  12.         break;  
  13.     default:  
  14.         break;  
  15.     }  
  16.     return super.onKeyDown(keyCode, event);  
  17. }  
解释一下adjustStreamVolume的三个参数:

第一个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 表示什么也没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值