第6章 加速计与陀螺仪
本章要点
- 加速计理论基础
- 陀螺仪理论基础
- 使用代码块来获取加速度数据、陀螺仪数据、磁场数据
- 使用CMMotionManager、CMDeviceMotion感知设备的移动
- iOS7新增的CMStepCounter
- iOS7新增的CMMotionActivityManager
iOS系统提供了加速计与陀螺仪支持,如果iOS设备提供了这些硬件支持,iOS即可通过CoreMotion框架提供的加速计来获取设备当前的加速度数据、陀螺仪数据、所处的磁场以及设备的方位等信息。
对于iOS应用开发者来说,开发传感器应用十分简单,CoreMotion框架的核心API是CMMotionManager,开发者只要创建一个CMMotionManager对象,接下来即可采用定时器周期性地从CMMotionManager对象获取加速度数据、陀螺仪数据等,也可采用基于代码块的方式来获取这些数据。
通过在iOS应用中添加加速计和陀螺仪,可以充分激发开发者、用户的想象力,开发出各种新奇的程序,比如电子罗盘、水平仪等。除此之外,还可以利用加速计和陀螺仪开发各种游戏,程序通过加速计和陀螺仪来感知用户动作,从而在游戏中提供相应的响应。
- 6.1 iOS支持的加速计和陀螺仪
加速计可以测出设备的加速度和重力,内置的陀螺仪还可以获取设备的转动,这些数据都通过CMMotionManager对象来获取。而且它采用完全类似的方式来获取设备的加速度数据、陀螺仪数据、磁场数据等。下面先简单介绍iOS加速计和陀螺仪的理论基础。
- 6.1.1 iOS加速计和陀螺仪的理论基础
iOS加速计是一个三轴加速计,这意味着它可以检测三维空间中的运动和重力,因此加速计不仅可以获取用户握持手机的方向(向上还是向下),而且可以感知手机正面向下还是向上。
加速计可以测量设备在特定方向的加速度(使用重力g作为单位),当加速度返回值为1.0时,表明设备在特定方向上感知到1g。
iOS设备的加速计所使用的三轴坐标系统如图6.1所示。
图6.1 加速计的三轴坐标系统
从图