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

Bluetooth Low Energy scan result delivery is reduced when the screen is OFF

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

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

ScanSettings.SCAN_MODE_LOW_LATENCY
ScanSettings.CALLBACK_TYPE_ALL_MATCHES
ScanSettings.MATCH_MODE_AGGRESSIVE
ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT

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

问题:作为开发者,有什么办法可以让蓝牙适配器在屏幕关闭的情况下也能持续传送扫描结果吗?

如果屏幕关闭,三星会自动将扫描模式更改为 low_power。这是他们对 Android OS 的自定义,所以很遗憾无法更改它。