Oc MotionManager(运动管理器)~demo

Oc MotionManager(运动管理器)~demo_第1张图片
屏幕快照 2017-08-16 10.02.51.png
Oc MotionManager(运动管理器)~demo_第2张图片
20170814232054484.png

控制器1:

#import "ViewController.h"
#import //核心运动框架

@interface ViewController ()
{
    NSTimer *updateTimer;//更新时间
}
//运动管理器
@property (strong, nonatomic) CMMotionManager *motionManager;

//加速度计的标签
@property (strong, nonatomic) IBOutlet UILabel *accelerometerLabel;
//陀螺的标签
@property (strong, nonatomic) IBOutlet UILabel *gyroLabel;
//磁强计标签
@property (strong, nonatomic) IBOutlet UILabel *magnetometerLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 创建CMMotionManager对象
    self.motionManager = [[CMMotionManager alloc] init];
    // 如果CMMotionManager的支持获取加速度数据
    if (self.motionManager.accelerometerAvailable)
    {
        [self.motionManager startAccelerometerUpdates];
        
    }else{
        NSLog(@"该设备不支持获取加速度数据!");
    }
    // 如果CMMotionManager的支持获取陀螺仪数据
    if (self.motionManager.gyroAvailable)
    {
        [self.motionManager startGyroUpdates];
        
    }else{
        NSLog(@"该设备不支持获取陀螺仪数据!");
    }
    // 如果CMMotionManager的支持获取磁场数据
    if (self.motionManager.magnetometerAvailable)
    {
        [self.motionManager startMagnetometerUpdates];
        
    }else{
        NSLog(@"该设备不支持获取磁场数据!");
    }
}

#pragma mark - 视图将要显示的时候
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    // 启动定时器来周期性地轮询加速度、陀螺仪、磁场数据
    updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1
                                                   target:self selector:@selector(updateDisplay)
                                                 userInfo:nil repeats:YES];  // ②
    
}

#pragma mark - 定时器回调
- (void)updateDisplay
{
    // 如果CMMotionManager的加速度数据可用
    if (self.motionManager.accelerometerAvailable)
    {
        // 主动请求获取加速度数据
        CMAccelerometerData* accelerometerData = self.motionManager.accelerometerData;
        self.accelerometerLabel.text  = [NSString stringWithFormat:
                                         @"加速度为\n-----------\nX轴: %+.2f\nY轴: %+.2f\nZ轴: %+.2f",
                                         accelerometerData.acceleration.x,
                                         accelerometerData.acceleration.y,
                                         accelerometerData.acceleration.z];
    }
    // 如果CMMotionManager的陀螺仪数据可用
    if (self.motionManager.gyroAvailable)
    {
        // 主动请求获取陀螺仪数据
        CMGyroData* gyroData = self.motionManager.gyroData;
        self.gyroLabel.text = [NSString stringWithFormat:
                               @"绕各轴的转速为\n--------\nX轴: %+.2f\nY轴: %+.2f\nZ轴: %+.2f",
                               gyroData.rotationRate.x,
                               gyroData.rotationRate.y,
                               gyroData.rotationRate.z];
    }
    // 如果CMMotionManager的磁场数据可用
    if (self.motionManager.magnetometerAvailable)
    {
        // 主动请求获取磁场数据
        CMMagnetometerData* magnetometerData = self.motionManager.magnetometerData;
        self.magnetometerLabel.text =  [NSString stringWithFormat:
                                        @"磁场数据为\n--------\nX轴: %+.2f\nY轴: %+.2f\nZ轴: %+.2f",
                                        magnetometerData.magneticField .x,
                                        magnetometerData.magneticField .y,
                                        magnetometerData.magneticField .z];
    }
}

@end

你可能感兴趣的:(Oc MotionManager(运动管理器)~demo)