如何使这个CoreMotion代码适用于视网膜iPod touch设备?

时间:2012-08-13 11:34:17

标签: iphone ios accelerometer ipod-touch core-motion

我开发了一个小应用程序,它使用CoreMotion获取倾斜信息。

但它不适用于iPod touch。我在iOS 5.1的第一个视网膜显示器iPod touch上进行了测试。 gyroAvailable属性返回YES,所以我假设这个iPod确实有陀螺仪。

此代码在iPhone 4上运行良好:

CMMotionManager *mm = [[CMMotionManager alloc] init];
self.motionManager = mm;
[motionManager setDeviceMotionUpdateInterval:0.05];

CMDeviceMotionHandler motionHandler = ^(CMDeviceMotion *motion, NSError *error) {
    [self handleMotion:motion error:error];
};

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical toQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];

startDeviceMotionUpdatesUsingReferenceFrame似乎是罪魁祸首,但我无法从文档中看出这种方法不适用于没有陀螺仪的设备。

我只需要精确输出用户在纵向模式下向左或向右倾斜设备的程度。

我有哪些替代方案?

1 个答案:

答案 0 :(得分:2)

如果您想使用iPod,请使用'CMAttitudeReferenceFrameXArbitraryZVertical'。 因为iPad没有磁力计。