手机:小米5,小米6, 红米2,oppoR9两台(android版本分别为5.1和6.0),华为和三星(型号不知道)。
设备:蓝牙电子锁。
连接超时时间设定为8秒,使用手机对电子锁进行操作,有以下现象:
1、使用小米6,华为、三星,红米2等对电子锁进行操作,平均连接了4-6次之后,就会出现连接超时的现象。超时后继续连接,还是连不上。
2、如果连接超时发生,马上关闭蓝牙开关,用另一部手机就可以马上执行操作。
2、使用小米5和oppoR9,一般连接都很顺畅,但偶尔会出现服务发现失败的现象。程序中设置了超时、133等情况都执行disconnect、清除蓝牙缓存和close方法。
但是还是会出现以上现象。求高手帮忙解决。

解决方案 »

  1.   

    手机蓝牙的底层有限制如果只能开辟6个gatt,如果连接断开,一定要确保gatt调用close,并设置为null
      

  2.   

    因为BLE跟距离是有关系的,如果连接不上有两种原因(1)种是设备被別的手机占用,(2)种是设备没有复位,需重启即可。
      

  3.   


    每次断开的时候,都调用了disconnect,和close。而且我是只连一个设备。只有这个设备断开了,才能连接别的设备。可还是会出现楼主说的这个现象。
      

  4.   

    遇到了同样的问题。针对第一给问题,感觉像是虽然调用了disconnect和close,实际底层还在尝试连接对端,并在后面某个时间连接成功了。这就导致APP认为已经断开连接了,而实际上底层连上了对方。此时,由于对端蓝牙被占用,后续发起的连接尝试全都失败。此时,只能关掉蓝牙重新打开才行。
    蓝牙连接超时时间太长(大概20s),如果在之前某个时间调用disconnect或close,后面就可能出现这个问题。
    可以把超时时间延长,看一下有没有改善。