我正在开发一些与BLE相关的应用程序。
疑问很简单,"我们使用android.bluetooth.le.ScanCallback
onScanResult
方法收到的BLE扫描结果是否提供了一组缓存结果?"
如果你没有清楚地告诉我,请让我通过深入研究实验来解释一下。
我正在使用来自Pinmicro (Card Beacon)的信标,我们将其配置为以100毫秒的间隔进行广播/通告。
我使用android.bluetooth.le.ScanSettings.SCAN_MODE_LOW_LATENCY
模式开始扫描,当然我在Lolipop(Nexus 5 with 6.0.1,确切地说)的Android版本中运行它。我周围有大约100个信标,但在logcat中只记录了一个信标(比如TARGET信标)及其RSSI。
因此,当我开始扫描时,事情几乎可以持续2-3分钟,但进一步的RSSI更新有点延迟。请参阅以下方案:
我假设的是,Android操作系统正在缓存所有BLE广告,并通过onScanResult
回调调度这些缓存结果,这样可以在几秒钟后发送旧的缓存广告。我不确定,但情况会是这样吗?如果是这样,有没有办法从操作系统中清除BLE广告缓存?
欢迎任何形式的建议,例如清除缓存的直接方法,解决方法,反射技术等。
提前致谢!
答案 0 :(得分:2)
没有缓存。只要您的应用程序足够快地处理它们就不会有延迟(否则它们会排队)。