0

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

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

    return _altimeter;
}

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

4

2 回答 2

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
    }];
}
于 2018-01-21T20:04:59.493 回答
0

几点说明:

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

@Geroen 的回答显示了如何获取高度计更新。

我认为您应该首先使应用程序仅在大屏幕上显示高度计值,UILabel然后看看它在飞行过程中的外观。这将使您了解数据的混乱程度。

于 2018-01-21T21:00:46.907 回答