【问题标题】:CMAltitudeData has some weird data at the end, any ideas?CMAltitudeData 最后有一些奇怪的数据,有什么想法吗?
【发布时间】:2017-08-14 08:36:10
【问题描述】:

我最近一直在使用 Core Motion 的框架,在尝试从有限的 CMAltitude 类中获得更多汁液时,在通话结束时偶然发现了一些奇怪的数据。所以如果你打电话重新创建:

import UIKit
import CoreMotion


class ViewController: UIViewController {

let corey = CMAltimeter()

override func viewDidLoad() {
    super.viewDidLoad()
    self.getter()
}

@objc func getter() {
    corey.startRelativeAltitudeUpdates(to: OperationQueue.main, withHandler: { (altitudeData:CMAltitudeData?, error:Error?) in
        print(String(describing: altitudeData.unsafelyUnwrapped))

仅出于视觉目的,做这件非常粗糙的事情会得到回应:

Altitude -0.589237 Pressure 101093.882812 @ 2377.566172
Altitude -0.618303 Pressure 101094.234375 @ 2378.602637
Altitude -0.618303 Pressure 101094.234375 @ 2379.640150
Altitude -0.620945 Pressure 101094.250000 @ 2380.678124
Altitude -0.628872 Pressure 101094.343750 @ 2381.714421

我想知道的是最后一部分@ 2381.714421,它看起来像几秒钟,但实际上我不太确定,当与计时器比较时,与启动时间time_t 相比,该数字开始 +4 秒,之后一段时间不活动它会漂移并变得比启动时间少。

它会因为应用不活动而消失吗? 但是为什么它的启动时间甚至比启动时间还要长呢?

谁能解释这是怎么回事?

【问题讨论】:

    标签: ios swift xcode core-motion


    【解决方案1】:

    CMAltitudeData 继承自 CMLogItem,这是最后一个字段 timestamp 的来源。根据documentationtimestamp 应该与设备启动后的秒数相匹配。

    但是,根据关于 SO 的this 问题,启动时间确实会略微漂移,而且似乎timestamp 不是在每次测量时简单地复制time_t,而是在第一次测量时和之后复制它它只是根据不同的Timer 增加它。与Timer 比较不是一个好主意,因为Timer 在运行循环上运行,所以它仅在您的应用程序处于前台时才有效,即使这样也不是很精确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多