gpt4 book ai didi

ios - 如何使 CLProximityImmediate 的 iBeacon 前景测距在 iOS 中更快?

转载 作者:行者123 更新时间:2023-11-28 22:05:51 25 4
gpt4 key购买 nike

我正在试验一个 iPad 应用程序(iPad Air,应用程序在前台运行,而不是在后台运行)和几个信标(来自 Estimote 和 Bluecat)来开发一个室内和室外游戏,人们必须按正确的顺序扫描信标。信标放置在大约 5 x 5 米的区域内,参与者必须靠近它们(在最近的范围内)。

然而,发现信标在 CLProximityImmediate 范围内可能需要几秒(这很好)到大约 30-60 秒(这太长),即使在 iPad 实际上是物理的情况下触摸信标。根据我的实验,信标的测距范围大约为每秒一次,但会延迟报告即时范围并频繁报告 CLProximityUnknown

我的测距设置如下(我一直处于测距模式,没有打开/关闭进入/退出区域):

CLBeaconRegion *estimoteRegion = [[CLBeaconRegion alloc] initWithProximityUUID:estimoteUUID identifier:estimoteIdentifier];
CLBeaconRegion *bluecatRegion = [[CLBeaconRegion alloc] initWithProximityUUID:bluecatUUID identifier:bluecatIdentifier];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startRangingBeaconsInRegion:estimoteRegion];
[self.locationManager startRangingBeaconsInRegion:bluecatRegion];

测距事件处理程序与下面的类似:

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
for(CLBeacon *beacon in beacons) {
if (beacon.proximity == CLProximityImmediate) {
// Handle it
break;
}
}

我已经尝试过 Core Location 和 Estimote SDK,但它们给出的结果非常相似。

关于如何加速信标即时距离感应,您有什么实用的技巧吗?深入 Core Bluetooth 是否应该 promise 任何重大改进?

最佳答案

您提到的延迟可能是由四个因素造成的:

  1. CoreLocation 为您提供一次测距更新所需的时间:1 秒
  2. CoreLocation 对“准确度”(距离)的滚动平均估计从旧位置确定新位置的值所需的时间。 My experiments显示这大约是 20 秒。
  3. 在给定 radio 波波动的情况下立即获得读数所需的时间应该最多 2-3 秒。
  4. 信标的校准常数。如果您的信标未正确校准,CoreLocation 可能会高估距离,导致 (3) 需要更长的时间,直到随机变化恰好为您提供即时读数。

要加快上述速度,首先要确保正确校准。接下来,您可能想要 abandon iOS' distance estimation in favor of your own ,基于您从每个测距回调中获得的 RSSI 读数。优点是您可以摆脱滚动平均值造成的 20 秒延迟。但真正的权衡是你会看到你的距离估计有更高的可变性。当你比你想要的更远时导致误报。

关于ios - 如何使 CLProximityImmediate 的 iBeacon 前景测距在 iOS 中更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com