android 蓝牙ble 133,Android 关于蓝牙BLE引发Gatt133的问题

本文分享了在蓝牙开发中遇到的连接失败问题,通过增加断开后扫描的延迟,成功避免了高频率断开和连接问题。作者分析了操作系统的底层耗时过程,并提供了针对三星手机的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值