蓝牙耳机中来电铃声不同步

文章讲述了在Android13中,蓝牙耳机来电铃声与手机扬声器不同步的问题,通过分析HeadsetService.java中的isInbandRingingEnabled方法,发现是由于`config_bluetooth_hfp_inband_ringing_support`和`disableinbandringing`配置未正确设置。解决方案是将`config_bluetooth_hfp_inband_ringing_support`设为true,`disableinbandringing`设为false,实现两者铃声同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android 13 上发现手机连接上蓝牙耳机后,有电话打进来,手机扬声器中播放的铃声与蓝牙耳机中的铃声不一致,蓝牙耳机播放嘟嘟嘟的铃声。

根据网上搜索,这个与手机的inband ringing 功能有关,该功能由isInbandRingingEnabled() 方法控制:

HeadsetService.java

boolean isInbandRingingEnabled() {
    boolean returnVal;

    boolean isInbandRingingSupported = getResources().getBoolean(
                com.android.bluetooth.R.bool.config_bluetooth_hfp_inband_ringing_support);

    returnVal = isInbandRingingSupported && !SystemProperties.getBoolean(
                DISABLE_INBAND_RINGING_PROPERTY, true) && !mInbandRingingRuntimeDisable;
    Log.d(TAG, "isInbandRingingEnabled returning: " + returnVal);
    return returnVal;
}

如果方法isInbandRingingEnabled 返回true,则让蓝牙耳机播放手机设置的来电铃声。

通过分析上面的方法,可以看到与config_bluetooth_hfp_inband_ringing_support 、系统属性persist.bluetooth.disableinbandringing 和mInbandRingingRuntimeDisable 有关,通过打印log,来电时,mInbandRingingRuntimeDisable 返回为false,isInbandRingingSupported 为false,系统属性persist.bluetooth.disableinbandringing 没有定义。

所以只需要配置config_bluetooth_hfp_inband_ringing_support 为true和 系统属性persist.bluetooth.disableinbandringing 为false即可。

以下为修改方法:

frameworks/base/core/res/res/values/config.xml

<!-- Boolean indicating if current platform supports HFP inband ringing -->
-<bool name="config_bluetooth_hfp_inband_ringing_support">true</bool>
+<bool name="config_bluetooth_hfp_inband_ringing_support">false</bool>
system.prop

# add for bluetooth call ringing
persist.bluetooth.disableinbandringing=false

在全编代码和刷机后,拨打电话蓝牙耳机中的铃声与手机扬声器铃声就一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值