- 导入Core Motion框架:
在需要使用Core Motion的文件中,导入Core Motion框架头文件。
#import <CoreMotion/CoreMotion.h>
- 创建CMMotionManager实例:
在你的类中创建一个
CMMotionManager
实例变量,并在合适的地方(如viewDidLoad
)初始化它。
@property (nonatomic, strong) CMMotionManager *motionManager;
- (void)viewDidLoad {
[super viewDidLoad];
self.motionManager = [[CMMotionManager alloc] init];
}
- 检查设备是否支持加速度计:
在开始获取数据前,检查设备是否支持加速度计。
if (self.motionManager.isAccelerometerAvailable) {
// 设备支持加速度计,可继续下一步
} else {
NSLog(@"设备不支持加速度计");
return;
}
- 配置加速度计数据更新频率:
设置加速度计数据的更新频率。
self.motionManager.accelerometerUpdateInterval = 0.1; // 每0.1秒更新一次
- 开始获取加速度计数据:
使用
startAccelerometerUpdatesToQueue:withHandler:
方法开始获取加速度计数据。
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
if (accelerometerData) {
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"X: %f, Y: %f, Z: %f", acceleration.x, acceleration.y, acceleration.z);
} else if (error) {
NSLog(@"获取加速度计数据出错: %@", error);
}
}];
- 停止获取加速度计数据:
当不再需要数据时,停止获取。例如,在视图控制器将要消失时。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.motionManager stopAccelerometerUpdates];
}