Skip to content

连接常见问题

Allen Iverson edited this page Oct 17, 2018 · 8 revisions

常见问题

1、BLE设备扫描不到
1、首先确定下你的APP是否进行蓝牙权限的动态授权(Android6.0及以上)
2、有些Android7.0以上手机是需要手动打开GPS定位的(官方解释是由于新的BLE协议中需要某些定位的功能)
2、BLE能扫描到连接不上或者连接数量不固定
这个问题被群里很多小伙伴问及到,首先不排除很多小白,去用BLE的API去连接非BLE的设备,其次就是导致
这个问题的原因很多,比如蓝牙协议栈异常,最常见的就是底层返回蓝牙连接状态status为133、257、19等等
,出现这个问题的时候最好去排查下自己的代码中有没有在断开的回调中手动释放gatt对象(bluetoothGatt.close()),
如果有做的话,更换不同型号的手机继续测试,如果还是这样,那么很可能就不是客户端这边的问题,你就要去
同硬件去沟通了,需要硬件那边调整下连接参数,优化设置BLE连接过程中的传输速度和功耗。

注意:有的小伙伴在这块出了问题就一直在应用层找原因,一直以为是自己代码哪里做错了,弄到最后才发现并不
是自己的问题,而是硬件那边的问题,具体问题我也不是很懂,要问硬件咯!所以我建议出了问题从两点去测试,
1、同一个硬件分别和不同的手机去测试。2、同一个手机分别和不同的硬件进行测试。因为关于蓝牙这块,特别是
BLE协议这块是比较坑的,因为Android手机被各大手机各种深度定制,手机蓝牙硬件模块每个手机厂商都是不太一
致的,稳定性更是不同,举个例子:有的手机可能同时连接4个或者4个以上的BLE设备都没有问题,但是有的手机可
能连接3个还是比较稳定的,连接第4个的时候也能连接上,但是会出现偶尔断开这种现象,这个就确实没有办法解决
的,所以有的小伙伴经常会问我,有没有办法让连接10个啊?  确实没有办法,如果有办法的话,那麻烦请你纠正我。
3、连接成功后会自动断开
这个问题并不是客户端的问题,所以不要一味的在代码中找问题了,建议与硬件沟通,让其进行优化,如可以调整设备
的连接参数(ConnectionInterval(连接间隔)、SlaveLatency(从设备延迟或者从设备时延)、
 SupervisionTimeout(超时时间或者监控超时)),这三个参数是低功耗蓝牙中十分重要的连接参数,一起决定了
BLE的功耗,一般硬件设备会在APP连接成功时主动去更新一下这三个参数,以保证不同手机的差异性得到一致,但是APP
端是没办法控制这三个参数的。
4、该库的连接状态的状态码
1、硬件设备连接断开或者是信号弱等原因断开(错误码:2523)
2、连接失败(错误码:2521)
3、状态异常(硬件主动断开或断电)(错误码:2522)
4、连接超时(错误码:2510)
5、为什么要分包发送
BLE4.0蓝牙发送数据,单次最大传输20个byte,如果是一般的协议命令,如:开关灯、前进左右等等,是不需要分包的,
如果是需要发送如:图片、BIN文档、音乐等大数据量的文件,则必须进行分包发送,BLE库中已经提供了发送大数据包
的接口,需要的小伙伴可以去下载DEMO查看用法。
Clone this wiki locally