通過藍牙協議棧我們知道,藍牙耳機可以通過發送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消息