- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Core Motion框架使用方法
iOS4中Core Motion框架使用方法是本文要介绍的内容,主要是来学习IOS4中框架的内容。在iOS4之前,加速度计由UIAccelerometer类来负责采集工作,而电子罗盘则由Core Location接管。
而iPhone4的推出,由于加速度计的升级(有消息说使用的是这款芯片) 和陀螺仪的引入,与motion相关的编程成为重头戏,所以,苹果在iOS4中增加一个一个专门负责该方面处理的框架,就是Core Motion Framework。这个Core Motion有什么好处呢?简单来说,它不仅仅提供给你获得实时的加速度值和旋转速度值,更重要的是,苹果在其中集成了很多算法,可以直接给你输出把重力 加速度分量剥离的加速度,省去你的高通滤波操作,以及提供给你一个专门的设备的三维attitude信息,如图:
?
有这么一个好东西,我们自然就要好好利用了。下面就介绍一下,如何利用Core Motion Framework,来获得对应的motion信息。
Core Motion在iOS4.0主要负责三种数据:加速度值,陀螺仪值,设备motion值。实际上,这个设备motion值就是通过加速度和旋转速度进行 fusing变换算出来的,基本原理后面会介绍。Core Motion在系统中以单独的后台线程的方式去获得原始数据,并同时执行一些motion算法来提取更多的信息,然后呈献给应用层做进一步处理。Core Motion框架包含有一个专门的Manager类,CMMotionManager,然后由这个manager去管理三种和运动相关的数据封装类,而 且,这些类都是CMLogItem类的子类,所以相关的motion数据都可以和发生的时间信息一起保存到对应文件中,有了时间戳,两个相邻数据之间的实 际更新时间就很容易得到了。这个东西是非常有用的,比如有些时候,你得到的是50Hz的采样数据,但希望知道的是每一秒加速度的平均值。
从Core Motion中获取数据主要是两种方式,一种是Push,就是你提供一个线程管理器NSOperationQueue,再提供一个Block(有点像C中 的回调函数),这样,Core Motion自动在每一个采样数据到来的时候回调这个Block,进行处理。在这中情况下,block中的操作会在你自己的主线程内执行。另一种方式叫做 Pull,在这个方式里,你必须主动去像Core Motion Manager要数据,这个数据就是最近一次的采样数据。你不去要,Core Motion Manager就不会给你。当然,在这种情况下,Core Motion所有的操作都在自己的后台线程中进行,不会有任何干扰你当前线程的行为。
那接下来的问题就是,我在什么时候选择什么方式呢?苹果官方推荐了一个使用指南,比较了两种方式的优劣,并做出了使用场景的推荐。如下图所示。应该说,两种方式各自的优缺点还是很鲜明的,使用场景也大不一样,很好区分,如图:
?Core Motion的大体介绍就是这些。下面说说Core Motion具体负责的采集,计算和处理。Core Motion的使用就是一三部曲:初始化,获取数据,处理后事。
在初始化阶段,不管你要获取的是什么数据,首先需要做的就是
motionManager?=?[[CMMotionManager?alloc]?init];?
所有的操作都会由这个manager接管。后面的初始化操作相当直观,以加速度的pull方式为例
if?(!motionManager.accelerometerAvailable)?{ ?
//?fail?code?//?检查传感器到底在设备上是否可用 ?
} ?
motionManager.accelerometerUpdateInterval?=?0.01;?//?告诉manager,更新频率是100Hz ?
[motionManager?startAccelerometerUpdates];?//?开始更新,后台线程开始运行。这是pull方式。?
如果是push方式,更新的代码可以写成这样
[motionManager?startAccelerometerUpdatesToQueue:[NSOperationQueue?currentQueue]?withHandler:^(CMAccelerometerData?*latestAcc,?NSError?*error) ?
{ ?
//?Your?code?here ?
}];?
接下来就是获取数据了。Again,很简单的代码
CMAccelerometerData?*newestAccel?=?motionManager.accelerometerData; ?
filteredAc
您可能关注的文档
- 虚拟实训 实训攻略 如何使用粉丝通.doc
- 虚拟实训 实训攻略 如何写第一篇博文内容.doc
- 虚拟实训 实训攻略 使用微博橱窗做限时秒杀.doc
- 虚拟实训 实训攻略 微博粉丝分析.doc
- 虚拟实训 实训攻略 微博内容分析.doc
- 虚拟实训 实训攻略 微博相关账号分析.doc
- 虚拟实训 实训攻略 文案视觉化缘由和方法.doc
- 虚拟实训 实训攻略 走在高科技前沿的汾酒,开创了“一物一码”新营销 - 副本.doc
- 虚拟现实程序开发 6.物理引擎 6.3 物理材质.docx
- 虚拟现实程序设计基础 虚拟现实程序设计基础 Unity3D中的线性插值Lerp()函数解析.docx
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
最近下载
- GB 55021-2021 既有建筑鉴定与加固通用规范.pdf VIP
- 非煤矿山安全生产执法检查方案.pptx
- 3DMax中英文对照表2.doc
- 2024年四川省德阳市中考生物试题卷(含答案解析).docx
- 苏教版四下简便计算练习题.doc VIP
- 北京市第一零一中学2023-2024学年八年级下学期期中数学试题(原卷版).pdf VIP
- 2025年单招生活常识题目答案大全 .pdf VIP
- 湖北省武汉市2025届高三上学期元月调考数学试题(学生版+解析版).docx
- 卡萨帝 洗衣机 双子云裳洗干一体机 C8 HU12G1 使用说明.pdf
- 2023届高考英语新时政热点阅读 10 人工智能(含解析).docx
文档评论(0)