fb_license

技術標籤

@selector (1) 初使化區塊 (1) 物件 (1) 物件導向 (2) 型別 (4) 封裝 (1) 流程控制 (1) 陣列 (3) 推論型別 (2) 實機測試 (1) 蓋索林(gasolin) (1) 模組 (1) 憑證 (1) 轉型 (1) 羅康鴻 (121) 類別 (1) 變數 (5) Accelerometer (1) ActiveRecord (1) Activity (1) AFNetworking (1) alloc (1) Android (3) Animation (1) App (1) App ID (1) APP上傳 (1) ASP.NET (1) AVAudioPlayer (1) block (1) C# (2) class (1) CLLocationManager (1) CLLocationManagerDelegate (1) CMMotionManager (4) Controller (1) delegate (1) DELETE語法 (1) Device Motion資料 (1) Dialog (1) DropDownList (1) dynamic language (2) Facebook SDK (9) FBRequest (5) FBRequestConnection (2) FMDB (1) Gesture Recognizers (6) GROUP BY (2) Gyro (1) HAVING (1) IBAction (1) IBOutlet (1) id (3) inheritance (1) init (1) Insert (1) instance variable (1) Interface Builder (1) iOS (70) iOS idea (7) iOS Introduction (1) Layout (1) Magnetometer (1) Menu (2) Method (2) MKMapView (1) MKPointAnnotation (1) MS SQL (5) Nil (1) NSArray (1) NSDictionary (1) NSError (1) NSFileManager & .plist (1) NSMutableArray (1) NSMutableDictionary (1) NSNotificationCenter (1) NULL (1) object (2) Objective-C (16) Objective-C idea (1) ORDER BY (1) Parameter (1) property (1) protocol (2) Provisioning (1) Proximate Sensor (1) Q and A (2) R類別 (1) Rails (9) RESTful SOA (9) Ruby (8) Scene (1) SEELECT (1) Segue (2) SEL (1) SELECT語法 (1) Shake (1) Simulator (1) SOA (8) SQL (6) SQL Server (5) SQL函數 (1) SQL彙總函數 SQL (1) SQLite (1) Storyboard (1) Style (1) Swift (1) Table (1) target & action (1) Theme (1) Toast (1) TRUNCATE TABLE語法 (1) UIActionSheet (1) UIActionSheetDelegate (1) UIActivityIndicatorView (1) UIAlertView (1) UIBarButtonItem (1) UIButton (1) UICollectionView (1) UICollectionViewDataSource (1) UIControl (9) UIDatePicker (1) UIImage (1) UIImagePickerController (2) UIImagePickerControllerDelegate (2) UIImageView (1) UILabel (1) UILongPressGestureRecognizer (1) UINavigationController (2) UIPanGestureRecognizer (1) UIPinchGestureRecognizer (1) UIProgressView (1) UIResponder (1) UIRotationGestureRecognizer (1) UISegmentedControl (1) UISlider (1) UIStepper (1) UISwipeGestureRecognizer (1) UISwitch (1) UITabBarController (1) UITableView (1) UITableViewDataSource (1) UITapGestureRecognizer (1) UITextField (1) UITextFieldDelegate (1) UITextView (2) UITextViewDelegate (1) UIToolBar (1) UIView (8) UIWebView (1) UPDATE語法 (1) var (2) VB.NET (7) View (4) WHERE子句 (1) XML (1)

2014/06/15

[iOS] Device Motion資料


我是Device Motion資料,我由加速器、陀螺儀和磁力儀等3個資訊組合而成,用以表示姿勢、重力方向、加速器資料、磁場資料,其中最重要的姿勢表示XYZ三軸固定旋轉的狀況,分別為pitch、roll、yaw





Device Motion資料包含姿勢、重力方向、加速器資料、磁場資料等資料,分別對應的屬性為attitude、gravity、userAcceleration、rotationRate與magneticField。其中姿勢attitude含有3個屬性pitch、roll與yaw,用以表示XYZ軸固定後旋轉的狀況。






第1步:建立一個名為"DeviceMotion"專案。


第2步:設置畫面與IBOutlet
  • 如入6個UILabel標籤,用以表示X、Y、Z軸的標題與值
  • 為表示X、Y、Z值的UILabel標籤設置Outlet,分別是xLabel、yLabel與zLabel


第3步:加入CoreMotion.framework至專案中
  • 選取TARGETS中的預設Target - DeviceMotion,選Build Phases後按"+"號
  • 搜尋CoreMotion,在選取framework後按Add



第4步:透過CMotionManager取得Device Motion資料
  • 於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取得Device Motion資料
ViewController.m
- (void)viewDidLoad { [super viewDidLoad]; //建立CMMotionManager物件 motionManager = [[CMMotionManager alloc] init]; //取得目前的執行緒駐列 NSOperationQueue * queue = [NSOperationQueue currentQueue]; //透過startDeviceMotionUpdatesToQueue開始取得XYZ軸的DeviceMotion, //參數1帶入queue,以在此執行緒駐列執行取得資料的block, //參數2即為一個block,其中將取得的XYZ軸固定後的旋轉弧度值pitch、roll、yaw [motionManager startDeviceMotionUpdatesToQueue:queue withHandler:^(CMDeviceMotion *motion, NSError *error) { //在此透過公式:弧度 x 180 / 兀, //將弧度轉為角度 float pitch = motion.attitude.pitch * 180 / M_PI; float roll = motion.attitude.roll * 180 / M_PI; float yaw = motion.attitude.yaw * 180 / M_PI; self.xLabel.text = [NSString stringWithFormat:@"%2.0f", pitch]; self.yLabel.text = [NSString stringWithFormat:@"%2.0f", roll]; self.zLabel.text = [NSString stringWithFormat:@"%2.0f", yaw]; }]; }


第5步:執行
  • 以實機執行,分別可分別固定XYZ軸,然後轉動,以查看值的變化




檔案連結:DeviceMotion.zip