只能在真机上
加速计:检测设备的移动.在X.Y.Z上的移动
CoreMotion.framework
1.UIAcceleromiter的使用步骤(过时)
第一步:获取单例对象
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
第二步:设置代理
accelerometer.delegate = self;
第三步:设置采样间距
accelerometer.updateInterval = 1.0/30.0;
第四步:实现代理方法
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
}
2.第二种新的方法:
CoreMotion的使用步骤:
push
2-1.创建管理者
manger = [[CMMotionManager alloc]init];
2-2.判断加速计是否可用
if (manger.isAccelerometerActive) {
2-3.设置采样时间
manger.accelerometerUpdateInterval = 1/30.0;
(isAccelerometerActive是否在采集
accelerometerData采集到数据
startAccelerometerUpdates pull
startAccelerometerUpdates push
accelerometerUpdateInterval采样时间)
2-4.开始采集
[manger startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
//这个block是采集到数据时就会调用
if (error) return ;
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"%f %f %f",acceleration.x,acceleration.y,acceleration.z);
}];
}else{
NSLog(@"不可使用");
}
pull:
2-1.创建管理者
manger = [[CMMotionManager alloc]init];
2-2.判断加速计是否可用
if (manger.isAccelerometerActive) {
//可用
2-3.设置采样时间
manger.accelerometerUpdateInterval = 1/30.0;
2-4.开始采集
[manger startAccelerometerUpdates];
}else{
//不可用
NSLog(@"不可使用");
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
CMAcceleration acclerration = manger.accelerometerData.acceleration;
NSLog(@"%f %f %f",acclerration.x,acclerration.y,acclerration.z);
}
3.摇一摇的实现
.在AppDelegate里实现如下三个方法就可以
//摇一摇,开始摇晃的时候调用
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"%s",__func__);
}
//结束的时候调用
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"%s",__func__);
}
//被打断的时候调用
-(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"%s",__func__);
}