gpt4 book ai didi

android - 后台信标扫描 - Android O

转载 作者:行者123 更新时间:2023-11-29 14:59:20 24 4
gpt4 key购买 nike

Google 添加了当应用程序处于后台时不向应用程序广播蓝牙开关状态的限制。这有效地阻止了后台优化的蓝牙信标扫描。除了定期作业调度之外,如何解决这个问题?

感谢任何帮助。

最佳答案

在 Android 8+ 上,您有多种后台 BLE 信标扫描选项

  1. 常规后台服务。您可以像在 Android 4.3-6.x 上一样使用这些,但您通常只能在后台运行 10 分钟,超过 10 分钟后 Android 将终止您的应用程序,它将无法再进行扫描。

  2. 使用前台服务。它们的工作方式与 Android 后台服务非常相似,只是它们会显示带有您选择的图标的实时通知,以指示您的应用程序正在后台运行。通过前台服务,您可以像在 Android 4.3-6.x 上一样不受限制地在后台有效地扫描信标。

  3. 使用基于 Intent 的扫描。如果您只需要知道信标何时出现或消失,您可以使用蓝牙数据包过滤器为 BLE 设备设置基于 Intent 的扫描,该过滤器过滤信标字节模式的存在或字节模式的缺失的灯塔。当信标出现或消失时,Android 将向您应用中的 BroadcastReceiver 发送一个 Intent,这将在后台唤醒它并让它运行大约 10 分钟,然后将其杀死。在此期间,您可以继续扫描信标。

  4. 使用作业调度程序(也称为 WorkManager)。您可以安排一个作业最多每 15 分钟在后台运行一次以进行扫描。一个作业在后台的运行时间一般限制在 10 分钟以内。由于开始时间相差 +/- 10 分钟,因此您将有长达 0-15 分钟的间隔时间不进行扫描。

  5. 使用 (3) 和 (4) 玩游戏来改变规则。虽然这违背了 Android 限制的精神,但您可以通过立即开始一项工作,在 10 分钟之前取消它,然后重新启动它来使用作业调度程序玩游戏。您可以通过简单地一遍又一遍地触发基于 Intent 的扫描来做类似的事情。但是请注意,执行这些操作会耗尽用户的电池电量,可能会导致他们卸载您的应用程序。在未来的 Android 版本中可能会阻止这种规则弯曲。

您可以阅读我关于这些技术优点的博文 here .开源Android Beacon Library默认情况下在 Android 8+ 设备上使用技术 3 和 4,如果您希望选择选项 2,还支持配置前台服务。

关于android - 后台信标扫描 - Android O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com