我们使用AltBeacon来检测背景中的区域。对于该项目的一个重要用例,我们绝对需要有很多非常小的区域(基本上,一个具有最小发射功率的信标就是整个区域),并且彼此非常接近。通过这种信标设置,我们在每个区域事件时都会收到通知,但进入区域事件的触发时间比我们希望的要早,通常发生在我们在信标半径10米(代表区域)内行走时。我们的目标是至少把这段距离缩短一半。我知道这个用例对于区域监控来说不是一个理想的用例,但它必须以这种方式工作。是否可以设置在进入区域事件时收到通知的最小距离?
我们开始测试的一个可能的解决方案是始终进行测距(即使是在背景上),将默认的前景扫描周期覆盖为类似于背景监测的内容。我们担心的是,距离可能不可靠(由于扫描并不是一直发生,而且信标的最小功率设置),电池消耗可能高于同样频繁的监测。对这种方法有什么想法吗?
您可以使用onReadRemoteRssi。这是以dB为单位测量信号强度的,你可以用它来近似距离。请记住,它不准确,你必须测试它。我试过这样的方法,但有一些峰值,比如噪音,你应该过滤它们。以下是
测距和监控API是应用于检测信标数据包的抽象概念。正如您在用例中发现的那样,这两个概念都不完全适合。
你同时想要两样东西:
距离特定信标(如测距)较短距离时触发的逻辑
电池友好型检测(如监控)
不幸的是,要估计距离,您必须进行持续的蓝牙扫描,就像通常在前景中进行测距一样。这些持续扫描确实需要更多的电池。
根据您的用例,可以在后台进行持续测距,但只能进行或在有限的时间内进行。这将为您提供该时段可接受的距离估计值。您可以决定何时开始(例如,第一次信标检测),并仅在检测到信标或最长时间间隔(例如10分钟)内继续。如果你能限制时间,电池的使用量可能是可以接受的。