CoreMotion を使用して傾斜情報を取得する小さなアプリを開発しました。
ただし、iPod touch では機能しません。iOS 5.1 を搭載した最初の Retina ディスプレイ 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
原因のようですが、ドキュメントから、この方法がジャイロのないデバイスでは機能しないことがわかりませんでした。
私が必要とするのは、ユーザーがポートレート モードでデバイスを左または右にどれだけ傾けたかを正確に出力することだけです。
どのような代替手段がありますか?