(没有最终结论)Android 为何无法将通话音量调到最低

本文分析了Android系统中通话音量调节的底层流程,从AudioPolicyManager的checkAndSetVolume开始,探讨了INDEX_MAX的计算、voiceVolume的设定,以及kernel层和adsp对通话声音的影响。研究发现,通话声音最小值可能由kernel层决定,但具体原因尚无定论。
摘要由CSDN通过智能技术生成

捋一捋代码流程:

上层流程之前有分析过,可以参考这个:

https://blog.csdn.net/bberdong/article/details/51792319(抱歉,那时候写的太随意)

咱们就从AudioPolicyManager::checkAndSetVolume说起:

status_t AudioPolicyManager::checkAndSetVolume(
    audio_stream_type_t stream,
    int index,
    const sp<AudioOutputDescriptor>& outputDesc,
    audio_devices_t device,
    int delayMs,
    bool force)
{
    ...
        if (stream == AUDIO_STREAM_VOICE_CALL ||
        stream == AUDIO_STREAM_BLUETOOTH_SCO) {
        float voiceVolume;
        // Force voice volume to max for bluetooth SCO as volume is managed by the headset
        if (stream == AUDIO_STREAM_VOICE_CALL) {
            voiceVolume = (float)index/(float)mVolumeCurves->getVolumeIndexMax(stream);
        } else {
            voiceVolume = 1.0;
        }
​
        if (voiceVolume != m
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值