【问题标题】:Android 6.0.1 on Samsung: BLE discovery scan stops when phone is locked三星上的 Android 6.0.1:手机锁定时 BLE 发现扫描停止
【发布时间】: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


【解决方案1】:

这可能与位置服务进入低优先级状态有关。您可以尝试在测试设备中将服务转为高精度并重新测试。

【讨论】:

  • 怎么做,我要把服务转为高精度?
  • 您必须在每台设备上查找它。不幸的是,不同的安卓设备有不同的菜单。
  • 好吧,那很糟糕:(
猜你喜欢
  • 2017-05-03
  • 2012-01-04
  • 2021-08-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多