iOS学习,加速度传感器

来源:互联网 发布:linux 打印内核 编辑:程序博客网 时间:2024/05/01 03:07

写在前面

刚开始学习iOS开发,在此过程中学习到很多知识点,写这些的目的,首先是为了给像我一样的小白提供一些参考资料,其次是对自己所学知识的一个总结与记录。

准备工作

需要导入一些东西:
1.导入框架:CoreMotion.framework
2.在需要使用加速度传感器的viewController中导入头文件:

#import  <CoreMotion/CoreMotion.h>


正式开始

先上代码,后面分析:
代码,来!!!!!

#import "ViewController.h"

#import  <CoreMotion/CoreMotion.h>


@interface ViewController () {

    CMMotionManager *motionManager;

}


@end


@implementation ViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

    

    [selfinitCoreMotionA];

}


#pragma mark - CoreMotion

#pragma mark 初始化

- (void)initCoreMotionA

{

    /**

     *  1.初始化加速度传感器

     *  2.判断是否可用

     *   3.设定更新频率

     *  4.启动更新

     */

    

    //初始化传感器,不可直接实例化,要弄为成员变量。

    motionManager = [[CMMotionManageralloc]init];

    

    //判断传感器是否可以使用

    

    if ([motionManagerisAccelerometerAvailable]) {//传感器可用

        

        //设置采样频率

        [motionManagersetAccelerometerUpdateInterval:1 /3];

        

        //启动更新

        [motionManagerstartAccelerometerUpdatesToQueue:[NSOperationQueuemainQueue] withHandler:^(CMAccelerometerData *accelerometerData,NSError *error) {

            

            //更新UI

            self.xLabel.text = [NSStringstringWithFormat:@"%.3f",accelerometerData.acceleration.x];

            self.yLabel.text = [NSStringstringWithFormat:@"%.3f",accelerometerData.acceleration.y];

        }];

        

    } else {//传感器不可用

        NSLog(@"传感器不可用");

    }

}


@end



PS:我才发现直接从xcode直接粘贴过来就会有颜色,真棒啊!

分析

其实代码上就有主要注释;
主要步骤有4:

    /**

     *  1.初始化加速度传感器

     *  2.判断是否可用

     *   3.设定更新频率

     *  4.启动更新

     */

-------------------------------------------------------------------------

    //1.初始化传感器,不可直接实例化,要弄为成员变量。

    motionManager = [[CMMotionManageralloc]init];

这个不能直接实例化,需要弄成成员变量,不然不好用,没效果。不清楚原因,还请知道的人解答。

  //2.判断传感器是否可以使用

  if ([motionManagerisAccelerometerAvailable]) {//传感器可用


    } else {//传感器不可用

        NSLog(@"传感器不可用");

    }

 //3.设置采样频率

        [motionManagersetAccelerometerUpdateInterval:1 /3];

 //4.启动更新

        [motionManagerstartAccelerometerUpdatesToQueue:[NSOperationQueuemainQueue] withHandler:^(CMAccelerometerData *accelerometerData,NSError *error) {

        }];


直接是Block,在里面完成更新UI等工作。

PS:传感器自动工作于后台线程。

0 0
原创粉丝点击