2

一个明显的原因是用户没有使设备可被发现。我正在寻找其他人。

我观察到(我想每个人都有),在扫描蓝牙设备时,我们没有“每次”都得到“所有”可发现设备的列表。根据我通常阅读的开发人员文档,它是随机的,但我想要这种随机性背后的原因 - 我觉得原因在“扫描仪”设备和“扫描”设备上都有。

例如,在我的 Android 手机上,如果我在一次扫描结束后立即按下“扫描”按钮,我在第一次扫描中获得的设备几乎没有 30%。这让我想知道出了什么问题!(请注意,我说的是第二次扫描中新“发现”的设备 - 大多数设备显示的列表显示在先前扫描中发现的旧“缓存”设备)

一个(相关)问题是,如果我以某种方式将扫描时间(在我的 Android 设备上)从 12 秒增加到 30 秒,我是否有更好的机会发现丢失的设备?

PS:虽然我没有用 Android 标记这个问题,但我也很乐意获得 Android 特定的答案,以及任何低级答案)就蓝牙术语而言)

4

1 回答 1

2

蓝牙发现通过在可用无线电频谱上广播查询数据包来工作。任何处于可发现模式的蓝牙设备都会为其接收到的数据包发送应答。由于蓝牙无线电层的细节,不能保证范围内的所有设备都会收到查询数据包,但实际上,如果扫描运行典型的 10 秒,概率接近 100%。

造成差异的更可能的原因是蓝牙的短距离,通常为 10 到 20 米。因此,完全有可能在第一次扫描期间处于范围内的设备已经移动,因此它们不再处于范围内。如果您在有很多人四处走动的地方进行扫描,这可能就是原因。

与短距离相关的另一个原因是某些设备可能处于蓝牙范围的边缘,因此查询数据包或查询响应数据包在传输中丢失的可能性很大。虽然蓝牙芯片组将为查询响应提供一个 RSSI 值,可用于粗略估计范围(在 BT 2.1 ->,IIRC 中),但查询函数通常不会显示此信息(例如,Android 查询不显示此信息) .

于 2012-06-12T04:45:53.573 回答