加速计(图片版)




android获取加速度 安卓 加速度计_加速计


android获取加速度 安卓 加速度计_测试_02


android获取加速度 安卓 加速度计_测试_03


android获取加速度 安卓 加速度计_设计模式_04


android获取加速度 安卓 加速度计_移动开发_05


android获取加速度 安卓 加速度计_android获取加速度_06


android获取加速度 安卓 加速度计_设计模式_07


android获取加速度 安卓 加速度计_android获取加速度_08


android获取加速度 安卓 加速度计_测试_09


android获取加速度 安卓 加速度计_加速计_10


android获取加速度 安卓 加速度计_设计模式_11


android获取加速度 安卓 加速度计_设计模式_12


android获取加速度 安卓 加速度计_加速计_13


android获取加速度 安卓 加速度计_移动开发_14


android获取加速度 安卓 加速度计_android获取加速度_15


android获取加速度 安卓 加速度计_移动开发_16


android获取加速度 安卓 加速度计_移动开发_17


android获取加速度 安卓 加速度计_加速计_18


android获取加速度 安卓 加速度计_加速计_19



加速计和CoreMotion

 

加速计 和CoreMotion

技术博客 新浪微博http://weibo.com/luohanchenyilong

全屏

 

 

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

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

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

  • - 目前智能手机中基本国内配备的都是三维线传感器,也就是说,
    用来测量x ,Ÿ ,Ž 三个轴上的加速度
  • - 由于重力分量的干扰,无法仅仅依靠加速度传感器来检测加
     速方向的角度,也无法得知手机本身的朝向 
  • • 陀螺仪- 造价昂贵,目前并未在智能手机中得到普及- 基于角动量守恒理论,沿着某个特定的坐标轴测量旋转速率 - 误差会累积
    • 电子罗盘-又称磁力计,或电子指南针

的iOS 中的主要传感器

 

加速度传感器

电子罗盘

陀螺仪

接近传感器

功能

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

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

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

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

主要局限性

受重力干扰大瞬时误差大

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

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

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

应用

活动测量

导航

导航

智能省电

,,。

加速计

  • • 通过 的iOS 设备提供的内置的加速计,可以确定设备什么时候移动,移动了多少距离以及设备的方向
  • • 在应用程序中,使用 UIAccelerometer 类来接收加速计数据,通过类方法sharedAccelerometer 可以获得该类的实例
  • • 使用加速计需要设置其更新间隔状语从句代理店,此后,在指定的时间间隔,会收到代理方法 加速度:didAccelerate:的回调
  • •    该代理方法收到一个指向加速计的指针和一个指向UIAcceleration 对象的指针
  • • 该加速对象包含: x ,ÿ ,Ž 和时间戳四个属性,其中x ,Ÿ ,Ž 是设备在这三个方向上的重力加速度,单位克


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


加速计开发测试需要注意

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

加速计演练

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

效果 • 演练2

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

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

加速计演练小结

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

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

  • - 1 游戏效果更加平滑
  • -    2. 界面表示和游戏逻辑可以得到拆分,便于游戏扩展并引入 MVC 设计模式
  • - 。3 使用时钟更新,需要注意小球位置的修正
    • UIAccelerometer 虽然已经停止更新,但是目前还是有一定数量的应用中使用到了该技术

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

罗盘则由核心地段接管

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

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

核心运动框架结构示意图-MotionManager中


核心动态获取数据的两种方式

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


核心运动推演练

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



增加新的功能

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

使用dispatch_once 创建MotionManager中的单例

• 好处:- 线程安全

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

• 使用方法扩展功能,在AppDelegate中中定义

@财产 (强大的, 非原子, 只读)CMMotionManager * sharedMotionManger; !

调整代码

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

- 1, 获得AppDelegate中的引用

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