Android中的BluetoothLeScanner的setReportDelay的目的是什么?

时间:2015-03-20 13:45:41

标签: android bluetooth-lowenergy android-5.0-lollipop android-bluetooth altbeacon

Android中BluetoothLeScanner的setReportDelay目的是什么?我无法想象为什么有人会延迟报告......

2 个答案:

答案 0 :(得分:2)

来自Android Official Site

setReportDelay()获取reportDelayMillis所在的reportDelayMillis参数:

  

报告延迟(以毫秒为单位)。设置为0以通知结果   立即。值> 0会导致扫描结果排队等候   在请求的延迟之后或内部缓冲区填满时发送   达

回答你的问题:

  

Android中BluetoothLeScanner的setReportDelay的目的是什么?我无法想象为什么有人会延迟报告...... |

据我所知,有时当你扫描很短的时间时,并不是所有devices/beacons都可以找到,但是在第二次扫描时,另一个人可以在扫描时咳嗽。

<强>实施例 假设您有三个beacons,并为1s进行了两次不同的扫描。在第一次扫描时,仅找到单个信标,但在第二个其他信标也被找到。设置延迟将queue所有这些延迟,您将能够显示所有这些延迟。否则有时会出现单个信标,有时会显示所有这些信标,有时还会显示其中的两个信标。(这主要与它们传输的frequency有关)

您也可以将Lists用于此目的,因此当找到beacon时,您可以将其添加到list并在delay之后显示它们(使用{{ 1}})。但这需要更多的工作。所以可能用这个函数简化了

答案 1 :(得分:1)

setReportDelay()&gt; 0会导致扫描程序排队结果,然后从ScanCallback而不是正常的onScanResult()触发onBatchScanResults()。

如果您需要每隔几秒进行一次UI更新,这非常有用:不是每次通知数据包到达时都刷新UI,您只需延迟结果即可。此外,您还可以获得更完整的结果集。

请注意,您的设备需要能够支持此功能。见

http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#isOffloadedScanBatchingSupported()