如何使用高度计? (增加和减少方法)

时间:2018-01-21 19:45:09

标签: ios objective-c cmaltimeter

我是飞行员和ios开发人员。我想知道是否有可能创建两种方法,可以在高度增加时发送通知,另一种方法可以在海拔降低时(起飞和着陆)发送通知。我已经创建了一个可以检索高度的代码。

- (CMAltimeter *)altimeter
{
    if (!_altimeter) {
        _altimeter = [[CMAltimeter alloc] init];
    }

    return _altimeter;
}

如果你愿意,我可以与Dropbox分享项目,向你展示我的代码。

2 个答案:

答案 0 :(得分:1)

您的代码只会创建一个CMAltimeter实例。

要获取高度数据,请在检查设备是否实际支持高度计测量后使用startRelativeAltitudeUpdatesToQueue,并在回调中检测到起飞或降落时发送通知:

if ([CMAltimeter isRelativeAltitudeAvailable]) {
    CMAltimeter* altimeter = [[CMAltimeter alloc] init];

    NSOperationQueue* queue = [[NSOperationQueue alloc] init];
    [altimeter startRelativeAltitudeUpdatesToQueue:queue withHandler:^(CMAltitudeData* altitudeData, NSError* error) {
        // your code here
    }];
}

答案 1 :(得分:0)

几点评论:

  • 您可能需要使用低通滤波器滤除高度计信号噪声。
  • 当然,您需要为高度计更改定义阈值,因为您不希望每变化0.1米时连续触发。
  • 高度计是相对测量值。这意味着当你在地面时,你必须告诉应用程序;一种0级的设置。
  • 当然你不能在加压平面上使用它。
  • 平面速度可能会影响非加压平面内的局部压力。
  • 机身振动可能会影响局部压力。

@Geroen's answer显示了如何获得高度计更新。

我认为您应首先让应用程序在大UILabel上显示高度计值,并查看在飞行过程中的外观。这将让您了解数据是多么混乱。