MTK-voice最大音量通话-免提切到耳机模式后音量变小问题总结
问题现象
MTK平台某项目,在voice最大音量通话时,从免提切换到耳机模式后,通话音量变小,此时通过音量键减小一格音量后,通话音量又变大;
根因分析
问题原因:
通话模式从免提切换到耳机模式后,由于MTK上层会设置一个AUDIO_DEVICE_OUT_TELEPHONY_TX 设备的音量,而该设备无对应gaindevice,导致实际在hal层设置对应音量时设置成了speaker的音量,同等级音量下,speaker的音量是比耳机模式小的;
相关代码分析:
在切换设备时,从framework侧会重新设置新通话模式的音量
AudioPolicyManagerCustomImpl::gainTable_applyAnalogGainFromCheckAndSetVolume
调用-->
AudioPolicyManagerCustomImpl::checkAndSetGainTableAnalogGain
调用-->
AudioPolicyManagerCustomImpl::setVolumeParameterToHAL
调用-->
mAudioPolicyManager->mpClientInterface->setParameters
调用-->
AudioALSAStreamManager::setAnalogVolume
调用-->
status_t AudioMTKGainController::setVoiceVolume(int index, int devices, audio_mode_t mode)
调用-->GAIN_DEVICE AudioMTKGainController::getGainDevice(audio_devices_t devices)
在这里会根据setparameters传下来的devices 类型选择GAIN_DEVICE,由于AUDIO_DEVICE_OUT_TELEPHONY_TX 没有对应GAIN_DEVICE, 所以使用默认值speaker,从而将speaker对应的等级音量设置到modem dl下行中去,从而将先前一步设置的耳机音量给覆盖掉,导致问题现象出现;
调用-->
AudioMTKGainController::ApplyMdDlGain
调用-->
SpeechDriverNormal::SetDownlinkGain
解决方案
在AudioPolicyManagerCustomImpl.cpp做如下修改,避免通话模式设置AUDIO_DEVICE_OUT_TELEPHONY_TX 设备音量
status_t AudioPolicyManagerCustomImpl::checkAndSetGainTableAnalogGain(audio_stream_type_t stream, int index, const sp<AudioOutputDescriptor>& outputDesc,DeviceTypeSet device,int delayMs, bool force)
{...if ((activeStream == AUDIO_STREAM_VOICE_CALL || activeStream == AUDIO_STREAM_BLUETOOTH_SCO) &&outputDesc != mAudioPolicyManager->mPrimaryOutput &&!(((sp<SwAudioOutputDescriptor>&)outputDesc)->mFlags & AUDIO_OUTPUT_FLAG_VOIP_RX)) {// in voice, set to primary only once, skip othersbool PrimaryVolSetIsSkipped = false; // ALPS05140437 We need to check the primary output due to it may not necessary to do call routing and update to the new deviceDeviceTypeSet curPrimaryDevices = mAudioPolicyManager->mPrimaryOutput->devices().types();DeviceTypeSet curDevices = outputDesc->devices().types();PrimaryVolSetIsSkipped = (curDevices.find(Volume::getDeviceForVolume(curPrimaryDevices)) == curDevices.end());if (PrimaryVolSetIsSkipped) {ALOGD("%s skip. Cur device [%s], primary device [%s]", __FUNCTION__, dumpDeviceTypes(curDevices).c_str(), dumpDeviceTypes(curPrimaryDevices).c_str());} else {return NO_ERROR;}
+
+ if (curDevices.count(AUDIO_DEVICE_OUT_TELEPHONY_TX) != 0) {+ ALOGD("AUDIO_DEVICE_OUT_TELEPHONY_TX skip set voice volume");
+ return NO_ERROR;}}
...
}
MTK-voice最大音量通话-免提切到耳机模式后音量变小问题总结相关推荐
- 话机耳机模式进入保持状态下每隔1分钟会切换到免提模式后再切回耳机模式
式后再切回耳机模式 2022-03-03 [描述] 在用耳机模式进行通话保持时,1分钟后耳机模式会跳到免提模式1s后再跳回到耳机模式,是什么原因? [原因] 在通话保持时,因为话机会有保持提示音&qu ...
- [FAQ18419][audio speech]通话免提模式如何使用副mic
扬声器和主mic靠的太近,通话免提模式使用主mic,会导致噪声.回声等比较难消除,影响通话质量 可以在通话免提模式的时候使用副mic [SOLUTION] 1. sim卡通话和voip通话,免提模式都 ...
- mtk android 11接打电话默认免提功能
修改功能的方案为MTK的源码,其他方案源码仅供参考. 1.在mtk源码当中有专门的宏控进行开关一些功能,就像这次的打电话面提功能.在device.mk文件当中可以搜到这个MTK_TB_APP_CALL ...
- 安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器
COVID-19 大流行期间,许多企业将会议安排在了线上举办.为方便通过 Microsoft Teams 和 Zoom 之类云视讯平台进行沟通的笔记本电脑用户,戴尔特地推出了新款 USB-C 音频适配 ...
- android蓝牙电话音量,android – 蓝牙免提客户端音量控制
我有一个Android设备作为一个免提客户端设备使用hfp. 我可以接到一个电话,扬声器和麦克风工作正如预期. 我的问题是,我似乎无法控制音量. 我试着使用下面的代码行找到正确的流,但没有一个似乎工作 ...
- android 拨打紧急号码,通话时开启免提功能实现
对应拨打电话只需要调用ACTION_CALL加对应电话号码即可如下: void callPhone(){ Intent intent = new Intent(Intent.ACTION_CALL,U ...
- 【Qualcomm高通音频】在设备没有听筒时,如何强制开启免提通话模式?
由于类似平板.贩卖机.车载等产品定义上都没有听筒这种音频设备,因此会经常遇到这样一个需求:强制免提. 以下是修改diff,请参考. 如果只是APK修改的话,可以参考: diff --git a/pac ...
- 高通Android 13默认切换免提功能
1.测试部反馈 由于平板本身没有听筒功能 因此考虑工厂直接切换到免提功能 2.修改路径 frameworks/av/services/audiopolicy/enginedefault/src/Eng ...
- 苹果手机打电话没有声音怎么回事_手机打电话听筒没有声音,只有打开免提时才有声音,该怎么办?...
您可以检查一下手机声音设置是否有问题,是否静音了全局音量:或者看看听筒是不是被手机壳或者是屏幕膜挡住,导致无法出声.以下是详细介绍: 1.首先,可以查看一下手机声音设置是否有问题.有的时候可能在不经意 ...
最新文章
- Nginx+Apache Yii2.0 配置方案
- CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
- C. Anton and Making Potions 贪心 + 二分
- Facebook的规模还在继续扩大
- World Wind Java开发之八——加载本地缓存文件构建大范围三维场景(
- 以JQuery的方式封装 cookie 方便调用
- hbase 特性与api
- c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法
- Pandas+Pyecharts | 医院药品销售数据可视化
- AllenNLP框架学习笔记(模型篇之一)
- 常规波束形成法matlab仿真,常规波束形成matlab程序
- Canvas箭头动画
- 介绍一下实现建模中可能用到的时间序列预测之线性二次移动平均,Excel的简单操作
- jpg图片转换为eps_如何将JPG图像转换为EPS
- 基于豆瓣哈哈哈哈哈哈小组的数据分析研究
- 从Redis List的各种使用场景来深刻理解它
- 8年Android开发教你如何写简历,写给正在求职的安卓开发
- STM32L151 INA826 ADS1115 PT100测温
- 未雨绸缪,数据分析对于企业应对经营危机非常重要
- 计算年龄算法(周岁虚岁)