Android 关于蓝牙BLE引发Gatt133的问题

最近开发蓝牙,在蓝牙建立连接的时候出现了以下错误:

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的时候后,清理缓存断连等操作系统底层会有一些耗时的动作 ,如果立即再次 连接的话就会出问题 ,如果有清楚原理的还请留言交流。

你可能感兴趣的:(Android 关于蓝牙BLE引发Gatt133的问题)