Modify codes as shown in below:
const AudioPolicyManagerBase::VolumeCurvePoint
AudioPolicyManagerBase::sSpeakerMediaVolumeCurve[AudioPolicyManagerBase::VOLCNT]
= {
-{1, -56.0f}, {20, -34.0f}, {60, -11.0f}, {100, 0.0f}
+{1, -29.7f}, {20, -20.1f}, {60, -11.0f}, {100, 0.0f}
};
说明:播放音乐时有15个等级,换算成
100等分就是100*index/15,最小到最大对应为6,13,
20, 26, 33,40, 46, 53, 60, 66, 73, 80, 86, 93, 100,
可以根据这个index在图里找到对应的分贝值,所以
如果低7级声音太小,只要把前面两个点的坐标往上
提就可以了.
可以修改DSP里的CodecRxGain来改变FM的音量,但因为Audio Record
Path也用到CodecRxGain,因此修改CodecRxGain的会同时改变录音的音
量;
代码上修改:
在文件Msm-pcm-routing-v2.c (kernel\sound\soc\msm\qdsp6v2) 中将以下宏:
define INT_RX_VOL_MAX_STEPS 0x2000
define INT_RX_VOL_GAIN 0x2000
我们这边默认都是0x2000,可适当加大至0x4000;
在文件AudioHardwareALSA.cpp 函数 AudioHardwareALSA::setParameters() 修
改以下处
…….
fm_volume = lrint((fm_volume * 0x4000) + 0.5); /*这个地方默认是
0x2000,将其修改为以上设置的宏一样大*/
ALOGV("set Fm Volume(%f)\n", fm_volume);
ALOGV("Setting FM volume to %d (available range is 0 to 0x4000)\n",
fm_volume);
mALSADevice->setFmVolume(fm_volume);
param.remove(key);