Android&双模蓝牙设备:与BR / EDR(经典)配对时未找到自定义BLE服务

时间:2018-03-01 15:01:35

标签: android bluetooth bluetooth-lowenergy pairing

我使用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固件,以便不允许在经典模式下进行绑定。这不是一个理想的解决方案,任何蓝牙经典唯一的设备将无法与我的设备绑定(实际上这可能不是太大的问题,但我有一个平板电脑,只有蓝牙经典)。

应该注意的是,我使用过&#BLE Scanner'从Play商店验证我的自定义服务是否有效/根据配对模式不起作用。换句话说,它不仅仅是我的代码。 :)

那么,有没有人对如何强制Android配对BLE节点有任何想法?

1 个答案:

答案 0 :(得分:0)

我看到类似的问题。一些提示:

Android行为会因您在BLE广告中设置的位标志而异。例如,有一点称为“无br / edr支持”。还有明确说明支持br / edr双重角色的位。

如果您从ble应用程序访问返回“未经过身份验证的错误”的特征,则可以强制执行配对。至少在iohone上,操作系统会自动启动配对。