Android硬件开发之——动作传感器

前言

本文主要讲述动作传感器,包含以下几个方面:

  • 动作传感器概述
  • 动作传感器的作用
  • 动作传感器的回传数据
  • 实战Demo

动作传感器

动作传感器概述

Android平台支持一些用于监视设备动作的传感器(这样的传感器共有5个)。其中两个(加速传感器和陀螺仪传感器)是纯的硬件传感器。另外三个(重力传感器、线性加速传感器和旋转向量传感器)可能是硬件传感器,也可能是软件传感器。例如,在一些Android设备中,这些基于软件的传感器会从加速和磁力传感器中获取数据,但在另一些Android设备中也可能从陀螺仪传感器中获取数据。也就是说,同一种基于软件的传感器在不同的Android设备中回传的数据可能来自不同的硬件传感器。所以基于软件的同一种传感器在不同的设备中可能精确度、使用范围有所不同。大多数高端Android设备都会有加速传感器,还有一些拥有陀螺仪传感器。

动作传感器的作用

动作传感器对于监测设备的移动非常有用,例如,倾斜、震动、旋转和摆动都属于动作传感器的监测范围。设备的移动通常是对用户输入的直接反应。例如,用户正在游戏中飙车,或控制游戏中的一个小球)。除此之外,设备所处的物理环境也会反应在设备的动作上,例如,用户正常驾驶汽车,而这是Android设备正安静地躺在旁边的座椅上,尽管设备没有移动,但会随着车的行驶而不断震动,而且设备也会随着汽车的移动而移动。

对于第一种情况,可以对设备本身的相对位置进行监测。而对于第二种情况,需要考虑到设备以外的参照系。动作传感器本身一般并不会用于监测设备的位置,关于设备的位置需要用其他类型的传感器进行监测,例如,磁场传感器。

动作传感器的回传数据

所有的动作传感器都会返回三个浮点数的值(通过长度为3的数组返回),但对于不同的传感器,这三个只的意义不同。例如,对于加速传感器,会返回三个坐标轴的数据。对于陀螺仪传感器,会返回三个坐标轴的旋转角速度。

加速传感器

  • 设备从左到右推动,X轴加速度为正值。
  • 备朝着自己推动,Y轴加速度为正值。
  • 如果朝着天空以A m/s^2的加速度推动,那么Z轴的加速度为A + 9.81,所以如果计算实际的加速度(抵消重力加速度),需要减9.81。

实战

参考代码: SensorMotion