Android BLE 扫描在后台几分钟后停止

2024-05-21

当我为公司开发新冠肺炎接触者追踪应用程序时,我在后台遇到了 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 http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8,似乎不可能在后台持续扫描,因为JobScheduler每15分钟就会重新启动一次,而每次扫描最多持续~10分钟。这是现实吗,还是我可以每 15 分钟循环扫描 10 分钟的最佳解决方案?


后台信标检测实施起来很棘手,因为许多小问题可能会让您陷入困境,而且具体问题因 Android 版本、Android 制造商甚至型号而异。虽然 Android 8+ 使用作业计划程序将后台范围限制为每 15 分钟一次,但如果添加前台服务,则可以解锁无限的后台范围。

一些提示:

  1. 首先关注 Galaxy S20,因为三星的行为有更好的记录并且更接近普通 Android。 (理想情况下,您应该首先在 Pixel 设备上进行测试。)只有当它在 Samsung 上运行后,才转向其他设备。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android BLE 扫描在后台几分钟后停止 的相关文章

随机推荐

  • iOS:如何获取设备当前语言设置?

    我的应用程序中的一些功能应该基于其运行设备的语言设置 我想获取实际的语言而不是某些国家 地区设置 例如 如果语言是英语 我不在乎它是美国 英国 澳大利亚等 我很熟悉NSLocale对象 但它似乎与Region Format设置而不是Lang
  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 我的用例可以合并到单个查询中而不影响性能吗?

    我主要着眼于改善表现查询的内容以及是否能够解决单一查询对于我的用例之一 解释如下 涉及到2张表 Table 1 EMPLOYEE column1 column2 email1 email2 column5 column6 Table 2 E
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • 如何使 WordPress 主题全宽?

    我尽了最大努力 但无法通过编辑 CSS 使以下主题全宽 屏幕 如果您能向我展示或给我有关此定制的提示 我将不胜感激 http demo mythemeshop com sociallyviral http demo mythemeshop
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 迭代带有小胡子的数组

    如何获取迭代中当前元素的引用 my array p what goes here p my array 我希望我只是忽略了显而易见的事情 根据规范的变更日志 https github com mustache spec blob maste
  • 使用 SQL 完全复制 postgres 表

    免责声明 这个问题和栈溢出问题类似here https stackoverflow com questions 198141 copy a table including indexes in postgres 但这些答案都不适用于我的问题
  • Apache Commons VFS - 无法解析文件

    VFS 方法无法处理此 URI jboss server temp dir local outgoing配置在jboss beans xml这是决心 C Download jboss eap 5 1 1 server default tmp
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab
  • 限制 JPQL 中的结果数量

    如何限制从数据库检索结果的数量 select e from Entity e I need only 10 results for instance 您可以尝试像这样给出 10 个要显式获取的结果 entityManager createQ
  • 无法使用 Git 部署从多项目解决方案部署正确的网站到 Azure

    我有一个解决方案 它有一个 mvc 网站 WebApplication1 该网站依赖于解决方案中的另一个项目 WebAppCore 源代码托管在 Visual Studio Online 上的 git 中 我配置了持续集成 一切都构建得很好
  • 使用 SendKeys 向 IE 11 发送“@”特殊字符

    我正在尝试使用 Internet Explorer 11 中的 SendKeys 方法将特殊字符发送到文本框 尝试在其他浏览器中发送特殊字符时我没有遇到此问题 但 Internet Explorer 在尝试发送时发送完全不同的字符特殊字符
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • EAR 和 WAR 类加载器

    我对 JBoss 类加载器很困惑 任何人都可以详细描述类加载器的工作原理吗 我只需要做一件事 如果 WAR 没有找到具有自己的类加载器的类 他会将搜索委托给其父类加载器 该父类加载器必须是 EAR 的 针对上述情况 我的申请需要进行哪些更改
  • 在 R 中显示变量的精确值

    gt x lt 1 00042589212565 gt x 1 1 000426 如果我想打印的确切值x 我该怎么办呢 抱歉 如果这是一个愚蠢的问题 我尝试在谷歌上搜索 R 和 精确 或 圆形 但我得到的只是有关如何舍入的文章 先感谢您 所
  • 为什么我的 @OneToMany 属性出现主键违规?

    我有一个实体 Entity public class Student GeneratedValue strategy GenerationType AUTO Id private long id OneToMany private Set
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • 使用控制台记录器的控制台应用程序不会写入最终消息。轻松重现

    Windows 上使用 LoggerFactory 的 net 6 控制台应用程序 最终消息不会出现在控制台上 loggerFactory Dispose 没有帮助 Ilogger 没有 Dispose 方法 这是一个复制品 大约会出现 2
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2