ScanPeriod和BetweenScanPeriod在AltBeacon库中的含义是什么?

问题描述 投票:1回答:1

AltBeacon库中的“setForegroundScanPeriod”和“setForegroundBetweenScanPeriod”是否与BLE标准的扫描窗口和扫描间隔匹配?此外,这是指3个广告渠道中每个渠道的扫描事件,还是扫描窗口中是否会扫描3个渠道?

我每400毫秒在单个通道(CH39)上进行一次信标广告,并希望适当地设置我的扫描窗口和扫描间隔,以确保最大的数据包接收率与Android允许您控制的这两个选项。

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

谢谢,

android bluetooth-lowenergy beacon altbeacon
1个回答
0
投票

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

  1. 电池使用情况 BLE扫描将在foregroundBetweenScanPeriod期间停止,允许您对扫描进行占空比以节省电池电量。对于前景,这通常设置为0,对于等效背景设置,通常设置为更高的值(比如5-15分钟)。当应用程序不在前台或屏幕关闭时应用背景设置,并且当应用程序在照明屏幕上可见时应用前景设置。
  2. 信标搜索间隔 默认情况下,foregroundScanInterval设置为1100ms。这意味着库将查找1100ms的信标,跟踪该时段内检测到的所有信号的不同列表,然后在该间隔结束时使用库将其报告给应用程序(例如,每1100ms)。这类似于iOS使用CoreLocation API以1000ms的速度执行的操作。它默认为1100而不是1000的原因是因为许多早期支持BLE的Android设备无法在每次扫描中检测到多个不同的广告,因此必须在每个周期停止扫描并重新启动以再次检测一个。默认周期设置为略大于1000毫秒,以避免与以1Hz速率广告的信标紧密同步。

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

正如您所述,ScanInterval和ScanWindow的BLE标准概念控制进行BLE扫描的设备在收听每个不同BLE广告渠道之间的旋转速度。不幸的是,Android API无法直接控制这些间隔 - 它们由Android制造商提供给固件。此外,Android没有为您确定设置的内容,甚至是在检测到广告数据包时接收器设置为哪个广告频道(对RSSI测量产生不利影响,请参见下文)。您提供的扫描设置有限通过Android是可见的here. SCAN_MODE_LOW_POWER与SCAN_MODE_LOW_LATENCY可能会影响这些间隔(他们在开源Android代码中),但Android制造商可能会随意调整。除了特定的后台模式状态外,Android Beacon Library通常使用SCAN_MODE_LOW_LATENCY。

通常,与上面提到的库设置相比,烘焙到Android固件中的这些BLE标准设置会有所不同。 (BLE规范称ScanInterval的范围可以从2.5毫秒到10,240毫秒)然而,不同Android机型之间的时段差异很大。您可以看到开源Android定义in this answer,它将SCAN_MODE_LOW_LATENCY的ScanInterval设置为5000ms,但请记住,每个制造商都可以根据自己的喜好调整常量。

由于广告检测的RSSI在每个广告渠道之间变化很小但很大,因此您通常可以通过使用所有广告渠道的广告商绘制在Android设备上检测到的广告的RSSI来推导Android设备的硬编码ScanInterval。 。 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上的频道跳跃率意味着无法检测到2/3的广告,而在三星设备上,您通常会在没有任何检测的情况下持续20秒。

© www.soinside.com 2019 - 2024. All rights reserved.