首页 文章

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

提问于
浏览
1

我使用Silicon Labs的BT 121构建了双模蓝牙设备 . 该设备通过经典连接实现SPP . 经典节点的设备名称是“XYZ Classic” . 它还在BLE中实现自定义服务(128位UUID) . BLE节点的设备名称是“XYZ_BLE” . 两个节点都具有相同的MAC地址 .

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

应该注意的是,我使用了Play商店中的“BLE扫描仪”来验证我的自定义服务是否有效/取决于配对模式 . 换句话说,它不仅仅是我的代码 . :)

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

1 回答

  • 0

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

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

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

相关问题