首页 > 解决方案 > Android BLE 扫描在后台运行几分钟后停止

问题描述

当我为我的公司开发 COVID 联系人跟踪应用程序时,我在后台遇到了 Android 扫描停止问题。这是我尝试过的:

  1. 添加前台服务
  2. 禁用手机中所有与电池相关的优化选项
  3. 启用在后台运行的应用程序
  4. 测试设备:搭载 Android 10 的 Galaxy S20 和 Xperia,搭载 Android 8 的华为。

如果您不禁用这些电池优化设置和应用程序后台更新,则在进入后台时扫描会立即停止。禁用这些设置后,扫描可以运行大约几分钟(约 5 分钟),然后仍会停止。来自大卫的博客:http : //www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8 ,似乎不可能在后台继续扫描,因为JobScheduler会重新启动每个15 分钟,而每次扫描最多持续约 10 分钟。这是现实吗,或者这是我可以每 15 分钟扫描 10 分钟的最佳解决方案?

标签: androidbackgroundbluetooth-lowenergybeacon

解决方案


后台信标检测难以实施,因为许多小问题可能会让您大吃一惊,而且具体问题因 Android 版本、Android 制造商和有时型号而异。虽然 Android 8+ 使用 Job Scheduler 将后台范围限制为每 15 分钟一次,但如果您添加前台服务,则可以解锁无限制的后台范围。

一些提示:

  1. 首先关注 Galaxy S20,因为三星的行为得到了更好的记录,并且更接近原生 Android。(理想情况下,您应该先在 Pixel 设备上进行测试。)只有在三星上运行后,才能继续使用其他设备。

  2. 使用配置了内置前台服务的 Android Beacon Library 参考应用程序,我看到标准 iBeacon 或 AltBeacon 的检测在 Galaxy S10 上无限期地在后台继续进行,即使扫描周期为 1.1 秒。看看你是否可以重现相同的内容。

  3. 小心打盹模式。如果由于手机在屏幕关闭且未充电的情况下静止不动而使 CPU 进入睡眠状态,则您的检测将停止。您可以使用唤醒锁来击败打盹模式,但它会对电池使用产生严重影响。您最好接受它的限制并在测试期间定期保持手机运行。如果您想获取日志以查看发生了什么,请使用 ADB 命令在通过 USB 连接时禁用充电或学习通过 WiFi 使用 ADB。


推荐阅读