Android中BluetoothLeScanner的setReportDelay目的是什么?我无法想象为什么有人会延迟报告......
答案 0 :(得分:2)
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,您只需延迟结果即可。此外,您还可以获得更完整的结果集。
请注意,您的设备需要能够支持此功能。见