我开发了一个使用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
似乎是罪魁祸首,但我无法从文档中得知该方法不适用于没有陀螺仪的设备。我所需要的只是用户在纵向模式下向左或向右倾斜设备多少的精确输出。
我有什么选择?
最佳答案
如果要使用iPod,请使用“CMAttitudeReferenceFrameXArbitraryZVertical”。
因为iPad没有磁力计。
关于iphone - 如何使CoreMotion代码在视网膜iPod touch设备上工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11933491/