iPhoneの動作検知について、少し勉強しています。
今回は、「方位」の検知に関して備忘録を残します。
やること
端末の位置情報から方位を取得し、簡単なコンパスを作ります
※ただ矢印の画像が回転するだけのサンプルです。
ライブラリは「CoreLocation」を使用します。
実装
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
@property (strong, nonatomic) CLLocationManager *manager;
@property (weak, nonatomic) IBOutlet UIImageView *compass;
@property (weak, nonatomic) IBOutlet UITextField *magneticHeading;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.manager = [[CLLocationManager alloc] init];
self.manager.delegate = self;
self.manager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self.manager.distanceFilter = kCLDistanceFilterNone;
// 位置情報取得開始
[self.manager startUpdatingLocation];
// コンパスのアニメーション開始
[self.manager startUpdatingHeading];
}
//コンパスの矢印を回転させる(取得するたびに走る)
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)heading {
if (heading.headingAccuracy < 0) {
return;
}
CLLocationDirection theHeading = ((heading.trueHeading > 0) ? heading.trueHeading : heading.magneticHeading);
// 取得した方位をテキストフィールドに入力
self.magneticHeading.text = [NSString stringWithFormat:@"%f", theHeading];
// 取得した方位を元にイメージを回転
self.compass.transform = CGAffineTransformMakeRotation(-heading.magneticHeading * M_PI/180);
}
@end
##所感
改めてiPhoneの動作検知機能の素晴らしさに気づかされました。様々なモーションデータを数行で取得できるんですね。その他、「高度」「速度」なんかも取得できるみたいです。流行りの「顔認証」技術なども合わせて、今後も勉強を続けます。