首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓系统中为BluetoothLeScanner开发setReportDelay的目的是什么?

在安卓系统中为BluetoothLeScanner开发setReportDelay的目的是什么?
EN

Stack Overflow用户
提问于 2015-03-20 21:45:41
回答 3查看 1.9K关注 0票数 4

在安卓系统中为BluetoothLeScanner开发setReportDelay的目的是什么?我不能想象为什么有人会延迟收到报告。

EN

回答 3

Stack Overflow用户

发布于 2015-03-23 15:10:15

来自Android Official Site

setReportDelay()采用reportDelayMillis参数,其中reportDelayMillis为:

报告的

延迟(毫秒)。设置为0可立即收到结果通知。值>0会导致扫描结果排队,并在请求的延迟之后或内部缓冲区填满时传送

关于你的问题:

setReportDelay BluetoothLeScanner在安卓系统中的作用是什么?我不能想象为什么一个人会延迟收到报告...|

据我所知,这样做的目的是,有时当你扫描很短的一段时间,并不是所有的devices/beacons都可以找到,但在第二次扫描时,可以在扫描时捕获另一个。

Ex:假设你有三个beacons,你对1s做了两次不同的扫描。在第一次扫描中只发现了一个信标,但在第二次扫描中也发现了其他信标。设置queue将延迟所有它们,您将能够显示所有它们。否则,有时会显示单个信标,有时显示所有信标,有时显示两个信标。(这主要与它们传输的frequency有关)

您也可以使用Lists来实现此目的,因此当找到beacon时,您可以将它们添加到list中,并在一些delay之后显示它们(使用Handler/Timer)。但这将需要更多的工作。所以它可能被这个函数简化了

票数 2
EN

Stack Overflow用户

发布于 2016-02-23 00:47:08

setReportDelay() >0导致扫描器将结果排队,然后从ScanCallback而不是普通的onScanResult()触发onBatchScanResults()。

如果您需要每隔几秒钟进行一次UI更新,这将非常有用:您可以简单地延迟结果,而不是每次通告包到达时都刷新您的UI。此外,您还可以获得更完整的结果集。

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-08-15 11:59:17

不同的设备扫描方式略有不同。在扫描时,有些会在每次扫描时多次返回相同的发现设备。

如果您设置了延迟,Android将创建一个队列,并在返回队列中设备列表之前过滤掉所有重复项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29168035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档