300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > [RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题

[RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题

时间:2019-04-25 01:13:28

相关推荐

[RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题

Platform: Rockchip

OS: Android 6.0

Kernel: 3.10.92

现象

AudioService中把音量设置到最小,理论上speaker应该听不到声音,但是依然还有。

分析

根据上一篇音量设置文章,参考:/kris_fei/article/details/72957142

这时对应的curve是

const VolumeCurvePointGains::sSpeakerVoiceVolumeCurve[Volume::VOLCNT] = {

{1, -24.0f}, {33, -16.0f}, {66, -8.0f}, {100, 0.0f}

};

当audio service设置index为最小(index = 1)时,

float Gains::volIndexToDb(Volume::device_category deviceCategory,const StreamDescriptor& streamDesc,int indexInUi){.....//volId计算出来是0int volIdx = (nbSteps * (indexInUi - streamDesc.getVolumeIndexMin())) /(streamDesc.getVolumeIndexMax() - streamDesc.getVolumeIndexMin());//curve[Volume::VOLKNEE1].mIndex为0,因此不会返回VOLUME_MIN_DBif (volIdx < curve[Volume::VOLMIN].mIndex) { // out of boundsreturn VOLUME_MIN_DB;} else if (volIdx < curve[Volume::VOLKNEE1].mIndex) {//实际上是跑进这里来了segment = 0;} else if (volIdx < curve[Volume::VOLKNEE2].mIndex) {segment = 1;} else if (volIdx <= curve[Volume::VOLMAX].mIndex) {segment = 2;} else { return 0.0f;}......}

解决方法

kris@:~/rk3288/frameworks/av/services/audiopolicy/enginedefault$ g df

diff --git a/services/audiopolicy/enginedefault/src/Gains.cpp b/services/audiopolicy/enginedefault/src/Gains.cpp

index df853db..49555aa 100644

--- a/services/audiopolicy/enginedefault/src/Gains.cpp

+++ b/services/audiopolicy/enginedefault/src/Gains.cpp

@@ -95,7 +95,7 @@ Gains::sDefaultVoiceVolumeCurve[Volume::VOLCNT] = {

const VolumeCurvePoint

Gains::sSpeakerVoiceVolumeCurve[Volume::VOLCNT] = {

- {0, -24.0f}, {33, -16.0f}, {66, -8.0f}, {100, 0.0f}

+ {1, -24.0f}, {33, -16.0f}, {66, -8.0f}, {100, 0.0f}

};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。