最新版本 (2.15.4) 的 Altbeacon 扫描周期要求

Altbeacon scan period requirements for latest version ( 2.15.4 )

我已经阅读了很多关于 foreground/background 扫描周期和 Android 7 上长扫描问题的信息,但我对在最新的 alt 中应该配置什么以获得最佳结果感到困惑-信标库(2.15.4)。

我们已经实现了前台服务和引导,并要求库执行以下操作:

应用在前台扫描 1100 毫秒,休眠 0 毫秒

应用程序在后台扫描 1100 毫秒,休眠 10000 毫秒

我们知道,由于 start/stop 扫描而未检测到信标时会出现一些边缘情况,但我们更愿意这样做,而不是应用程序扫描被 OS 杀死的可能性,因为时间长运行 次扫描。

满足上述要求应该使用什么setForeground...setBackground...值?或者我们不应该使用这些方法而只使用默认值吗?

这会导致 "Scanning to frequently" 问题吗?我们如何通过尽可能接近我们要求的设置来解决这个问题?

您描述的扫描速率将适用于大多数手机:

 beaconManager.setForegroundScanPeriod(1100); // Default, so this line not needed
 beaconManager.setForegroundBetweenScanPeriod(0); // Default, so this line not needed
 beaconManager.setBackgroundScanPeriod(1100);
 beaconManager.setBackgroundBetweenScanPeriod(10000);
 BackgroundPowerSaver bps = new BackgroundPowerSaver();

但是,在 Android 8+ 上,操作系统会将扫描之间的时间限制为大约 15 分钟。如果您不能接受这一点,那么唯一的选择就是指示图书馆使用 foreground service。如果您确实配置了前台服务,那么即使在 Android 8+.

上,您也可以获得您想要的准确后台扫描速率

我说这适用于 "most phones",因为大型中国制造商(例如华为、OnePlus、小米)已从 2017 年底开始分叉其 Android 版本,以实现阻止信标的积极节能功能在后台扫描。专有分支要么在屏幕关闭时阻止扫描(华为参见 here and here) (Xiaomi see here) or block foreground services (OnePlus see here)。这些有效地破坏了 Android 应用程序在其操作系统分支上的正常工作。