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

我正在开发一个使用蓝牙低功耗来从外围设备接收数据的
Android应用程序.

设备本身将数据作为其广告消息的一部分发送,并且它可以随时发送消息.

因此,应用程序通过连续扫描BLE设备来工作.

当屏幕亮起时,应用程序会按预期接收扫描结果.

当屏幕关闭时,它似乎每5秒仅接收一次扫描结果.

我猜这款手机正在尝试优化电池寿命,但这个应用程序是关键任务,所以我们不能丢失消息.

扫描由服务完成,该服务被设置为“前台服务”,以便操作系统知道它很重要.
该服务还获得了PowerManager.PARTIAL_WAKE_LOCK,但似乎没有帮助.
该应用程序不包括在电池优化中,因此它不会进入Doze或深度睡眠模式.
该应用程序使用以下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会发生同样的行为.
我已经使用其他非三星设备进行了测试,它们按预期工作(当屏幕关闭时连续接收扫描结果).

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

最佳答案 如果屏幕关闭,三星会自动将扫描模式更改为low_power.这是他们在Android操作系统上的定制,所以很遗憾无法改变它.

点赞