加速度センサで画像を動かす 訂正(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]; } }