gpt4 book ai didi

android - 在不过滤重复 UUID 的情况下获取 BLE 扫描

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:14 24 4
gpt4 key购买 nike

我正在编写一个 BLE 应用程序,需要跟踪外围设备是在广播还是已停止。

我关注了getting peripherals without duplications这个和 BLE Filtering behaviour of startLeScan()我完全同意这一点。

为了使其可行,我保留了定时器,它会在一定时间(3 秒)后重新扫描外围设备。但是随着新设备上市(5.0 更新),有时重新扫描需要一些时间来查找外围设备。

有什么建议或者是否有人已经做到了?

最佳答案

听起来您对扫描广告而不是连接到设备感兴趣。这是 Bluetooth Low Evergy 中的“观察者”角色,对应于通常称为 Beacon 的“广播者”角色。 (蓝牙核心 4.1 第 1 卷 A 部分第 6.2 节)

通常您启用被动扫描,寻找信标广播的 ADV_IND 数据包。这些可能包含也可能不包含 UUID。或者,您可以通过发送 SCAN_REQ 进行主动扫描,您可能会向其接收 SCAN_RSP。许多设备在 ADV_IND 和 SCAN_RSP 中使用不同的广告内容来增加可以广播的信息量 - 例如,您可以将 UUID128 放入 ADV_IND 中,然后是 SCAN_RSP 中的设备名称。 (蓝牙核心 4.1 第 2 卷 E 部分第 7.8.10 节)

现在您需要定义“消失”- 您是希望广告停止还是消失?您将获得每个广告的接收信号强度指示“RSSI”(蓝牙核心 4.1 第 2 卷第 E 部分第 7.7.65.2 节) - 这就是 iBeacon 定位的工作原理,并且对信标接收器有大量支持安卓。

或者,您等待 N 秒以等待应每 T 秒传输一次的广告,其中 N>2T。定时方法的缺点是可能没有接收到信标与肯定接收到弱信标不同;确保您需要 N 足够大,这会影响广播公司关闭或移出范围与您的应用检测到它之间的延迟。

还有一件事 - 请注意,如果有东西连接到外围设备(如果您真的在扫描外围设备),广告就会停止,这是监视 RSSI 的另一个好理由。

关于android - 在不过滤重复 UUID 的情况下获取 BLE 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com