16.3. Retrieving Accelerometer Data
Problem
You want to ask iOS to send accelerometer data to your application.
Solution
Use the startAccelerometerUpdatesToQueue:withHandler:
instance method of CMMotionManager
. Here
is the header file of a view controller that utilizes CMMotionManager
to get accelerometer
updates:
#import <UIKit/UIKit.h> #import <CoreMotion/CoreMotion.h> @interface Retrieving_Accelerometer_DataViewController : UIViewController @property (nonatomic, strong) CMMotionManager *motionManager; @end
We will now implement our view controller and take advantage of
the startAccelerometerUpdatesToQueue:withHandler:
method of the CMMotionManager
class:
#import "Retrieving_Accelerometer_DataViewController.h" @implementation Retrieving_Accelerometer_DataViewController @synthesize motionManager; - (void)viewDidLoad{ [super viewDidLoad]; self.motionManager = [[CMMotionManager alloc] init]; if ([self.motionManager isAccelerometerAvailable]){ NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { NSLog(@"X = %.04f, Y = %.04f, Z = %.04f", accelerometerData.acceleration.x, accelerometerData.acceleration.y, accelerometerData.acceleration.z); }]; } else { NSLog(@"Accelerometer is not available."); } } - (void)viewDidUnload{ [super viewDidUnload]; self.motionManager = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation :(UIInterfaceOrientation)interfaceOrientation{ ...
Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.