1

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原因のようですが、ドキュメントから、この方法がジャイロのないデバイスでは機能しないことがわかりませんでした。

私が必要とするのは、ユーザーがポートレート モードでデバイスを左または右にどれだけ傾けたかを正確に出力することだけです。

どのような代替手段がありますか?

4

1 に答える 1

2

iPod を使用する場合は、'CMAttitudeReferenceFrameXArbitraryZVertical' を使用します。iPadには磁力計がないからです。

于 2012-10-14T17:02:54.977 に答える