加速度センサで画像を動かす 訂正(UIAccelerometerではなくCore Motionを使用して検知)

先日の日記にありがたいことにコメントを頂きまして、
間違いをご指摘いただけました。

iOS5ではUIAccelerometerはdeprecatedされていて
Core Motionを使用して加速度センサを検知するのが正しい方法

とのことで、何も知りませんでした。
ご指摘してくださった方ありがとうございます。

iOS5 – Core Motion の利用による加速度の検出
http://d.hatena.ne.jp/tomofumikitano/20120206/1328545315

上記iOS5ではUIAccelerometerのdelegateでは検出できないとのことで

モーションイベントサンプル3 - CoreMotionを使った各種センサーの利用
http://uqtimes.blogspot.jp/2012/05/3-coremotion.html

以下のように使用するみたいです。

まず、
CoreMotion.frameworkをプロジェクトに追加。


そしてインスタンスの生成、センサーの利用開始

    // インスタンスの生成
    CMMotionManager *manager = [[CMMotionManager alloc] init];
    
    // 現在、加速度センサー無しのデバイスは存在しないが念のための確認
    if (manager.accelerometerAvailable) {
        // センサーの更新間隔の指定
        manager.accelerometerUpdateInterval = 0.01;  // 100Hz
        
        // ハンドラを指定
        CMAccelerometerHandler handler = ^(CMAccelerometerData *data, NSError *error) {
            double timestamp = data.timestamp;  // 更新時刻
            double x = data.acceleration.x;  // X軸: 加速度G
            double y = data.acceleration.y;  // Y軸: 加速度G
            double z = data.acceleration.z;  // Z軸: 加速度G
            
            // x, y, zの値を必要に応じて、ローパス・ハイパスなどのフィルタを適用する
        };
        
        // センサーの利用開始
        [manager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:handler];
        
        // (不必要になったら)センサーの停止
        if (manager.accelerometerActive) {
            [manager stopAccelerometerUpdates];
        }
    }