作者:大大文人 | 来源:互联网 | 2022-12-10 14:37
当该应用程序在后台运行时,Google添加了不向该应用程序广播蓝牙开关状态的限制。这有效地在后台阻止了优化的蓝牙信标扫描。除了定期的工作安排之外,如何解决这个问题?
任何帮助表示赞赏。
1> davidgyoung..:
您可以在Android 8+上使用多个后台BLE信标扫描选项
定期的后台服务。您可以像在Android 4.3-6.x上一样使用这些文件,但是通常只能在后台运行10分钟,然后,Android将终止您的应用程序,并且将无法再进行扫描。
使用前台服务。这些工具的工作方式与Android后台服务非常相似,不同之处在于它们会显示均匀显示的通知并带有您选择的图标,以指示您的应用程序正在后台运行。借助前台服务,您可以像在Android 4.3-6.x上一样不受限制地在后台有效扫描信标。
使用基于意图的扫描。如果您只需要知道信标何时出现或消失,则可以使用蓝牙数据包过滤器为BLE设备设置基于意图的扫描,该过滤器会根据信标的字节模式或字节模式的存在进行过滤的灯塔。当信标出现或消失时,Android将向您的应用程序中的BroadcastReceiver发送一个Intent,该Intent将在后台唤醒它,并使其运行大约10分钟,然后杀死它。在这段时间内,您可以继续扫描信标。
使用作业计划程序。您可以安排作业最多在后台每隔15分钟运行一次以进行扫描。通常,作业在后台的运行时间限制为10分钟。由于开始时间相差+/- 10分钟,因此您最多可以扫描0-15分钟的时间。
使用(3)和(4)玩游戏以改变规则。虽然这违反了Android的精神,但您可以通过作业调度程序玩游戏,方法是立即开始作业,在10分钟后取消作业,然后重新启动。您可以通过一次又一次地触发基于意图的扫描来执行类似的操作。请注意,执行这些操作会耗尽用户的电池电量,也许会导致他们卸载您的应用程序。将来的Android版本可能会阻止此规则弯曲。
您可以在此处阅读有关这些技术的优点的博客文章。开源Android Beacon库默认情况下在Android 8+设备上使用技术3和4,并且如果您希望选择选项2,则还支持配置前台服务。