まず、加速度センサーを利用するために、UIAccelerometerDelegate を定義します。これで、UIAccelerometer のイベントを認識するようになります。 IBOutlet は、view 上にx,y,zの値を表示させるためのラベルと、デバイスが振られた時に、現在時刻を表示するラベルです。 doubel の行は、x,y,z の値を扱うための変数です。 Accelerometer.h を保存してください。 次に、AccelerometerViewController.xib をダブルクリックし、Interface Builder を起動します。 以下の画像のようになるように、ラベルを配置し、Outlet を接続してください。 完了したら、保存して Interface Builder を終了します。 最後に、Accelerometer.m を開き、viewDidLoad メソッドと accelerometer メソッドを以下のように設定してください。#import <UIKit/UIKit.h>
@interface AccelerometerViewController : UIViewController <UIAccelerometerDelegate> {
IBOutlet UILabel *xLabel;
IBOutlet UILabel *yLabel;
IBOutlet UILabel *zLabel;
IBOutlet UILabel *clockLabel;
double accelX, accelY, accelZ;
}
@end
上記のコードは、viewDidLoad 内で、updateInterval で読み取り間隔を設定しています。 accelerometer 内の acceleration.x によって、x軸の加速度の値を取得し、ラベルに表示させています。取得した各値をそれぞれラベルに表示させています。 さらに、動きを確認するために、NSLogもセットしています。 最後の if文は、acceleration.y が、「-0.5」以上になれば、clockLabel に現在時刻がセットされるようにしています。 これで保存し、デバイス上で、ビルド&実行することで、動作確認出来ます。 現在時刻の取得 http://iphone-tora.sakura.ne.jp/nsdate.html 加速度センサー http://d.hatena.ne.jp/moto_maka/20090510/1241898972 http://japan.internet.com/developer/20100803/26.html– (void)viewDidLoad {
UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;
accel.updateInterval = 1.0f/10.0f;
[super viewDidLoad];
}
– (void)accelerometer:(UIAccelerometer *)acel
didAccelerate:(UIAcceleration *)acceleration {
accelX = acceleration.x;
accelY = acceleration.y;
accelZ = acceleration.z;
xLabel.text =[NSString stringWithFormat:@”x: %g”, acceleration.x];
yLabel.text = [NSString stringWithFormat:@”y: %g”, acceleration.y];
zLabel.text = [NSString stringWithFormat:@”z: %g”, acceleration.z];
NSLog(@”x: %g”, acceleration.x);
NSLog(@”y: %g”, acceleration.y);
NSLog(@”z: %g”, acceleration.z);
if (acceleration.y >= –0.5) {
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @”yyyy/MM/dd HH:mm:ss”;
NSString *str = [df stringFromDate:[NSDate date]];
clockLabel.text = str;
}
}
この投稿へのコメント
コメントはまだありません。