如何解决带有 UUID 过滤器列表混淆的 Android BLE 扫描
我正在 Android(移动设备 A)上执行 UUID 过滤扫描,我有两个测试用例。
一个人在另一台 Android 设备(移动设备 b)上使用一个名为 BLE Scanner 的应用来创建一个带有两个测试服务(每个服务都有自己唯一的 UUID)的 BLE 服务器。另一种方法是通过 Arduino BLE 服务器为其服务提供自定义 UUID。
如果我使用移动设备 B 的 BLE Scanner 应用程序并扫描 arduino,我可以找到它,连接到它并查看服务以及每个服务的 UUID。它具有通用属性、通用访问和自定义服务(我设置的那个)。太好了。
如果我使用移动设备 A 并使用三个服务(通用属性 UUID、通用访问 UUID 和自定义服务 UUID)执行 BLE 过滤扫描,则 Arduino 根本不会出现在扫描中。
如果我使用移动设备 A 并使用通过移动设备 B 上的 BLE Scanner 应用程序创建的测试服务器中的 UUID 执行 BLE 过滤扫描,则移动设备 B 的 BLE 服务器会出现在扫描中。
所以我很困惑。移动设备 A 的过滤扫描似乎可以找到通过 BLE Scanner 应用程序创建的服务器,该服务器具有由 BLE Scanner 应用程序创建的分配的自定义 UUID,但对于 Arduino BLE 服务器,它无法显示。
可能是因为 BLE Scanner 应用程序没有进行过滤扫描来查找/连接到 Arduino BLE 服务器,所以它能够工作?在哪种情况下,无法使用 Arduino 上的已知服务 UUID 进行过滤扫描?或者是否有我遗漏的隐藏 UUID 或 UUID 是否需要包含在广告数据/制造数据中?
解决方法
事实证明,这种差异是由于未能在过滤器扫描中显示的设备是因为广告数据中没有设置/提供 UUID,因此扫描只是将其全部排除在外。
>一旦我将 UUID 添加到它在扫描中显示的广告数据中。
就我而言,我必须按照此处的示例使用 Arduino 获取 BLE 库。 https://github.com/nkolban/ESP32_BLE_Arduino/blob/master/examples/BLE_server/BLE_server.ino
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。