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函数接口就可以进行音量调节。

相关推荐
三易串口屏1 小时前
音频控件使用教程
音视频·工控·串口屏·三易串口屏
心中有国也有家2 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
爱吃牛肉的大老虎2 小时前
rust基础之环境搭建
java·开发语言·rust
tellmewhoisi3 小时前
多版本共用redis的token有效期校验(过期重新登录)
java·redis·缓存
疯狂打码的少年3 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
hunterandroid3 小时前
WorkManager 可靠性实战:唯一任务、重试与幂等设计
android·前端
乐观的Terry3 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
程序员老刘3 小时前
Android 17的10个AI功能,国内用户真正能用的有几个?
android·flutter·ai编程
C++、Java和Python的菜鸟4 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏4 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习