一、CoreMotion框架介绍
我们知道有一些iOS的应用,会有一些特殊的要求,比如:
1. 电子罗盘指南针之类的应用:让我们知道方向。
2. 运动类型软件:让我们知道我们跑步多少公里。
3. 社交软件中的摇一摇功能。
4. 游戏中扮演角色类中根据设备的晃动等进行操作。
其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.framework
CoreMotion框架,主要是为了访问加速度计和陀螺仪的相关数据。 它不仅仅提供给你获得实时的加速度值和旋转速度值,更重要的是,苹果在其中集成了很多算法,可以直接给你输出把重力加速度分量剥离的加速度,省去你的高通滤波操作,以及提供给你一个专门的设备的三维位置信息。
加速度计:
加速度计的原理很简单,现在手机里面基本配备的都是3维线传感器,也就是说,用来测量x,y,z三个轴上的加速力。加速力就是当物体在加速过程中作用在物体上的力,就好比地球引力,也就是重力。
二、CoreMotion使用
1,CoreMotion主要负责三种数据:
《1》加速度值CMAccelerometerData
《2》陀螺仪值CMGyroData
《3》设备motion值,CMDeviceMotion
实际上,这个设备motion值就是通过加速度和旋转速度进行变换算出来的
2,CMDeviceMotion属性介绍:
《1》attitude:通俗来讲,就是告诉你手机在当前空间的位置和姿势 《2》gravity:重力信息,其本质是重力加速度矢量在当前设备的参考坐标系中的表达
《3》userAcceleration:加速度信息
《4》rotationRate:即时的旋转速率,是陀螺仪的输出
3,使用CoreMotion的步骤:
处理Motion事件有三种方式,开始(motionBegan),结束(motionEnded),取消(motionCancelled):
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event NS_AVAILABLE_IOS(3_0);
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event NS_AVAILABLE_IOS