ios - CMAltitudeData 最后有一些奇怪的数据,有什么想法吗?

标签 ios swift xcode core-motion

我最近一直在使用 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 秒,经过一段时间的不活动后,它会漂移并变得比启动时间短。

它是否会因为应用程序不活动而消失? 但为什么它的启动时间比启动时间还长呢?

谁能解释一下这是怎么回事?

最佳答案

CMAltitudeData 继承自 CMLogItem,这是最后一个字段 timestamp 的来源。根据documentation , timestamp 应与设备启动后的时间(以秒为单位)相匹配。

但是,根据this关于SO的问题,启动时间确实会略有偏差,并且timestamp似乎并不简单地在每次测量时复制time_t,而是在第一次测量和之后复制它它只是根据不同的计时器来增加它。与 Timer 相比并不是一个好主意,因为 Timer 在运行循环上运行,因此它仅在您的应用程序位于前台时才起作用,即使如此,它也不是真正的精确。

关于ios - CMAltitudeData 最后有一些奇怪的数据,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670490/

相关文章:

ios - 使用枚举和自定义字符串可转换设置文本字段并返回

ios - 在 Quickblox 中动态更新聊天

iOS 从 UITextView 中删除单词

SwiftUI LazyHGrid 行居中

ios - Xcode 5 持续集成 CodeSign 失败

xcode - iAd 横幅上的广告会自动出现吗?

ios - 为什么我的 Xcode 界面生成器显示红色 block 并且无法呈现

swift - iOS 13 Siri 快捷方式深度链接

ios - 在 ios swift 中传递 'self' 问题

iphone - 为什么 XCode 存档与 XCode 在 iPhone 上构建/运行不同