如何使用coremotion计算手机的来回运动

时间:2014-05-02 03:35:33

标签: ios objective-c core-motion

我想知道是否有方法或如何计算设备的来回运动。

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用核心动作的设备动作来完成此操作。

@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(那就是在给定点的设备方向,参考前面指定的真正磁北,匹配任何东西在同一点上的加速度)将设备坐标转换为世界坐标。