0

Objective-C で加速度計/ジャイロスコープを使用して、次のことを確認するにはどうすればよいですか?

A) iPhone がユーザーの顔の真正面に保持されている、つまり「上向き」に保持されている、または

B) iPhone が例えばテーブルの上に置かれている、つまりディスプレイが上を向いている。

4

4 に答える 4

5

UIAccelerationクラスリファレンスを読み、重力が常に存在することに注意する必要があります。したがって、iPhoneが垂直である(そして安定している)場合、y軸に沿って1gを読み取ります。テーブルの上で平らになったら、z軸に沿って1gを読み取ります

于 2012-11-28T13:35:25.963 に答える
1

最初に準拠してから<UIAccelerometerDelegate>、これらのメソッドを使用できます。

    #pragma mark --- Acceleration Start and Stop ----------------------------

    -(void)startMeasuringAcceleration{

        NSLog(@"Started Measuring Acceleration");

        [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1];//update interval (1s at moment)
        [[UIAccelerometer sharedAccelerometer] setDelegate:self];

    }

    -(void)stopMeasuringAcceleration{

        [[UIAccelerometer sharedAccelerometer] setDelegate:nil];

    }

    #pragma mark UIAcceleromete Delegate Methods-----------------------------------------------

    - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{

        NSLog(@"%f, %f, %f, %f", acceleration.x, acceleration.y, acceleration.z, acceleration.timestamp);

}

X、Y、Z を測定します。Z は画面上の軸で、Y は上から下、X は左から右です。

viewDidLoad 呼び出し[self startMeasuringAcceleration]で開始

それが役立つことを願っています。

于 2012-11-28T18:19:41.837 に答える
0

加速度計のz座標値を読み取る必要があります。

于 2012-11-28T13:35:17.757 に答える
0

UIAccelerometerDelegate は iOS 5.0 以降非推奨になっているため、使用しないでください。iOS 4 以降、これはセンサー フュージョンを使用するはるかに信頼性の高い Core Motion フレームワークに置き換えられました。

だから見てください:

accelerometer:didAccelerate: が IOS5 で非推奨になったのはなぜですか?

シンプルなiPhoneモーション検出

Apple ドキュメント内のリンクをたどります

于 2012-11-29T09:31:23.897 に答える