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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android和双模蓝牙设备:与BR / EDR(经典)配对时未找到自定义BLE服务相关的知识,希望对你有一定的参考价值。

我使用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节点有任何想法?

答案

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

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

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

以上是关于Android和双模蓝牙设备:与BR / EDR(经典)配对时未找到自定义BLE服务的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙双 LE 和经典模式标志

BLE简介及原理

蓝牙 5 是不是原生实现 BR/EDR?

什么是双模蓝牙标准

蓝牙工作原理

Bluetooth BR/EDR和BLE的区别.md