Altbeacon 默认扫描周期错误。有什么需要注意的吗?

Altbeacon defaults scan period errors. Anything to be concerned about?

我一直在各种设备上使用 Altbeacon 的参考应用程序,并在 logcat 中看到以下错误。我没有设置任何前台或后台扫描时间,我正在使用 bootstrap 区域的前台服务。

Android 诺基亚 8 上的 8.1 在后台屏蔽应用程序:

Logcat->

12-12 13:03:27.156 10226-10226/net.beaconsdkdemo  I/ScanJob: Scan job running for 300000 millis

12-12 13:03:27.159 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo  ' is scanning too frequently

12-12 13:04:53.335 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo  ' is scanning too frequently

12-12 13:05:01.628 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo  ' is scanning too frequently

12-12 13:05:06.596 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo  ' is scanning too frequently

12-12 13:08:27.374 10226-10226/net.beaconsdkdemo I/ScanJob: Scan job running for 300000 millis

12-12 13:08:27.377 2277-2290/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:10:13.493 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:15:13.661 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:15:21.623 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:15:26.928 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

应用已打开且 运行 在前台:

Logcat->

2-12 13:20:04.391 10226-10226/net.beaconsdkdemo I/BeaconService: set scan intervals received

12-12 13:20:04.393 10226-10226/net.beaconsdkdemo I/CycledLeScanner: Adjusted nextScanStartTime to be Wed Dec 12 13:15:21 GMT+11:00 2018

12-12 13:20:13.848 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:20:46.932 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:20:51.345 2277-4762/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:20:53.556 2277-2615/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:21:06.829 2277-2290/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

12-12 13:21:20.099 2277-2290/? E/BtGatt.GattService: App 'net.beaconsdkdemo' is scanning too frequently

Android 三星 Galaxy Mini 5 为 6

Logcat->

12-12 13:01:59.480 3390-3559/? E/BtGatt.GattService: [GSIM LOG]: gsimLogHandler: net.beaconsdkdemo, msg: MESSAGE_STOP_SCAN

12-12 13:02:01.595 26097-26097/net.beaconsdkdemo E/CycledLeScannerForLollipop: Scan failed: app cannot be registered

"Scanning too frequently" Android 8 的条目是否表明该应用程序将在某个时候被终止?

扫描 nextScanStartTime 时间过去是怎么回事?

12-12 13:20:04.393 10226-10226/net.beaconsdkdemo I/CycledLeScanner: Adjusted nextScanStartTime to be Wed Dec 12 13:15:21 GMT+11:00 2018

Android6 的 "Scan failed: app cannot be registered" 是我的应用程序配置造成的还是蓝牙故障?

我注意到在 Android 8 上,一段时间后,该服务被终止并且没有重新启动。

关于这个问题的讨论很长here

我们所知道的摘要:此日志行似乎是由针对 Android 的华为特定定制引起的。具体细节是专有且未发布的,因此我们只能对正在发生的事情进行最低限度的逆向工程。基本思路是,华为添加了一些代码来监控后台启动的扫描次数,如果在某些未知条件下启动的次数超过某个未发布的阈值,则开始阻止这些扫描。

虽然这只会影响某些华为设备,但看到此日志消息会产生后果。看到这个基本就屏蔽扫描了

如果您使用的是具有默认扫描设置的前台服务,这些扫描设置将以 1100 毫秒开启,然后关闭 0 毫秒的速率进行扫描,这意味着扫描每 1100 毫秒重新启动一次。一旦您在 1100 毫秒的周期内两次检测到相同的信标,此循环将关闭并且扫描将持续保持,这应该会导致这些日志消息消失。因此,如果您的应用程序在信标周围时开始扫描,那么华为可能不会发生这种情况。但是,如果它在没有信标的情况下启动,它就会启动。

目前,此问题没有已知的解决方法,因为即使每 15 分钟扫描一次也会在华为设备上触发此错误消息。在华为设备上,使用屏幕进行信标扫描似乎根本不可靠。

可能值得尝试将您的应用列入电池优化白名单,看看这是否有帮助。如果您发现任何新信息,请在 library discussion thread 上 post。