最近開發(fā)藍(lán)牙,在藍(lán)牙建立連接的時(shí)候出現(xiàn)了以下錯(cuò)誤:
onConnectFail:ConnectException{gattStatus=133, bluetoothGatt=android.bluetooth.BluetoothGatt@c6068f6} BleException { code=101, description='Gatt Exception Occurred! '}
nRF測(cè)試也是可以正常連接的朦前,但就是手機(jī)不行向拆。
如果你也是這個(gè)錯(cuò)誤請(qǐng)往下看:
場(chǎng)景:高頻率的斷開/連接
非所有手機(jī)都會(huì)出現(xiàn)這個(gè)問題萌朱,我再開發(fā)中三星手機(jī)是必現(xiàn)的缀磕,而且出現(xiàn)以后需要重新開關(guān)藍(lán)牙落君,如果次數(shù)出現(xiàn)過多的話就需要重啟手機(jī)于置。
嘗試過方法:
https://github.com/Jasonchenlijian/FastBle/issues/168
https://github.com/Jasonchenlijian/FastBle/issues/226
如果上面的方法都不能解決茧吊,且你的使用場(chǎng)景跟我一樣,那么試試下面的方法八毯。
最后經(jīng)過大量測(cè)試和日志分析搓侄,我給disconnect以后重新打開scan之間增加了延時(shí)處理。我這里給了1500ms话速,在connectFail的時(shí)候再做一次disconnect(bleDevice); 問題得到解決讶踪。
我理解的是在調(diào)用disconnect的時(shí)候后,清理緩存斷連等操作系統(tǒng)底層會(huì)有一些耗時(shí)的動(dòng)作 泊交,如果立即再次 連接的話就會(huì)出問題 乳讥,如果有清楚原理的還請(qǐng)留言交流。