[RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
现象:
AudioService中把音量设置到最小,理论上speaker应该听不到声音,但是依然还有。
分析:
根据上一篇音量设置文章,参考:http://blog.csdn.net/kris_fei/article/details/72957142
这时对应的curve是
const VolumeCurvePoint Gains::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}
};
[RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题相关推荐
- [RK3288][Android6.0] 调试笔记 --- touch无法获取坐标点
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 有网友遇到调试touch的时候能触发中断,但无法获取坐标点 具体可参考文章 [RK3288][An ...
- [RK3288][Android6.0] 调试笔记 --- AndroidTool低格无效问题
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 现象: 之前文章 [RK3288][Android6.0] 调试笔记 - AndroidTool两 ...
- [RK3288][Android6.0] 调试笔记 --- 电池电量一直显示100%
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 之前文章[RK3288][Android6.0] 调试笔记 - 伪电池驱动添加 阐述了如何添加一个 ...
- [RK3288][Android6.0] 调试笔记 --- WiFi芯片AP6356S添加
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 背景: RK3288 Android6.0平台对AP6356S的支持不是很完善,直接修改wifi ch ...
- gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...
- [RK3288][Android6.0] 调试笔记 --- 双屏显示内核Patch
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 根据5.1的双屏显示patch,在android6.0上修改了下,因为没硬件环境,所以未经验证,仅供参 ...
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 假设项目有需求要将调试串口uart2 改成 uart1, 改动如下 (还未验证,先分享给大家,有问 ...
- [RK3288][Android6.0] 调试笔记 --- RT5640录音时的Codec寄存器列表
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 Codec: RT5640 此文给调试RT5640播放无声音的朋友做参考. RT5640用的是RT ...
- [RK3288][Android6.0] 调试笔记 --- 软硬键盘同时使用【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78748313 Platform: RK3288 OS: Android 6.0 Kern ...
- android 系统gpu 调试_[RK3288][Android6.0] 调试笔记 --- 读取当前DDR和GPU频率方法
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 ddr和gpu的clock都受dvfs模块管控, 所以只要执行: root@rk3288:/ # ...
最新文章
- 到底是先更新数据库还是先更新缓存?
- rhel6硬盘或U盘安装注意的问题
- 在VS2005中 GridView导入Excel的两点小技巧-附源码
- python与excel做数据可视化-用Python进行数据可视化的10种方法
- 注册表操作命令reg
- 《scikit-learn》使用交叉验证优化KNN参数
- SDN/NFV若干问题
- 连接access时的REGDB_E_CLASSNOTREG(0x80040154)错误
- 蜘蛛侠的入侵:互联网公司robots协议法律指南
- 你们要的Android计算器,今天它来了~
- CMD查看端口和进程
- 长江大学计算机学院江琼琴,长江大学外国语学院硕士研究生校友名录(2005-2012级)...
- matlab 调整灰度,matlab灰度变换函数
- 微信小程序支付PHP实例
- 如何优雅地解决最新版Chrome,即Chrom 67以后,无法离线安装插件的问题
- eas k5.4 (七):v4.17 - Util(ization) Est(imated)
- 为什么Google Home将成为Amazon Echo最可怕的噩梦?
- abp框架连接mysql报错_ABP框架应用-MySQL数据库集成
- Win8传感器—加速度计、陀螺仪、指南针
- 软回车变回车 上下标符号