iOS开发-CoreMotion框架(加速计和陀螺仪)
2015-12-23 16:51
393 查看
CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用。加速计由三个坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到线性的变化,陀螺仪可以更好的检测到偏转的动作,可以根据用户的动作做出相应的动作,iOS模拟器无法模拟以上动作,真机调试需要开发者账号。
加速计的x,y,z三个方向,参考下图:
如果只需要知道设备的方向,不需要知道具体方向矢量角度,那么可以使用UIDevice进行操作,还可以根据方向就行判断,具体可以参考一下苹果官网代码:
当用户晃动设备的时候,系统会通知每一个在用的设备,可以使本身成为第一响应者:
处理Motion事件有三种方式,开始(motionBegan),结束(motionEnded),取消(motionCancelled):
motionEnded方法中处理:
CoreMotion在处理加速计数据和陀螺仪数据的时是一个非常重要的框架,框架本身集成了很多算法获取原生的数据,而且能很好的展现出来,CoreMotion与UIKit不同,连接的是UIEvent而不是事件响应链。CoreMotion相对于接收数据只是更简单的分发motion事件。
CMMotionManager类能够使用到设备的所有移动数据(motion data),Core Motion框架提供了两种对motion数据的操作方式:
pull方式:能够以CoreMotionManager的只读方式获取当前任何传感器状态或是组合数据;
push方式:是以块或者闭包的形式收集到想要得到的数据并且在特定周期内得到实时的更新;
pull处理方式:
触摸结束:
push处理方式:
时间设置频率:
陀螺仪其实主要方法和方式和加速计没有区别,先看张陀螺仪旋转的角度图片:
陀螺仪更新数据也有两种方式,pull方式(startGyroUpdates),push方式(startGyroUpdatesToQueue):
加速计
加速计的x,y,z三个方向,参考下图:如果只需要知道设备的方向,不需要知道具体方向矢量角度,那么可以使用UIDevice进行操作,还可以根据方向就行判断,具体可以参考一下苹果官网代码:
CMMotionManager类能够使用到设备的所有移动数据(motion data),Core Motion框架提供了两种对motion数据的操作方式:
pull方式:能够以CoreMotionManager的只读方式获取当前任何传感器状态或是组合数据;
push方式:是以块或者闭包的形式收集到想要得到的数据并且在特定周期内得到实时的更新;
pull处理方式:
陀螺仪
陀螺仪其实主要方法和方式和加速计没有区别,先看张陀螺仪旋转的角度图片:陀螺仪更新数据也有两种方式,pull方式(startGyroUpdates),push方式(startGyroUpdatesToQueue):
作者:FlyElephant 出处:http://www.cnblogs.com/xiaofeixiang |
相关文章推荐
- iOS AES128 CBC No Padding加密解密
- iOS 开发项目之 QQ 音乐
- IOS block简单使用
- 开源中国iOS客户端学习——(十一)AES加密
- iOS 根据文字内容动态设置宽度与高度
- iOS strong,retain,assign,weak,copy属性实测
- iOS SHA1加密实现方法
- 关于ios 集成支付宝功能的大概
- iOS开发CADisplayLink和NSTimer
- iOS 发布证书申请
- iOS Lable给文字添加中划线和下划线
- iOS应用的crash日志的分析基础
- iOS中nil/Nil/NULL/NSNull的区别
- 【iOS】多线程NSOperation 与 GCD的区别
- iOS 上传图片方法总结
- IOS 解决scoryboard上tableview、collection view顶部有空白问题
- IOS
- ios常见加密解密方法
- iOS MD5加密实现方法
- iOS之通过PaintCode快速实现交互动画的最方便方法 未解问题