android audio不同音频流,(七)音频流音量APK按键调整

(1)apk通过,dispatchKeyEvent()函数监测按键事件:

// APK onCreate()时,初始化音频流音量,假定mediaPlayer播放使用STREAM_ALARM流:
mAudioManager = (AudioManager) this.getSystemService(this.AUDIO_SERVICE);
// 取出对应流,音量Max,Min
mMaxVol = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
mminVol  = mAudioManager.getStreamMinVolume(AudioManager.STREAM_ALARM); 

apk接收到按键事件,执行如下处理,调用AudioManager对象函数处理:
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent keyEvent){
     final int keyCode = keyEvent.getKeyCode();
     // 取出音频流,当前音量    
     int vol =   mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
    
     switch(keyCode){
    case KeyEvent.KEYCODE_VOLUME_UP:
    if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {  // 限制按键按下,进行音量调整
     if( vol< mMaxVol ){
      // setStreamVolume()进行音量设置
      mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, ++vol,0 );
     }
    }
    break;
    
    case KeyEvent.KEYCODE_VOLUME_DOWN:
    if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { // 限制按键按下,进行音量调整
     if(vol> mminVol ){
      // setStreamVolume()进行音量设置
      mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, --vol,0 );
     }
    }
    break;
    }

 return true;
}

(2)AudioManager对象类文件:

文件路径:
frameworks/base/media/java/android/media/AudioManager.java


AudioManager类,音量调节函数:
public void setStreamVolume(int streamType, int index, int flags) {
       final IAudioService service = getService();
       try {
              service.setStreamVolume(streamType, index, flags, getContext().getOpPackageName());
           } catch (RemoteException e) {
              throw e.rethrowFromSystemServer();
          }
}


apk通过监测按键事件,再调用AudioManager函数接口就可以进行音量调节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值