我使用Silicon Labs的BT 121构建了双模蓝牙设备。该设备通过经典连接实现SPP。经典节点的设备名称是" XYZ Classic"。它还在BLE中实现自定义服务(128位UUID)。 BLE节点的设备名称是" XYZ_BLE"。两个节点都具有相同的MAC地址。
在' Bluetooth'下进行配对设置,有时我会看到' XYZ Classic'有时我会看到' XYZ_BLE'它似乎是随机配对的,但我测试过的许多Android设备都倾向于想要与经典节点配对。配对后,通过经典/ SPP ALWAYS连接可以正常工作。但是,如果与BLE节点配对,我只能连接到自定义服务。如果与经典配对,我可以看到非自定义BLE服务,但不能看到我的自定义服务。总结一下:
Function Classic Pairing BLE Pairing
Spp Works Works
Cust BLE Doesn't Work Works
当我在代码(Android)中配对时,尽管我搜索名为' XYZ_BLE'的设备,但问题也会发生。然后配对返回的设备。我已经看了,但我找不到强制Android配对BLE节点的方法。
到目前为止,我唯一的解决方法是修改我的BT 121固件,以便不允许在经典模式下进行绑定。这不是一个理想的解决方案,任何蓝牙经典唯一的设备将无法与我的设备绑定(实际上这可能不是太大的问题,但我有一个平板电脑,只有蓝牙经典)。/ p>
应该注意的是,我使用过&#BLE Scanner'从Play商店验证我的自定义服务是否有效/根据配对模式不起作用。换句话说,它不仅仅是我的代码。 :)
那么,有没有人对如何强制Android配对BLE节点有任何想法?
答案 0 :(得分:0)
我看到类似的问题。一些提示:
Android行为会因您在BLE广告中设置的位标志而异。例如,有一点称为“无br / edr支持”。还有明确说明支持br / edr双重角色的位。
如果您从ble应用程序访问返回“未经过身份验证的错误”的特征,则可以强制执行配对。至少在iohone上,操作系统会自动启动配对。