通过蓝牙协议栈我们知道,蓝牙耳机可以通过发送AT指令唤醒或者退出语音助手
唤醒语音助手:
AT+BVRA=1
退出语音助手:
AT+BVRA=0
但是实际操作中发现双击可以唤醒但再次双击却无法退出语音助手
所以决定操作一波,抓份手机hci日志看看。。。
1)拨号键输入:*#800# 进入一加日志工具界面(开发者模式里也可以选)
2)点击蓝牙异常选项,开启手机蓝牙打开耳机盒子回连
3)双击耳机成功唤醒语音助手,再次双击没有退出(实际这里还是唤醒语音助手)
4)adb pull或者直接文件共享把oem_log文件夹拉到电脑界面,打开btsnoop文件夹导入.cfa文件(ellisys支持导入.cfa .log文件)
1、hfp连接过程
2、AT指令交互流程
最后终于水落石出,原来是oneplus8手机蓝牙协议栈内部异常了。
结论:耳机侧应该有保留一个语音助手的状态值,正常情况下手机蓝牙收到唤醒语音助手后会给耳机回复active,所以再次双击时耳机才会发送退出语音助手的AT消息