XZ_CoreMotion框架获取数据的两种方式

CoreMotion(CM)跟运动相关的都保存在这个框架中,使用时需要引入  #import  <CoreMotion/CoreMotion.h>头文件
CoreMotion的框架结构: CoreMotionManager、CMAccelerometerData、CMDeviceMotion、CMGyroData.
Push:实时采集所有数据(采集频率高) ,UIAccelerometer 方式是 push 方式
Pull:在有需要的时候,再主动去采集数据

Push使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.设置采样间隔
4.开始采样(采样到数据就会调用handler,handler会在queue中执行)
// 1. 创建运动管理者对象
    self . mgr = [[ CMMotionManager alloc ] init ];
   
// 2. 判断加速计是否可用(最好判断)
   
if ( self . mgr . isAccelerometerAvailable ) {
          
// 3. 设置采样间隔
       
self . mgr . accelerometerUpdateInterval = 1 / 30.0 ;
         
// 4. 开始采样方式一: Push( 采集加速度数据 )
       
// (采样到数据就会调用 handler handler 会在 queue 中执行)
        [
self . mgr startAccelerometerUpdatesToQueue :[ NSOperationQueue mainQueue ] withHandler :^( CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
           
NSLog ( @"%f,%f,%f" ,accelerometerData. acceleration . x ,accelerometerData. acceleration . y ,accelerometerData. acceleration . z );
           
// 如果在 Block 中要执行较耗时的操作 ,queue 最好不是主队列,会阻塞主线程
           
// 如果在 block 中要刷新 UI 界面 ,queue 最好是主队列
           
        }];
    }
else {
       
NSLog ( @" 加速计不可用 " );
    }
Pull使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.开始采样
  // 使用步骤:
   
// 1. 创建运动管理者对象
   
self . mgr = [[ CMMotionManager alloc ] init ];
   
// 2. 判断加速计是否可用(最好判断)
   if (self.mgr.isAccelerometerAvailable) {
        // 3.开始采样Pull
        [ self pull ];
    }
else {
       
NSLog ( @" 加速计不可用 " );
    }
   // pull:在有需要的时候,再主动去采集数据
- ( void )pull {
    [
self . mgr startAccelerometerUpdates ];
}
- ( void )touchesBegan:( NSSet < UITouch *> *)touches withEvent:( UIEvent *)event {
   
CMAcceleration acceleration = self . mgr . accelerometerData . acceleration ;
    
NSLog ( @"%f,%f,%f" ,acceleration. x ,acceleration. y ,acceleration. z );
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值