参考博文:《Android原生音量控制》
参考博文:《深入理解AudioService》
一、问题描述
不连接USB耳机时,系统音量可以设置到最大值15,连接USB耳机后,系统音量仅能设置到4
一、原因分析
(1)安卓音频系统对不同的音频流设置了不同的音量控制范围,推测与该范围设置有关

但是在源码中STREAM_MUSIC的最大值已经设置为了15, mSafeMediaVolumeState = 10,安全音量也已经设置为了10
安全音量在xml文件中配置
//AudioService.java
mSafeMediaVolumeState = new Integer(Settings.Global.getInt(mContentResolver,
Settings.Global.AUDIO_SAFE_VOLUME_STATE,
SAFE_MEDIA_VOLUME_NOT_CONFIGURED));
///////line284
/** Maximum volume index values for audio streams */

当连接USB耳机时,Android系统的音量限制在4,而未连接时可达15。问题可能与音频流的音量控制范围相关。通过分析源码和XML配置,发现安全音量已设置为10。解决方法是直接修改mSafeUsbMediaVolumeIndex为150,由于系统将音量乘以10,所以实际最大音量为15。
最低0.47元/天 解锁文章
2106

被折叠的 条评论
为什么被折叠?



