创建绑定并不总是显示引脚对话框



在执行bleScan并让用户选择他们的设备之后,我然后通过getRemoteDevice(address)调用获取该设备。

一旦我得到BluetoothDevice对象,我就调用createBond()。由于createBond()触发异步操作,因此我让BroadcastReceiver侦听结果并确认当我在接收器中收到bond结果时设备已配对/绑定。

这是与BT设备连接的相当标准的程序。

我遇到的问题是,在看似随机的条件下,内置的pair/connect对话框不会出现。

通过一些测试,我发现如果我向下滑动手机,长按蓝牙,然后点击"配对新设备"设备会出现在列表中…然后我可以返回到我的应用程序,调用createBond()和PIN对话框出现。

这告诉我,蓝牙缓存或其他类似的东西有问题。

我试图确定为什么这可能是,如果有什么我应该确保我做之前调用createBond,以确保引脚对话框出现。

我可以贴出相关的代码,但这只是一行

boolean bondInitiated = getDevice().createBond();

在我调用create bond之后,通常会有1-2秒的暂停,然后出现pin对话框。

有人能提供一些见解吗?除了调用createBond()

,还有更好的方法来与Android中的BT设备配对吗?我很想给用户一个PIN文本框,让他们输入BT设备(这是一个血糖仪)上显示的PIN,然后以这种方式配对,但我还没有看到这样做的方法。

不幸的是,没有一种标准的方式总是向用户显示配对对话框。这是因为配对过程依赖于硬件,一些oem已经修改了它在操作系统级别的工作方式。因此,根据所使用的硬件有不同的变化。

然而,可能会有一些"黑客"。你可以实现它,让它工作。看看这个链接,因为它包含了绑定过程和配对弹出框的细节。它有点过时了(3年前),但它包括以下段落:-

如果你想的话你可以尝试让弹出框总是出现在在连接到a之前进行1秒的发现设备。这是一个有点hack,但它工作。

最新更新