13

iOS でジャイロスコープ センサーを使用してアプリを作成することを学んでいます。加速度計の UIAcceleration/UIAccelerometer/UIAccelerometerDelegate に似たジャイロスコープを扱うクラスはありますか?

4

2 に答える 2

31

最初のインポートCoreMotionフレームワーク

#import <CoreMotion/CoreMotion.h>

    self.motionManager = [[CMMotionManager alloc] init];


    //Gyroscope
    if([self.motionManager isGyroAvailable])
    {
        /* Start the gyroscope if it is not active already */ 
        if([self.motionManager isGyroActive] == NO)
        {
            /* Update us 2 times a second */
            [self.motionManager setGyroUpdateInterval:1.0f / 2.0f];

            /* Add on a handler block object */

            /* Receive the gyroscope data on this block */
            [self.motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue]
             withHandler:^(CMGyroData *gyroData, NSError *error)
            {
                NSString *x = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.x];
                self.gyro_xaxis.text = x;

                NSString *y = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.y];
                self.gyro_yaxis.text = y;

                NSString *z = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.z];
                self.gyro_zaxis.text = z;
            }];
        }
    }
    else
    {
        NSLog(@"Gyroscope not Available!");
    }

コードが示すように、最初にモーションマネージャーのインスタンスを作成します。次に、デバイスがジャイロスコープをサポートしているかどうかを確認します。正常に終了しない場合は、ジャイロスコープの更新間隔を設定してから、登録してジャイロスコープから更新を取得します。これらの更新では、値を使用して何をしたいかのカスタムロジックを定義する必要があります。それはあなたが行ってもいいです...

于 2011-08-21T09:04:30.443 に答える
6

ジャイロスコープ データについては、CoreMotion を使用する必要があります。iOS のイベント処理ガイド の関連するセクションを読むことから始めます。ジャイロスコープ イベント データをカプセル化するCMGyroDataと、ジャイロスコープ イベントの登録に使用される CMMotionManagerの 2 つのクラスを使用する必要があります。

詳細については、この質問の選択された回答に記載されています: Apple ジャイロスコープのサンプル コード

于 2011-08-21T02:41:17.220 に答える