1. 音量级数定义
在AudioService.java中定义了最大音量MAX_STREAM_VOLUME,手机的设置property可以覆盖它。
2. 音量初始化
initStreamVolume传入AudioPolicyManagerBase里的StreamDescriptor mStreams[AudioSystem::NUM_STREAM_TYPES];
3. 设置主音量
主音量怎么起作用?
最终音量=主音量*流音量
4. 设置流音量
setStreamVolumeIndex函数,在AudioPolicy中,通过volIndexToAmpl把Index整数转为float型的振幅比,也就是“振幅/参考振幅”。
具体做法是:通过输入的index查表找到对应的声压值db,然后通过下面的公式算出amplifier,这个值就是振幅比。

本文详细解析了Android音量设置流程,包括音量级数定义、初始化、主音量与流音量的设置。在设置过程中,主音量与流音量通过乘法结合,利用指数公式转换dB值为振幅比,实现数字增益调节。在AudioFlinger的MixerThread中,实际音量调整通过AudioMixer参数设置完成。
最低0.47元/天 解锁文章
1610

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



