首先导入CoreMotion框架,新建两个label
#import
@interface ViewController : UIViewController{
CMMotionManager *_manager;
NSTimer *_timer;
}
//动作管理器指针
@property(nonatomic,retain)CMMotionManager *manager;
@property (retain, nonatomic) IBOutlet UILabel *accelerometerLabel;
@property (retain, nonatomic) IBOutlet UILabel *gyroscopeLabel;
@property(nonatomic,retain)NSTimer *timer;
@end
//
self.manager = [[CMMotionManager alloc] init];
//添加一个队列线程
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//判断是否可以加速
if (_manager.accelerometerAvailable == YES) {
//更新速度
_manager.accelerometerUpdateInter
val = 0.1;
//block
[_manager startAccelerometerUpdate
sToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
NSString *acceleterString;
if (error) {
[_manager stopAccelerometerUpdates
];
acceleterString = [NSString stringWithFormat:@"acceletererror:%@",error];
}else{
//重力加速度三维分量
acceleterString = [NSString stringWithFormat:@"%f\n,%f\n,%f\n",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z];
//跳转到主线程
[self.accelerometerLabel performSelectorOnMainThr
ead:@selector(setText:) withObject:acceleterString waitUntilDone:NO];
}
}];
}else{
self.accelerometerLabel.text = @"设备没有加速器";
}
//重力感应
if (_manager.gyroAvailable == YES) {
_manager.gyroUpdateInterval = 1.0;
[_manager startGyroUpdatesToQueue:queue withHandler:^(CMGyroData *gyroData, NSError *error) {
NSString *gryString;
if (error) {
//停止重力感应更新
[_manager stopGyroUpdates];
gryString = [NSString stringWithFormat:@"gryerror:%@",error];
}else{
gryString = [NSString stringWithFormat:@"%f\n,%f\n,%f\n",gyroData.rotationRate.x,gyroData.rotationRate.y,gyroData.rotationRate.z];
[self.gyroscopeLabel performSelectorOnMainThr
ead:@selector(setText:) withObject:gryString waitUntilDone:NO];
}
}];
}
//方法2
self.manager = [[CMMotionManager alloc] init];
if (_manager.accelerometerAvailable == YES) {
_manager.accelerometerUpdateInter
val = 1.0;
[_manager startAccelerometerUpdate
s];
}else{
self.accelerometerLabel.text = @"设备不支持加速计";
}
if (_manager.gyroAvailable == YES) {
_manager.gyroUpdateInterval = 2.0;
[_manager startGyroUpdates];
}else{
self.gyroscopeLabel.text = @"设备不支持重力感应";
}
//在viewWillAppear里设定一个定时器用于更新
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.timer = [NSTimer scheduledTimerWithTimeIn
terval:1.0f target:self selector:@selector(updateDisPlay) userInfo:nil repeats:YES];
}
- (void)updateDisPlay{
if (_manager.accelerometerAvailable == YES) {
CMAccelerometerData *accelerometerData = _manager.accelerometerData;
//重力加速度三维分量
self.accelerometerLabel.text = [NSString stringWithFormat:@"%f\n,%f\n,%f\n",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z];
}
//是否有重力感应
if (_manager.gyroAvailable == YES) {
CMGyroData *gyroData = _manager.gyroData;
self.gyroscopeLabel.text = [NSString stringWithFormat:@"%f\n,%f\n,%f\n",gyroData.rotationRate.x,gyroData.rotationRate.y,gyroData.rotationRate.z];
}
}
#import
@interface ViewController : UIViewController{
}
//动作管理器指针
@property(nonatomic,retain)CMMotionManager *manager;
@property (retain, nonatomic) IBOutlet UILabel *accelerometerLabel;
@property (retain, nonatomic) IBOutlet UILabel *gyroscopeLabel;
@property(nonatomic,retain)NSTimer *timer;
@end
//
//方法2
//在viewWillAppear里设定一个定时器用于更新
- (void)viewWillAppear:(BOOL)animated{
}
- (void)updateDisPlay{
}