加速计 & CoreMotion


加速计 & CoreMotion

Fullscreen

 

iOS中的主要传感器 • 接近传感器

• 加速度传感器--又称加速计

  • -   由于更够带来了更多的直觉游戏体验,基本姿态识别和环境

     感知功能,目前在智能手机上应用的非常广泛 
  • -   目前智能手机中基本配备的都是三维线传感器,也就是说,

    用来测量x,y,z三个轴上的加速度

  • -   由于重力分量的干扰,无法仅仅依靠加速度传感器来检测加

     速方向的角度,也无法得知手机本身的朝向 

    • 陀螺仪
    - 造价昂贵,目前并未在智能手机中得到普及
    - 基于角动量守恒理论,沿着某个特定的坐标轴测量旋转速率 - 误差会累积

    • 电子罗盘--又称磁力计,或电子指南针

iOS中的主要传感器

 

加速度传感器

电子罗盘

陀螺仪

接近传感器

功能

通过测量三个 轴的加速度大 小来判断人体 运动

通过测量设备 周围地磁场的 强度和方向来 判断朝向

通过测量三个 轴的旋转速率 来判断朝向

无须物理接触 就判断附近物 体的存在

主要局限性

受重力干扰大 瞬时误差大

误差大,容易 受其他磁场和 金属物体影响 主要用于校正 其他设备

误差会累积 长时间读数的 准确性差

不通用,大多 数只针对几种 材质

应用

活动测量

导航

导航

智能省电

,, 。

加速计

  • •   通过iOS设备提供的内置的加速计,可以确定设备什么时候移动、移 动了多少距离以及设备的方向

  • •   在应用程序中,使用UIAccelerometer类来接收加速计数据,通过类方 法sharedAccelerometer可以获得该类的实例

  • •   使用加速计需要设置其更新间隔和代理,此后,在指定的时间间隔, 会收到代理方法accelerometer:didAccelerate:的回调

  • •   该代理方法收到一个指向加速计的指针和一个指向UIAcceleration对象 的指针

  • •   该加速对象包含:x,y,z和timestamp四个属性,其中x,y,z是设备 在这三个方向上的重力加速度,单位g

加速计坐标系--注意y轴的方向

加速计开发测试需要注意

• 加速计的应用只能在真机上开发测试

加速计演练

• 演练1
- 在加速计回调方法中更新小球视图位置,运行并测试

效果 • 演练2

- 引入QuartzCore.framework方法
- 定义CADisplayLink游戏时钟,并在游戏时钟指定的更新

方法中更新小球视图位置
- 运行并对比两种方式的实现效果

加速计演练小结

• 加速计使用步骤
- 1. 获取共享加速计对象 
- 2. 设置加速计数据更新频率 - 3. 设置加速计对象代理

• 让加速计负责速度更新,CADislpayLink负责界面更新的好处

  • -   1. 游戏效果更加平滑

  • -   2. 界面表示和游戏逻辑可以得到拆分,便于游戏扩展并引入 MVC设计模式

  • -   3. 使用时钟更新,需要注意小球位置的修正

    • UIAccelerometer虽然已经停止更新,但是目前还是有一定数量 的应用中使用到了该技术

CoreMotion框架 
• 在iOS4之前,加速度计由UIAccelerometer类来负责采集工作,而电子

罗盘则由Core Location接管

• 随着iPhone4的推出,由于加速度计的升级以及陀螺仪的引入,与 Motion相关的编程成为重头戏,所以,苹果在iOS4中增加了一个专门 负责该方面处理的框架--Core Motion Framework

• Core Motion不仅能够提供实时的加速度值和旋转速度值,更重要的是, 苹果在其中集成了很多算法,可以直接输出把重力加速度分量剥离的 加速度,省去你的高通滤波操作,以及提供给你一个专门的设备的三 维attitude信息

Core Motion框架结构示意图--MotionManager

Core Motion获取数据的两种方式

• Push(采集所有数据--做运动仿真更好) • Pull(在需要是获取采样数据)

Core Motion Push演练

• Core Motion Push使用步骤
- 1. 实例化Motion管理器 
- 2. 判断传感器是否可用 
- 3. 设定传感器数据更新频率 
- 4. 启动传感器更新,Push方式更新数据

增加新的功能

• 点击屏幕停止或者启动加速计数据采集

使用dispatch_once创建MotionManager的单例

• 好处:
- 线程安全

- 很好满足静态分析器要求 
- 和自动引用计数(ARC)兼容      - 仅需要少量代码

• 使用方法,在AppDelegate中定义

@property (strong, nonatomic, readonly)CMMotionManager *sharedMotionManger;!

调整代码

• 从AppDelegate中获得共享运动管理器

- 1. 获得AppDelegate的引用

- 2. 通过AppDelegate的引用获得其中只读的 sharedMotionManager对象引用

回顾

  • •   使用加速计可以测量设备在x,y,z三个轴上的加速度

  • •   利用加速计可以设计制作出用户交互体感非常优秀的游戏

    作品!

  • •   UIAccelerometer由于重力分量的干扰已经被苹果废弃,不 过由于其使用简单,目前还有不少游戏作品中使用这一技 术

  • •   CoreMotion是苹果公司针对运动特性新推出的一套框架, 经过巧妙的构思可以非常优秀的作品,而且很容易抓住用 户的眼球

  • •   使用CoreMotion开发的作品,通过苹果官方审批后,如果 作品本身品质优秀,苹果官方很有可能会协助开发者一起 推广!

© chenyilong. Powered by Postach.io

 

加速计 & CoreMotion的更多相关文章

  1. 传感器- 加速计 - CoreMotion

    /** *  CoreMotion * */ #import "ViewController.h" #import <CoreMotion/CoreMotion.h> ...

  2. CoreMotion(加速计)

    加速计的作用 用于检测设备的运动(比如摇晃) 加速计的经典应用场景 摇一摇 计步器 ********************************** Core Motion获取数据的两种方式 pu ...

  3. iOS开发-CoreMotion框架(加速计和陀螺仪)

    CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来 ...

  4. iFIERO - (二)宇宙大战 Space Battle -- SpriteKit 无限循环背景Endless、SpriteKit物理碰撞、CoreMotion加速计

    本节主要讲解如何创建无限循环Endless的星空背景(如下图).玩家飞船发射子弹,监测子弹击外星敌机的SpriteKit物理碰撞并消灭敌机,以及应用iOS的CoreMotion加速计移动飞船躲避外星敌 ...

  5. iOS开发 传感器(加速计、摇一摇、计步器)

    一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...

  6. iOS开发——高级篇——传感器(加速计、摇一摇、计步器)

    一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...

  7. iOS新加速计事件(陀螺仪和加速计)

    iOS新加速计事件 [iOS新加速计事件] 1.iOS5.0以前,可以使用UIAcceleration来监听加速计事件. 2.Bug iOS5.0以后,UIAccelerometerDelegate已 ...

  8. ios开发——实用技术篇Swift篇&加速计和陀螺仪

    加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...

  9. 10 - 应用程序间通信、本地通知、加速计、URL传输中文

    一.应用间通信 URL 调用系统服务: tel:11111 sms:xxx@163.com http:// URL深入 类型://主机:端口/地址?参数 label框等于文字大小快捷键:command ...

随机推荐

  1. metasploit学习之情报搜集

    3.1.被动信息搜集whois查询Netcraft nslookup>set type=mx>testfire.net Google Hacking 3.2 主动信息搜集 使用nmap进行 ...

  2. PAT 甲级 1079 Total Sales of Supply Chain

    https://pintia.cn/problem-sets/994805342720868352/problems/994805388447170560 A supply chain is a ne ...

  3. Django-项目配置

    目录 配置文件 数据库配置DATABASE - 指定MySQL数据库 数据库配置DATABASE - 指定SQL Server数据库 数据库配置DATABASE - 指定多个数据库 模版文件 静态文件 ...

  4. XP局域网访问无权限、不能互相访问问题的完整解决方案

    XP局域网访问无权限问题的完整解决方案: 1:用管理员账户登录系统 2:在“开始”-- “运行”里输入 GPEDIT.MSC 目的是打开组策略选项 3:依次展开”WINDOWS设置”-”本地策略”-” ...

  5. 设置close

  6. 【刷题】BZOJ 2724 [Violet 6]蒲公英

    Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 Output Sample Input ...

  7. 【刷题】BZOJ 4916 神犇和蒟蒻

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...

  8. python里使用正则表达式的非贪婪模式

    在正则表达式里,什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向 ...

  9. 手速太慢QAQ

    显然D是个细节题,但是还剩1h时看眼榜还没人过EF,只好冷静写D,大概思路是任何时候如果min(n,m)<=2,max(n,m)<=4暴搜,否则直接贪心是很对的,即第一步让S.T长度平均化 ...

  10. 【bzoj4009】 HNOI2015—接水果

    http://www.lydsy.com/JudgeOnline/problem.php?id=4009 (题目链接) 题意 给出一颗无根树.有一些路径记为$P_i$,这些路径有两个端点和一个权值$W ...