gpt4 book ai didi

android - AltBeacon 库中的 ScanPeriod 和 BetweenScanPeriod 是什么意思?

转载 作者:行者123 更新时间:2023-11-29 02:20:53 31 4
gpt4 key购买 nike

AltBeacon 库中的“setForegroundScanPeriod”和“setForegroundBetweenScanPeriod”是否与 BLE 标准的 Scan Window 和 Scan Interval 匹配?此外,这是指 3 个广告 channel 中的每一个的扫描事件,还是将在扫描窗口中扫描 3 个 channel ?

我有一个每 400 毫秒在单个 channel (CH39) 上广播一次的信标,我想适本地设置我的扫描窗口和扫描间隔,以确保使用 Android 允许您控制的这两个选项的最大数据包接收率。

我也愿意为此尝试其他建议。

谢谢,

最佳答案

Android Beacon 库的 setForegroundScanPeriod 和 setForegroundBetweenScanPeriod 设置是一个高级概念,旨在控制:

  1. 电池使用情况

    BLE 扫描将在 foregroundBetweenScanPeriod 期间停止,让您可以循环扫描以节省电池电量。对于前景,这通常设置为 0,对于等效的背景设置,该值通常设置为更高的值(比如 5-15 分钟)。当应用程序不在前台或屏幕关闭时应用背景设置,当应用程序在照明屏幕上可见时应用前景设置。

  2. 信标搜索间隔

    默认情况下,foregroundScanInterval 设置为 1100ms。这意味着该库将寻找 1100 毫秒的信标,跟踪它在此期间检测到的所有不同列表,然后在该时间间隔结束时(例如,每 1100 毫秒)使用该库将它们报告给应用程序。这类似于 iOS 以 1000 毫秒的速率使用其 CoreLocation API 执行的操作。它默认为 1100 而不是 1000 的原因是因为许多支持 BLE 的早期 Android 设备每次扫描无法检测到多个不同的广告,因此必须在每个周期停止扫描并重新启动以再次检测一个。默认周期设置为略大于 1000 毫秒,以避免与以 1Hz 速率发布的信标紧密同步。

库的设置与 BLE 标准的 ScanWindow 和 ScanInterval 不同。库的设置是一个更高层次的概念。

ScanInterval 和 ScanWindow 的 BLE 标准概念,如您所述,控制执行 BLE 扫描的设备在监听每个不同的 BLE 广告 channel 之间旋转的速度。 遗憾的是,Android API 无法让您直接控制这些时间间隔——它们由 Android 制造商嵌入到固件中。此外,Android 没有提供 API 来确定这些时间间隔的设置,甚至是哪些当检测到广告数据包时,接收器设置为广告 channel (这对 RSSI 测量有不幸的影响,请参见下文。)可见 Android 提供的有限扫描设置 here. SCAN_MODE_LOW_POWER 与 SCAN_MODE_LOW_LATENCY 可能会影响这些间隔(它们在开源 Android 代码中会影响),但同样,Android 制造商可能会随意调整它。 Android Beacon 库通常使用 SCAN_MODE_LOW_LATENCY,特定背景模式状态除外。

一般来说,这些嵌入到 Android 固件中的 BLE 标准设置与上述库的设置不同。 (BLE 规范表示 ScanInterval 的范围可以从 2.5 毫秒到 10,240 毫秒)但是,不同的 Android 型号之间的周期差异很大。可以看开源的Android定义in this answer ,它将 SCAN_MODE_LOW_LATENCY 的 ScanInterval 设置为 5000ms,但请记住,每个制造商都可以根据自己的喜好调整常量。

由于广告检测的 RSSI 在每个广告 channel 之间变化很小但很大,因此您通常可以通过绘制在 Android 设备上检测到的来自使用所有广告 channel 。 Plotting this on a graph of RSSI vs. time will show a stair step pattern, where the width of each step is equal to the ScanInterval.在三星设备上,ScanInterval 接近规范允许的最大值,约为 10 秒。我的轶事测试表明,其他制造商设备的预置设置通常较短。

在 Android 上无法控制 channel 跳跃率意味着 2/3 的广告不会被检测到,而在三星设备上,您通常会在 20 秒内没有任何检测。

关于android - AltBeacon 库中的 ScanPeriod 和 BetweenScanPeriod 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55785205/

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