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

相关推荐
米羊1217 分钟前
Struts 2 漏洞(上)
java·后端·struts
galaxyffang30 分钟前
Java堆内存诊断:从工具使用到实战分析
java·jvm
Jomurphys1 小时前
Compose 调用 - 震动 LocalHapticFeedback
android·compose
非凡ghost1 小时前
小X分身APP(手机分身类工具)
android·windows·学习·智能手机·软件需求
HAPPY酷1 小时前
C++ 成员指针(Pointer to Member)完全指南
java·c++·算法
Sunsets_Red1 小时前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
星火开发设计2 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
星辰徐哥2 小时前
Java数组的定义、操作与应用场景
java·开发语言
Aileen_0v02 小时前
【数据结构中链表常用的方法实现过程】
java·开发语言·数据结构·算法·链表·动态规划·csdn开发云
sweetone2 小时前
故障现象 并非玄学——LINN(莲)MAJIK功放维修记录
经验分享·音视频