1,导入
#import <CoreMotion/CoreMotion.h>
2,并声明为全局变量(或者属性),
CMMotionManager *_manager;
3,然后在初始化的时候生成,并设置更新频率,启动更新
_manager = [[CMMotionManager alloc]init];
_manager.accelerometerUpdateInterval=1.0/60.0;
//[_managerstartAccelerometerUpdates];
[_manager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
// if (_manager.accelerometerData.acceleration.x>3) {
if (_max__x> _manager.accelerometerData.acceleration.x) {
_max__x=_manager.accelerometerData.acceleration.x;
laber1.text=[NSString stringWithFormat:@" x =%.2f",_max__x];
}
if (_max__y> _manager.accelerometerData.acceleration.y) {
_max__y=_manager.accelerometerData.acceleration.y;
laber2.text=[NSString stringWithFormat:@" y =%.2f",_max__y];
}
if (_max__z> _manager.accelerometerData.acceleration.z) {
_max__z=_manager.accelerometerData.acceleration.z;
laber3.text=[NSString stringWithFormat:@" z = %.2f",_max__z];
}
// }
}];
4,启动一个定时器,时刻检测振动状态
[NSTimer scheduledTimerWithTimeInterval:1.0/60.0target:selfselector:@selector(shackAction) userInfo:nilrepeats:YES];
5,在定时器方法里,时刻判断加速计的x,y,z的便宜,超过一定程度即为筛子振动。
if (fabsf(_manager.accelerometerData.acceleration.x) > 2.0 || fabsf(_manager.accelerometerData.acceleration.y) > 2.0 ||fabsf(_manager.accelerometerData.acceleration.z) > 2.0)
6,当你不需要的时候,记得停止更新。
[_manager stopAccelerometerUpdates];
7,这样即可解决。