【发布时间】:2017-05-24 16:08:46
【问题描述】:
我正在构建 BLE Android。 我的应用程序使用 SCAN_MODE_LOW_POWER 作为设置扫描具有 24/7 后台服务的 BLE 设备(这对我的应用程序至关重要)。 当我找到与我的应用程序相关的设备时,我会切换到 SCAN_MODE_LOW_LATENCY,因为此时我的应用程序每 1 秒计数一次。 使用 SCAN_MODE_LOW_LATENCY,我会密集接收 ScanCallback,但在某些时候,例如当设备处于睡眠模式时,我会密集接收 10-11 回调,然后暂停 3-4 秒,然后再次回调。
这 3-4 秒的延迟/暂停对我的应用毫无帮助。
即使设备处于睡眠或打盹模式,是否可以进行密集的 ScanCallback?
谢谢。
屏幕开启时登录:
05-25 09:26:27.121 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:27.161 14564-14564/? I/TAG_BLE:BLE onScanResult - isScreenOn :是的
05-25 09:26:27.211 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:27.251 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:27.301 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
...密集的 ScanCallback
05-25 09:26:41.101 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.151 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.201 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.251 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.291 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.341 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
05-25 09:26:41.391 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :true
屏幕关闭时登录:
05-25 09:26:50.141 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.191 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.221 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.271 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.301 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.351 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.401 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.441 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.501 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.531 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.581 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:50.631 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
--->没有回调5s
05-25 09:26:55.151 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.201 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.251 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.301 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.341 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.381 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.421 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.481 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.521 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.571 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
05-25 09:26:55.611 14564-14564/? I/TAG_BLE: BLE onScanResult - isScreenOn :false
【问题讨论】:
-
您的应用进程中是否运行了前台服务?如果你还没有,如果你需要在后台进行 BLE 扫描,你应该有一个;否则应用程序可能会在一段时间后终止。
-
不,我没有前台服务,我正在使用 STICKY 后台服务。问题不存在我的服务没有被杀死(我保证服务不会被杀死)。我总是收到 ScanCallback 回调,但有时没有我想要的那么多。例如,当屏幕解锁时,我收到密集的 ScanCallback 锁定后,我仍在接收回调,但中间有 3-4 秒的暂停。
-
您运行的是哪个 Android 版本?您能否尝试将其设为前台服务,看看会发生什么?前台服务不受打盹模式的影响。
-
我在前台服务中得到了相同的结果。我的初始测试是在 Galaxy S6 Android 6.0.1 上进行的,当屏幕解锁时,我有密集的 ScanCallback,但一旦它被锁定,我会有 4-5 秒的暂停在回调之间,当我强制空闲模式时,结果相同。但是对于 Nexus 7.0,即使在空闲模式下,我也总是有密集的回调..我现在很困惑..
标签: android bluetooth-lowenergy