蓝牙通话HFP之实例-微信QQ通话

从HFP协议本身来说,似乎是不支持微信QQ之类的蓝牙通话的,因为没有定义类似电话之类的具体的URI,但现实生活中,你买个蓝牙耳机不可能然你接不了微信电话,那么似乎在微信通话建立时,只能模拟一个号码(Number “10000000”),其他的流程还是和正常通话是一样的,接下来看看一个微信电话的空口实例:

HFP Service Level connection establishment

在这里插入图片描述

  1. HF和AG协商各自支持哪些feature,HF发送"AT+BRSF=<HF supported features>",AG则发送 “+BRSF=<AG supported features>”。
  2. 如果步骤一的BRSF协商下来双方都支持Codec Negotiation ,则HF 发送 “AT+BAC=” 告知自己支持了哪些codec,最新HFP 1.9则支持了3种Codec:CVSD,mSBC,LC3,CVSD也就是窄带编码,采样率为8KHz;mSBC为宽带编码,采样率为16KHZ;LC3则为超宽带编码,采样率能到32KHZ。
  3. HF发送"AT+CIND=?" 询问AG支持哪些指示器,AG则回复 "+CIND: (“call”,(0,1)),(“callsetup”,(0-3)),(“service”,(0-1)),(“signal”,(0-5)),(“roam”,(0,1)),(“battchg”,(0-5)),(“callheld”,(0-2)) "。
  4. HF发送"AT+CIND?" 用以获取AG当前指示器的状态,AG则回复 “+CIND: 0,0,1,5,0,5,0”,代表的含义:(No call active,Not currently in call set up,Home/Roam network available,Signal Quality 5;Roaming is not active,Battery Charge Level 5,No calls held)。
  5. HF发送AT String: "AT+CMER=3,0,0,1"使能AG指示器的通知功能,也就是电话状态发送变化时,AG会主动发送CIEV通知HF。
  6. HF发送AT String: AT+CHLD=?获取AG支持哪些三方通话特性(前提是BRSF协商下来双方都支持三方通话),AG则回复:AT String: “+CHLD: (0,1,2,3)”。
  7. HF发送AT String: AT+BIND = <HF supported HF indicators>告知AG端他所支持的HF端的通用状态指示器。
  8. HF发送AT String: AT+BIND=?获取AG端支持哪些状态指示器,AG端则回复:+BIND: (1,2)。从https://www.bluetooth.com/specifications/assigned-numbers/获取到目前支持的HF Indicator就1,2两个值。1表示Enhanced Safety Enabled or Disabled;2表示: Remaining level of Battery;
  9. HF发送AT String: AT+BIND?用于获取AG端状态指示器是enable or disable,AG会回复两个AT命令:
    AT String: +BIND: 1,1\r\n ;AT String: +BIND: 2,1\r\n 表示Enhanced Safety Enabled和Remaining level of Battery Enabled。
  10. AT+BIEV=2,85:HF Indicator状态更新,剩余电量水平为85。
  11. AT+VGS=9:HF端speaker的音量为9
  12. AT+NREC=0:噪声和回显的关闭
  13. AT+CLIP=1:AG端电话号码通知功能打开
  14. AT+CCWA=1:通话等待指示功能打开
  15. AT+COPS=3,0:设置运营商,选择是代表移动联通还是电信
  16. AT+CMEE=1:打印错误报告信息
  17. +XAPL=iPhone,2:这个是苹果拓展的AT指令

拨打微信电话

在这里插入图片描述

这里会做三个事情:

  1. +CIEV:2,2 说明用户已经在拨打对方微信
  2. +BCS:2,AG选择mSBC作为通话数据传输的codec
  3. 建立LMP eSCO Link,早早的建立连接,虽然没有带内铃声需要传输

接通微信电话

在这里插入图片描述

我们看到这里会做如下事情:

  1. 耳机端发送AT+CLCC获取手机端电话号码,然后手机端回复AT String: +CLCC:
    1,0,3,0,0,“10000000”,129\r\n, CLCC:<Identification Number: 1, Direction: Mobile Originated Call,State: Alerting,Bearer Mode: Voice,Multi Party: No,Number: “10000000”,Type Of Address: Type: Unknown, Plan: ISDN / Telephony>
  2. 手机端发送+CIEV:2,3表示对方已经响铃
  3. 手机端发送+CIEV:1,1表示微信通话已经接通
  4. Audio eSCO数据传输,这个时候就正式进行通话了
  5. 手机端发送+CIEV:2,0表示没有其他通话了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tim_Jiangzj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值