• iOS开发之加速计(二)CoreMotion


    iOS4之前,加速度计由UIAccelerometer类来负责采集数据。随着iPhone4的推出,加速度计全面升级,并引入了陀螺仪Motion(运动)相关的编程成为重头戏,苹果特地在iOS4中增加了专门处理Motion的框架-CoreMotion.framework

    Core Motion获取数据的两种方式

    • push 实时采集所有数据(采集频率高)
    • pull 在有需要的时候,再主动去采集数据

    我们该在我们的应用程序中使用哪种方式呢,苹果给了我们建议

     

    CoreMotion框架图

    学以致用

    看再多都不如自己亲自敲敲代码

    导入CoreMotion

    1 import CoreMotion

    设置成员变量

    1 var mgr:CMMotionManager!

    在ViewDidLoad中添加如下代码

    1 //创建CMMotionManager对象
    2         self.mgr = CMMotionManager()
    3         //判断是否可用
    4         if(mgr.accelerometerAvailable){
    5             //设置采样率
    6             mgr.accelerometerUpdateInterval = 1.0/60.0
    7             //开始采样
    8             mgr.startAccelerometerUpdates()
    9         }

    重写touchBegan,也可以在适当的时候采集,我们采集加速度数据

    1     override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    2         let acc:CMAcceleration = mgr.accelerometerData.acceleration
    3         println(acc.x,acc.y,acc.z)
    4     }

    运行程序点击屏幕,我们看到如下打印

    1 (-0.0323944091796875, -0.0291748046875, -0.929931640625)
    2 (-0.0157928466796875, -0.0283660888671875, -1.00149536132812)
    3 (-0.0167999267578125, -0.031402587890625, -0.99468994140625)

    这种方式称为主动拉取pull,比较省电,而且可以在适当的时候停止采样

    1 mgr.stopAccelerometerUpdates()

    我们再来看看被动Push方式

    1     //push方式
    2     func push(){
    3         self.mgr.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (data:CMAccelerometerDat        a!,error:NSError!) -> Void in
    4             //更新UI放主队列
    5             //耗时操作放其他队列
    6             let acc:CMAcceleration = data.acceleration
    7             println(acc.x,acc.y,acc.z)
    8         })
    9     }

    这种是通过闭包实时获取数据,所以比较费电。需要注意,如果要更新UI,要放主队列中。如果有耗时操作,放其他队列。有兴趣的读者可以用CoreMotion来实现上篇博文的小球程序。

    示例程序:https://github.com/dongbobo1992/iOSExamples

  • 相关阅读:
    第15次Scrum会议(10/27)【欢迎来怼】
    C语言--第三周作业评分和总结(5班)
    例行报告(20171020-20171025)
    MongoDB主从复制
    副本集
    MongoDB索引
    聚合框架
    MongoDB查询操作
    MongoDB增删改
    MongoDB基本安装
  • 原文地址:https://www.cnblogs.com/dongwenbo/p/4283867.html
Copyright © 2020-2023  润新知