蓝牙扫描在Android10的后台操作中不起作用



我目前正在开发一个应用程序,可以在Android10上连接蓝牙并扫描周围的信标。

我创建了一个名为 Public class MyService 扩展的服务,该服务实现了 BeaconConsumer 要在MyService中使用BeaconManager,声明如下: 受保护的静态信标管理器信标管理器;

在 onStartCommand 部分中 它设置为使用 beaconManager.enableForegroundServiceScanning 用作前台服务。

MyService从start Activity,MainActivity开始,作为startService。 当"活动"窗口打开时,扫描功能可以正常工作。 但是,扫描仪功能似乎在应用程序待机模式或所有打瞌睡模式下不起作用。 再次单击通知图标以激活"活动"窗口和扫描程序功能。

如果您进入满足某些条件的区域, 无论手机的状态如何,您始终希望扫描信标并接收数据. 如果可能,如何?

如果您有前台服务,则扫描应该可以正常工作。

但是,如果您不使用前台服务,而只使用简单的服务,那么您的解决方案将不起作用,因为从Android 23开始,打瞌睡模式将清除您在后台运行的所有作业和服务。

顺便说一句,在 DOZE 模式下醒来是一个真正的问题,有时即使是setAndAllowWhileIdle()setExactAndAllowWhileIdle()也无助于避免它。

您可以在本文中找到有关使用蓝牙扫描在低电耗模式下工作的更多信息。

另外,这是有关谷歌的打瞌睡模式的信息。

最新更新