我是磁力儀,我可以得知iOS的X、Y、Z軸的磁感應強度
第2步:設置畫面與IBOutlet
- 如入6個UILabel標籤,用以表示X、Y、Z軸的標題與值
- 為表示X、Y、Z值的UILabel標籤設置Outlet,分別是xLabel、yLabel與zLabel
第3步:加入CoreMotion.framework至專案中
- 選取TARGETS中的預設Target - Magnetometer,選Build Phases後按"+"號
- 搜尋CoreMotion,在選取framework後按Add
第4步:透過CMotionManager取得磁力儀資料
- 於ViewController.h檔中,引用CoreMotion.h
- 並加入motionManager實體變數,以存放後續取得的CMMotionManager物件
ViewController.h
#import <UIKit/UIKit.h>
#import <CoreMotion/CoreMotion.h>
@interface ViewController : UIViewController
{
CMMotionManager *motionManager;
}
@property (strong, nonatomic) IBOutlet UILabel *xLabel;
@property (strong, nonatomic) IBOutlet UILabel *yLabel;
@property (strong, nonatomic) IBOutlet UILabel *zLabel;
@end
- ViewController.m檔中的viewDidLoad方法中,透過CMotionManager取得磁力儀的資料
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
//建立CMMotionManager物件
motionManager = [[CMMotionManager alloc] init];
//取得目前的執行緒駐列
NSOperationQueue * queue = [NSOperationQueue currentQueue];
//透過startMagnetometerUpdatesToQueue開始取得XYZ軸的磁力感應強度,
//參數1帶入queue,以在此執行緒駐列執行取得資料的block,
//參數2即為一個block,其中將取得的XYZ軸的磁力感應強度資料輸出至xLabel、yLabel與zLabel上顯示
[motionManager startMagnetometerUpdatesToQueue:queue
withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
self.xLabel.text =
[NSString stringWithFormat:@"%f", magnetometerData.magneticField.x];
self.yLabel.text =
[NSString stringWithFormat:@"%f", magnetometerData.magneticField.y];
self.zLabel.text =
[NSString stringWithFormat:@"%f", magnetometerData.magneticField.z];
}];
}
第5步:執行
- 以實機執行,數據會顯示XYZ軸的磁力感應強度,其單位為micro tesla
檔案連結:Magnetometer.zip