加速计 & 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. Verilog HDL数组(存储器)操作

    本文从本人的163博客搬迁至此. 引用了http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html Verilog HDL中常采用数组方式来对存储器进行建 ...

  2. Vim操作指南

    vim具有6种基本模式和5种派生模式. 基本模式 普通模式 插入模式 可视模式 选择模式 命令行模式 Ex模式 派生模式 操作符等待模式 插入普通模式 插入可视模式 插入选择模式 替换模式 1.移动光 ...

  3. Beta版本讨论

    目录 组员:胡绪佩 组员:何家伟 组员:黄鸿杰 组员: 翟丹丹 组员:周政演 组员:胡青元 组员:庄卉 组员:刘恺琳 组员:何宇恒 组员:刘一好 组员:葛家灿 组员:胡绪佩 总结 通过这次的Beta版 ...

  4. 小程序 JM

    // 本地 // 'https://ly.com/' // 短信验证码参数: let dataValue = { 'type': 1, mobile: '13615814562' }; dataVal ...

  5. 一本通1644【例 4】佳佳的 Fibonacci

    1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms         内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...

  6. ubuntu下java JDK环境配置

    ubuntu下配置JDK环境变量ubuntu下的JDK配置本质上和win一样的:1.去官网下载JDK,选择适合自己版本,我下载的版本是jdk-8u121-linunx-x64.tag.gz,官方网址h ...

  7. linux下彻底卸载mysql 图解教程

    linux下彻底卸载mysql 图解教程 1.查找以前是否装有mysql 命令:rpm -qa|grep -i mysql可以看到如下图的所示: 说明之前安装了:MySQL-client-5.5.25 ...

  8. MT【192】又是绝对值函数

    (2018浙江新高考联盟2018第三次联考填空压轴题) 已知$f(x)=x^2+x-2$,若函数$g(x)=|f(x)|-f(x)-2mx-2m^2$有三个不同的零点,则实数$m$的取值范围是____ ...

  9. 【刷题】BZOJ 3724 PA2014Final Krolestwo

    Description 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每 ...

  10. 【刷题】LOJ 6015 「网络流 24 题」星际转移

    题目描述 由于人类对自然资源的消耗,人们意识到大约在 2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地球环境发生了 ...