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

时间:2017-01-06 09:03:50

标签: android bluetooth-lowenergy samsung-mobile

我正在开发一个使用Bluetooth Low Energy从外围设备接收数据的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适配器连续提供扫描结果,即使屏幕关闭也是如此?

1 个答案:

答案 0 :(得分:2)

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