我开发了一个需要运行连续 BLE 扫描的应用程序,因为它必须检查所有周围的外围设备是否正在传输。当其中一个或多个停止传输时,我的应用程序必须发出警报。我在一些手机上测试过:
1 - 搭载 Android 5.1.1 的三星 Note 4 2 - 搭载 Android 6.0 的 Honor 8 3 - 搭载 Android 6.0.1 的 LG Nexus 5 4 - 搭载 Android 6.0.1 的三星 Note 4 5 - 搭载 Android 6.0.1 的三星 J5
仅在 PHONES 4 和 5 上,BLE 外围设备的发现在设备“唤醒”与锁定时似乎表现不同。特别是,当我按下电源按钮并且设备进入锁定状态时,手机停止发现我的外围设备 - 或者至少,发现以非常低的频率触发。当我再次按下电源按钮(通过输入引脚返回解锁模式)时,BLE 发现再次开始并持续运行。
操作扫描的服务完全处于活动状态并正在运行,但它只是不执行扫描。
这种奇怪的行为只发生在手机 4 和 5(Android 6.0.1 的三星)上。同一手机不同安卓版本,不同手机上相同安卓版本似乎不受影响。
我尝试了各种解决方法,但均未成功:
- 从 Android 设置和我的应用程序中的源代码为我的应用程序禁用 Android 打盹模式
- 使用各种 ScanSettings 选项:ScanMode、NumOfMatches、MatchMode……</li>
- 为扫描服务提供高唤醒锁级别
有没有人遇到过同样的问题?
编辑:在带有 Android 4.4.2 的三星 Note 2 上也经过测试并且还可以