经过多次试验和磨难之后,这就是我最好让Android自动连接的唯一用户操作是首先选择设备(如果使用设置菜单然后首先配对).

您必须将配对事件捕获到BroadcastReceiver中并执行BluetoothDevice.connectGatt()将autoconnect设置为true.然后当设备断开连接时,调用gatt.connect().

更新:虽然上述方法通常有效,但有时可能会因为待处理的连接使用非常保守的扫描速率而非常缓慢.另一个缺点是,对于要自动重新连接的每个设备,您必须保持BluetoothGatt对象执行挂起连接.在嵌入式世界中,这是疯狂的.相反,人们通过检查其广告来连续扫描并连接到所需设备.一个只保存有关设备的最小数据量(服务,配对状态和密钥等).捕获广告时,您会看到它是否是您已知的设备之一,如果是,则连接到该广告.

我试过Android上的等价物.一直扫描(低功率)并连接到感兴趣的广告,并维护代表已知设备的类.这种方法有一些烦人的细节(比如在连接后连接和重启时关闭扫描)但它基本上没有维护连接的开销.但有一个我不明白的例外.扫描仪从未看到过一个预配对设备的广告.但是,如果我调用此设备的挂起连接,则重新连接.我根本不明白这一点.在我的嵌入式平台上,它可以正常工作.

如果其他人尝试过这种方法进行自动重新连接,请分享您的经验!

我发现Android没有看到预配对设备的原因.如果设备响应扫描请求,Android仅报告扫描结果.配对后,此设备仅发出广告并忽略扫描请求,因此Android系统不会在ScanCallback中传递其广告.因此,为了使用扫描方法工作,我必须对这些特定设备使用挂起连接方法.看起来你似乎无法获胜!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐