我的目标是让Android设备在没有任何用户干预的情况下,以经典蓝牙已配对设备的方式重新连接到之前连接过的BLE设备(即使在电源循环期间也能正常工作)。
BTLE设备的一个优点是可以保存服务、绑定和启用状态,从而使重新连接非常快速,并且在外设上消耗的电量很小。
我所做的事情似乎有效,但效果很差。
第一步是连接或配对并连接到新设备,将“autoconnect”参数设置为“true”。 当设备断开连接时,不要调用gatt.close()。 我到处查找都看到应该调用gatt.close(),但如果我调用gatt.close(),Android中央应用程序就永远无法重新连接。我已经测试了多次。
如果我没有调用gatt.close()也没有对Android进行电源循环,则自动连接通常会发生。有时可能需要很长时间,特别是在版本5.0之后。但这种方法不可靠,可能由于扫描周期非常低和设备在扫描周期实际检测到广告之前退出广告造成的。我不确定,因为没有办法像广告那样检测扫描操作!扫描也可能在一定时间后停止,但没有文档记录这一点。
因此,我认为需要做的是以某种方式将Android使用的后台扫描速率设置为更高的占空比(仅适用于5.0及更高版本),当已设置自动连接时。但我不知道该怎么做。我不想开始自己的扫描,而是希望以某种方式设置Android用于重新连接的后台扫描速率。 有人知道如何做到这一点吗? 有人真正了解autoconnect和gatt.close()的工作原理吗?
也许auto-connect并不是像我上面所说的那样重新连接的?