【发布时间】:2017-04-09 14:58:51
【问题描述】:
我开发了一个需要运行连续 BLE 扫描的应用程序,因为它必须检查所有周围的外围设备是否正在传输。 当其中一个或多个停止传输时,我的应用程序必须发出警报。 我已经在一些手机上测试过了:
1 - 搭载 Android 5.1.1 的三星 Note 4 2 - 搭载 Android 6.0 的荣耀 8 3 - 带有 Android 6.0.1 的 LG Nexus 5 4 - 三星 Note 4 与 Android 6.0.1 5 - 搭载 Android 6.0.1 的三星 J5
仅在 PHONES 4 和 5 上,BLE 外围设备的发现在设备“唤醒”时与设备锁定时的行为似乎有所不同。 特别是,当我按下电源按钮并且设备进入锁定状态时,手机停止发现我的外围设备 - 或者至少,发现以非常低的频率触发。当我再次按下电源按钮(通过输入 pin 返回解锁模式)时,BLE 发现再次开始并持续运行。
执行扫描的服务完全处于活动状态并正在运行,但它只是不执行扫描。
这种奇怪的行为只发生在手机 4 和 5(Android 6.0.1 的三星)上。同款手机不同安卓版本,不同手机相同安卓版本似乎不受影响。
我尝试了各种解决方法,但都没有成功:
- 从 Android 设置和我的应用程序的源代码中为我的应用程序禁用 Android 打盹模式
- 使用各种 ScanSettings 选项:ScanMode、NumOfMatches、MatchMode…
- 为扫描服务提供高唤醒锁定级别
有人遇到过同样的问题吗?
编辑:在搭载 Android 4.4.2 的三星 Note 2 上也经过测试且正常
【问题讨论】:
-
您设置了电源唤醒锁吗?你在使用前台服务吗?
-
我已将唤醒锁定设置为 PARTIAL_WAKE_LOCK。该服务在后台,因为我不需要用户知道它的存在。
-
你找到解决办法了吗?
标签: android bluetooth-lowenergy android-bluetooth galaxy android-6.0.1-marshmallow