android ble 实现自动连接,Android:自动重新连接BLE设备

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值