我们使用AltBeacon来检测背景中的区域。对于项目的一个重要用例,我们绝对需要有许多非常小的区域(基本上一个发射功率最小的信标是整个区域),并且彼此非常接近。有了这个信标设置,我们在每个region事件时都会收到通知,但是enter region事件会比我们希望的更早触发,通常发生在信标半径为10米的地方(代表该区域)。我们的目标是至少把这个距离缩短一半。我知道这个用例对于区域监控来说不是一个理想的用例,但它必须以这种方式工作。是否可以设置在enter region事件上获得通知的最小距离?
我们开始测试的一个可能的解决方案是始终进行测距(即使是在后台),覆盖默认的前景扫描周期,以类似于后台监控的方式。我们担心的是距离可能不可靠(由于扫描并不总是发生,以及最低信标功率设置),并且电池消耗可能比同等频率的监测更高。对这种方法有什么想法吗?
发布于 2016-05-04 18:32:47
您可以使用onReadRemoteRssi。这以dB为单位测量信号强度,您可以通过它来近似计算距离。请记住,它并不准确,您必须对其进行测试。我尝试过这样的方法,但是有一些像噪声这样的峰值,你应该对它们进行过滤。这是一个example
发布于 2016-05-04 20:52:24
测距和监控API是应用于检测信标数据包的抽象概念。正如您已经在您的用例中发现的那样,这两个概念都不完全适合。
你想要的是同时做两件事:
在距离特定信标较近距离时触发的
不幸的是,要估计距离,您必须像通常在前景测距时所做的那样,不断地进行蓝牙扫描。这些持续的扫描确实会消耗更多的电池。
根据您的用例,可以在后台使用进行恒定的范围调整,但只能使用有限的时间。这将为您提供可接受的这段时间的距离估计。您可以决定何时开始此操作(例如,第一个信标检测),并仅在检测到信标时或在最大时间间隔(例如10分钟)内继续。如果您可以限制时间,电池使用量可能是可以接受的。
https://stackoverflow.com/questions/37024020
复制相似问题