加速计的作用
- 用于检测设备的运动(比如摇晃)
- 摇一摇
- 计步器
UIAccelerometer的使用步骤
- 获得单例对象
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
- 设置代理
accelerometer.delegate = self;
- 设置采样间隔
accelerometer.updateInterval = 1.0/30.0; // 1秒钟采样30次
- 实现代理方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
// acceleration中的x、y、z三个属性分别代表每个轴上的加速度
Core Motion的使用步骤(push)
- 创建运动管理者对象
CMMotionManager *mgr = [[CMMotionManager alloc] init];
- 判断加速计是否可用(最好判断)
if (mgr.isAccelerometerAvailable) {
// 加速计可用
}
- 设置采样间隔
mgr.accelerometerUpdateInterval = 1.0/30.0; // 1秒钟采样30次
- 开始采样(采样到数据就会调用handler,handler会在queue中执行)
- (void)startAccelerometerUpdatesToQueue:(NSOperationQueue *)queue withHandler:(CMAccelerometerHandler)handler;
Core Motion的使用步骤(pull)
- 创建运动管理者对象
CMMotionManager *mgr = [[CMMotionManager alloc] init];
- 判断加速计是否可用(最好判断)
if (mgr.isAccelerometerAvailable) { // 加速计可用 }
- 开始采样
- (void)startAccelerometerUpdates;
- 在需要的时候采集加速度数据
CMAcceleration acc = mgr.accelerometerData.acceleration;
NSLog(@"%f, %f, %f", acc.x, acc.y, acc.z);