【发布时间】:2017-01-06 09:03:49
【问题描述】:
我正在开发一个使用蓝牙低功耗从外围设备接收数据的 android 应用程序。 设备本身将数据作为其广告信息的一部分发送,并且可以随时发送信息。 因此,应用程序通过持续扫描 BLE 设备来工作。 当屏幕打开时,应用程序会按预期接收扫描结果。 当屏幕关闭时,它似乎只每 5 秒接收一次扫描结果。 我猜手机正在尝试优化电池寿命,但这个应用程序是关键任务,所以我们不能丢失消息。
扫描由设置为“前台服务”的服务完成,以便操作系统知道它很重要。
该服务还获得了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 也会发生同样的行为。 我已经用其他非三星设备进行了测试,它们按预期工作(屏幕关闭时持续接收扫描结果)。
问题:作为开发人员,有没有什么办法可以让 BT 适配器即使在屏幕关闭时也能持续提供扫描结果?
【问题讨论】:
标签: android bluetooth-lowenergy samsung-mobile