屏幕关闭时,低功耗蓝牙扫描结果传输会减少

and*_*rks 5 android samsung-mobile bluetooth-lowenergy

我正在开发一个 Android 应用程序,它使用低功耗蓝牙从外围设备接收数据。设备本身将数据作为其广告消息的一部分发送,并且可以随时发送该消息。因此,应用程序通过连续扫描 BLE 设备来工作。当屏幕打开时,应用程序会按预期接收扫描结果。当屏幕关闭时,它似乎每 5 秒才接收一次扫描结果。我猜手机正在尝试优化电池寿命,但这个应用程序是关键任务,所以我们不能丢失消息。

扫描是由设置为“前台服务”的服务完成的,以便操作系统知道它很重要。该服务还获得了 a PowerManager.PARTIAL_WAKE_LOCK,但这似乎没有帮助。该应用程序被排除在电池优化之外,因此它不会进入打瞌睡或深度睡眠模式。该应用程序正在使用以下 ScanSettings:

ScanSettings.SCAN_MODE_LOW_LATENCY
ScanSettings.CALLBACK_TYPE_ALL_MATCHES
ScanSettings.MATCH_MODE_AGGRESSIVE
ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT
Run Code Online (Sandbox Code Playgroud)

我正在使用 Galaxy S7,但有人告诉我,Galaxy S7 Edge 也会出现同样的情况。我已经使用其他非三星设备进行了测试,它们按预期工作(屏幕关闭时持续接收扫描结果)。

问题:作为开发人员,我可以做些什么来使 BT 适配器即使在屏幕关闭时也能持续提供扫描结果吗?

Fin*_*sys 3

如果屏幕关闭,三星会自动将扫描模式更改为低功耗。这是他们在 Android 操作系统上的定制,因此不幸的是无法更改它。