美文网首页iOS开发攻城狮的集散地iOS DeveloperiOS 知识收集
使用CMMotionManager获取加速度值需要注意的

使用CMMotionManager获取加速度值需要注意的

作者: 码农的思念 | 来源:发表于2016-11-24 13:20 被阅读196次

    Mark......


     代码如下:

    NSOperationQueue*queue = [[NSOperationQueuealloc]init];

    [self.motionManagerstartAccelerometerUpdatesToQueue:queuewithHandler:^(CMAccelerometerData*_NullableaccelerometerData,NSError*_Nullableerror)

    {

    if(error)

    {

    [self.motionManagerstopAccelerometerUpdates];

    [KGStatusBarshowSuccessWithStatus:[NSStringstringWithFormat:@"加速计遇到错误:%@!",error]];

    }

    else

    {

    doubleacc_X = accelerometerData.acceleration.x;

    doubleacc_Y = accelerometerData.acceleration.y;

    doubleacc_Z = accelerometerData.acceleration.z;

    dispatch_async(dispatch_get_main_queue(), ^{

    _accelerate_X.text= [NSStringstringWithFormat:@"%.2f",acc_X];

    _accelerate_Y.text= [NSStringstringWithFormat:@"%.2f",acc_Y];

    _accelerate_Z.text= [NSStringstringWithFormat:@"%.2f",acc_Z];

    });

    }}];

    Core Motion在iOS4.0主要负责三种数据:加速度值,陀螺仪值,设备motion值。实际上,这个设备motion值就是通过加速度和旋转速度进行 fusing变换算出来的,基本原理后面会介绍。Core Motion在系统中以单独的后台线程的方式去获得原始数据,并同时执行一些motion算法来提取更多的信息,然后呈献给应用层做进一步处理。Core Motion框架包含有一个专门的Manager类,CMMotionManager,然后由这个manager去管理三种和运动相关的数据封装类,而 且,这些类都是CMLogItem类的子类,所以相关的motion数据都可以和发生的时间信息一起保存到对应文件中,有了时间戳,两个相邻数据之间的实 际更新时间就很容易得到了。这个东西是非常有用的,比如有些时候,你得到的是50Hz的采样数据,但希望知道的是每一秒加速度的平均值。

    Quote: Core Motion在系统中以单独的后台线程的方式去获得原始数据

    So. 要在dispatch_get_main_queue中完成对UI的刷新

    相关文章

      网友评论

        本文标题:使用CMMotionManager获取加速度值需要注意的

        本文链接:https://www.haomeiwen.com/subject/ndmppttx.html