ios - 如何使用coremotion计算手机的前后运动

标签 ios objective-c core-motion

我想知道是否有一种方法或如何计算设备的前后运动。

例如,如果您将手机放在平面上并在 y 轴上来回插入它,它会给出 y 轴的读数。如果您旋转或转动手机,它可能会开始在 y 轴上读数x轴等

我正在尝试为划船者制作一个划水计算器,他们只需将他们的设备连接到船的任何部分,我想知道的是如何处理设备可以放置在任何角度或旋转的事实。 .

最佳答案

您可以使用 core motion 的 device motion 来实现。

@property (strong,nonatomic,readonly) CMMotionManager *motionManager;



// Motion Manager setup
    if(!_motionManager)
    {
        _motionManager = [[CMMotionManager alloc] init];
        _motionManager.deviceMotionUpdateInterval = 1.0/70.0;

        [_motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];

        NSLog(@"AppDelegate: Motion Manager created and started.");
    }

注意我是如何设置引用系的。

然后你可以通过做得到读数

_motionManager.deviceMotion.userAcceleration

我不记得这些读数是在设备坐标还是全局坐标中,但如果它们是在全局坐标中,您可以使用 attitute(即引用之前指定的真磁北的给定点的设备方向匹配任何同一点的加速度)将设备坐标转换为世界坐标。

关于ios - 如何使用coremotion计算手机的前后运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23420300/

相关文章:

ios - AutoLayout,无法同时满足约束

ios - 访问 Storyboard中 UITableViewController 中定义的原型(prototype)单元以在代码中实例化该类

iphone - 模拟iphone锁屏

ios - 从Apple Watch(而不是iPhone)获取加速度计和陀螺仪数据?

ios - UITableView 索引超出范围错误

ios - 从一个 UIButton 创建多个 segues 到同一个 View Controller 或另一个

html - iOS- 拉取 HTML id 以在 UIImageView 中显示图像

ios - 玩家坠落时 Spritekit 与平台碰撞

iphone - UIPickerView根据数据显示数据

iphone - 一段时间后性能会下降,尤其是当设备处于休息状态时