我有一个设备,我需要定期安全和持续地从中提取数据。因此,在启动时,我希望确保绑定设备,如果它还没有。在本例中,我有设备的Mac地址。
public void startApp(){
remoteDevice = bluetoothManager.getAdapter().getRemoteDevice(MAC_AD);
if(remoteDevice.getBondState()!=12){
remoteDevice.createBond();
}
}最终发生的情况是,键合状态将在未键合和currently_bonding之间交替,但不是完全键合。
奇怪的是,有时它会起作用,但通常不会,特别是在我的google像素上。通过设置连接也是非常不一致的。
有没有办法重试这个或某种蓝牙重置,以便我可以一致地粘合?
我尝试过间隔地调用createBond();
发布于 2019-11-12 00:18:23
我经常发现,直接调用createBond()可能会产生偶然的结果,这取决于平台(两端)。从逻辑上讲,它应该在内部使用相同的机制,但我倾向于通过在具有绑定需求的简单特征上调用read来获得更好的结果。
它要么成功-意味着你的连接是绑定的-你可以继续。或者它失败了,这会在内部触发绑定,然后您可以在短暂的延迟后重试,此时它应该被绑定。
https://stackoverflow.com/questions/58780678
复制相似问题