android - 低功耗蓝牙 : when scanning for advertisements, 如何识别扫描响应?

标签 android bluetooth-lowenergy

在 Android 上:我想通过蓝牙 LE 进行广告并提供可用的扫描响应。据我了解,扫描响应的格式与广告相同。

那么扫描仪如何识别我的扫描响应?它如何区分我的扫描响应和其他设备的广告?在实践中:我的扫描响应是否需要有一些识别信息将其与原始广告联系起来?我没有在任何文档中看到任何提及这一点的内容。

我查看了一些图表,我唯一的猜测是扫描响应总是在请求扫描响应之后恰好 X 毫秒到来。这样,就不需要任何将响应与原始广告联系起来的信息。虽然看起来很粗略。

最佳答案

我假设您问的是有关非扩展广告的问题。

参见Spec ,见第 6.B.2.3 章。然后:

  • 广告数据包 (ADV_IND) 包含广告商 48 位蓝牙地址 (AdvA) 和广告数据 (AdvData)。
  • 扫描请求数据包 (SCAN_REQ) 包含扫描器 48 位蓝牙地址 (ScanA) 和目标广告商 48 位蓝牙地址 (AdvA)。
  • 扫描响应数据包 (SCAN_RSP) 包含广告商 48 位蓝牙地址 (AdvA) 和扫描响应数据 (ScanRspData)。

AdvData 和 ScanRspData 具有相同的格式,但不应重复相同的内容。他们应该加起来。是否将给定的广告数据(AD)放入广告或扫描响应中是广告数据包的最大长度和扫描延迟之间的优化权衡问题。

某些 AD 类型对其出现位置有限制,请参阅 Core Specification Supplement了解更多信息。

关于android - 低功耗蓝牙 : when scanning for advertisements, 如何识别扫描响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564948/

相关文章:

java - 从另一个 fragment 调用时接口(interface)对象不工作

android - 在 fragment 期间处理后退按钮键

java - Android 分享到 Facebook 不工作

java - Android BLE 多连接

android - 如何在不扫描的情况下连接ble设备?安卓4.3

java - 将 ListView 的选定项作为字符串或 TextView 获取时出现 ClassCastException

android - 通用图像加载器未加载特定链接的图像

Android - 检测我的应用程序的其他用户是否在附近

ios BLE 在后台模式下被杀死后数据丢失

android - onCharacteristicWrite()被调用,但并不总是写