大家在开发android 的BLE一定或多或 少 129 133问题根源吧,而且几乎找不到完全解决的办法。其实原因是android内部发生了错误,这个是改不了的,也就是说你只能想办法去避免,比如延迟连接,重启手机,重启蓝牙等等。。。现在我贴出GATT的错误里面的定义大家看看。
1. #define GATT_ILLEGAL_PARAMETER 0x0087
2. #define GATT_NO_RESOURCES 0x0080
3. #define GATT_INTERNAL_ERROR 0x0081
4. #define GATT_WRONG_STATE 0x0082
5. #define GATT_DB_FULL 0x0083
6. #define GATT_BUSY 0x0084
7. #define GATT_ERROR 0x0085
8. #define GATT_CMD_STARTED 0x0086
9. #define GATT_PENDING 0x0088
10. #define GATT_AUTH_FAIL 0x0089
11. #define GATT_MORE 0x008a
12. #define GATT_INVALID_CFG 0x008b
13. #define GATT_SERVICE_STARTED 0x008c
14. #define GATT_ENCRYPED_MITM GATT_SUCCESS
15. #define GATT_ENCRYPED_NO_MITM 0x008d
16. #define GATT_NOT_ENCRYPTED 0x008e
解决办法总结有几个(出现此问题的都在android5.0系统,三星手机S6):
1:重启手机(网上有很多人用这个方法)
2:重启蓝牙(网上有很多人用这个方法)
3:外设,在stack overflow里有国外的人用128KB的芯片代替256KB的芯片后再也没有也现此问题(由于外设工程改动较大,没有做此测试),原话如下:
i got the same error using the TI-CC2541 Chip. The solution was to use the 128kB Chip instead of the 256kB. For instance, the "SimpleBLEPeripheral" is made for the 128kB Chip.
4:亲测,在android6.0系统,手机为摩托罗拉,没有再出现此问题。
5:在startScan之前,都调用一次 stopScan。