iphone - 使用设备运动代替加速度计、陀螺仪和磁力计

标签 iphone ios cocoa-touch accelerometer gyroscope

如果我在 iOS4 上,不使用特定的处理程序,并且需要相同的更新间隔,那么使用设备运动而不是特定的加速度计、陀螺仪和磁力计更新有什么区别?

如果我使用设备 Action 时这 3 个功能中的一个在设备上不可用会怎样?

我的意思是,如果其中一个功能不可用,将返回什么 deviceMotionAvailable?

最佳答案

在 iOS 4 中,磁力计尚未包含在设备运动 API 中,而是由 CLLocationManager 处理(这在 iOS 5 中发生了变化)。因此,如果您有陀螺仪和加速度计,deviceMotioAvailable 将独立于磁力计返回 true。另一方面,如果陀螺仪丢失,您将始终得到 false,您需要继续使用 accelerometerData

由于 Device Motion 对两个传感器都有一个时间戳,因此您将获得两个传感器的可靠插值。否则 Device Motion 将无法进行传感器融合,这是首选方式的主要优势。

您不能依赖 CLLocationManager 的固定频率。 didUpdateHeading 在系统“认为”应该调用时调用。要使 CLLocationManager 和 CMDeviceMotion 之间的不同时间坐标标准化,您可以查看 NSTimeInterval to unix timestamp

关于iphone - 使用设备运动代替加速度计、陀螺仪和磁力计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784241/

相关文章:

objective-c - UISeachBar 检测用户何时按下搜索按钮

iphone - iOS使用数组添加到UITableView

ios - 将音频从 Watch 流式传输到 iPhone 以使用 SFSpeechRecognizer

ios - iOS View 上的自定义 subview 有空 socket

cocoa-touch - UIEvent 传递到 -[UIView hitTest :]

ios - 将 UIImageView 与自动布局对齐

iphone - 减小 UITableViewCell 宽度并将自定义按钮放在左侧

iphone - UIButton 不执行电话调用

ios - 使用相机时从不调用 Affdex AFDXDetector 委托(delegate)函数?

iphone - 创建两个xibs,一个用于iPhone,一个用于iPad