加速计使用
一、UIAccelerometer
使用步骤
//1).获得单例对象 UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer]; //2).设置代理 accelerometer.delegate = self; //3).设置采样间隔 accelerometer.updateInterval = 1.0/30.0;//1秒钟采样30次 //4).实现代理方法 //acceleration中的x、y、z三个属性分别代表每个轴上的加速度 -(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration;
二、Core Motion
在iOS4之前,加速计由UIAccelerometer类来负责采集数据。随着iPhone4的推出,加速计全面设计,并引入了陀螺仪。与Motion(运动)相关的编程称为了重头戏。
苹果特地在iOS4中增加了专门处理Motion的框架CoreMotion.framework。
1.获取数据的两种方式
1)push
实时采集所有数据(采集频率高)
2)pull
在有需要的时候,再主动去采集数据。
2.使用步骤
1)push
//1)创建运动管理者对象
CMMotionManager *mgr = [[CMMotionManageralloc] init];
//2)判断加速计是否可用(最好判断)
if (mgr.isAccelerometerAvailable) {
//加速计可用
}
//3)设置采样间隔
mgr.accelerometerUpdateInterval = 1.0/30.0; //1秒钟采样30次
//4)开始采样(采样到数据就会调用handler,handler会在queue中执行)
-(void)startAccelerometerUpdatesToQueue:(NSOperationQueue *)queue withHandler:(CMAccelerometerHandler)handler;
2)pull
//1)创建运动管理者对象 CMMotionManager *mgr = [[CMMotionManageralloc] init]; //2)判断加速计是否可用(最好判断) if (mgr.isAccelerometerAvailable) { //加速计可用 } //3)开始采样 -(void)startAccelerometerUpdates; //4)在需要的时候采集加速度数据 CMAcceleration acc = mgr.accelerometerData.acceleration; NSLog(@"x:%f,y:%f,z:%f", acc.x, acc.y, acc.z);