最近开发蓝牙,在蓝牙建立连接的时候出现了以下错误:
onConnectFail:ConnectException{gattStatus=133, bluetoothGatt=android.bluetooth.BluetoothGatt@c6068f6} BleException { code=101, description='Gatt Exception Occurred! '}
nRF测试也是可以正常连接的,但就是手机不行。
如果你也是这个错误请往下看:
场景:高频率的断开/连接
非所有手机都会出现这个问题,我再开发中三星手机是必现的,而且出现以后需要重新开关蓝牙,如果次数出现过多的话就需要重启手机。
尝试过方法:
https://github.com/Jasonchenlijian/FastBle/issues/168
https://github.com/Jasonchenlijian/FastBle/issues/226
如果上面的方法都不能解决,且你的使用场景跟我一样,那么试试下面的方法。
最后经过大量测试和日志分析,我给disconnect以后重新打开scan之间增加了延时处理。我这里给了1500ms,在connectFail的时候再做一次disconnect(bleDevice); 问题得到解决。
我理解的是在调用disconnect的时候后,清理缓存断连等操作系统底层会有一些耗时的动作 ,如果立即再次 连接的话就会出问题 ,如果有清楚原理的还请留言交流。