Android: 如何切换 SCO 链路。

本文介绍了在开发蓝牙音箱时遇到的A2DP和HFP切换导致的手机兼容性问题,特别是针对三星和华为手机。通过研究发现,问题在于Android的AudioManager模式设置。解决方案包括在切换时正确设置AudioManager模式,如普通模式、铃声模式、通话模式等,并详细说明了开启和关闭SCO录音的步骤。
摘要由CSDN通过智能技术生成

最近在做蓝牙音箱开发,在 A2DP 和 HFP 来回切换的时候,遇到了手机兼容性的问题。最终发现设备收声和手机收声,是因为 soc 切换有问题。原先在网上找了一些资料发现其实还蛮简单的。就两句话,当时没想这么多就直接写了,发现还真能从设备收声,然后就没管了。然后客户反馈很多手机不能从设备收声,尤其是三星、华为最为严重。好吧,查了很多资料,同时跟嵌入式开发对代码。 SOC 都连接上了,还是不行。最终发现手机在切换的时候,需要设置 AudioManager 的模式:

  • MODE_NORMAL : 普通模式,既不是铃声模式也不是通话模式
  • MODE_RINGTONE : 铃声模式
  • MODE_IN_CALL : 通话模式
  • MODE_IN_COMMUNICATION : 通信模式,包括音/视频,VoIP通话.(3.0加入的,与通话模式类似)

 

1、开启 SCO 录音

public void startSCO() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            mAudioManager.setMode(AudioManager.MODE_IN_CALL);
        } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
       
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值