Android操作系统11种传感器介绍
在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。
#define SENSOR_TYPE_ACCELEROMETER 1 //加速度
#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
#define SENSOR_TYPE_ORIENTATION 3 //方向
#define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
#define SENSOR_TYPE_LIGHT 5 //光线感应
#define SENSOR_TYPE_PRESSURE 6 //压力
#define SENSOR_TYPE_TEMPERATURE 7 //温度
#define SENSOR_TYPE_PROXIMITY 8 //接近
#define SENSOR_TYPE_GRAVITY 9 //重力
#define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
#define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量
1 加速度传感器
加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。
该数值包含地心引力的影响,单位是m/s^2。
将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。
将手机朝下放在桌面上,z轴为-9.81。
将手机向左倾斜,x轴为正值。
将手机向右倾斜,x轴为负值。
将手机向上倾斜,y轴为负值。
将手机向下倾斜,y轴为正值。
加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。
手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。
这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。
2 磁力传感器
磁力传感器简称为M-sensor,返回x、y、z三轴的环境磁场数据。
该数值的单位是微特斯拉(micro-Tesla),用uT表示。
单位也可以是高斯(Gauss),1Tesla=10000Gauss。
硬件上一般没有独立的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。
电子罗盘传感器同时提供下文的方向传感器数据。
3 方向传感器
方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。
为了得到精确的角度数据,E-compass需要获取G-sensor的数据,
经过计算生产O-sensor数据,否则只能获取水平方向的角度。
方向传感器提供三个数据,分别为azimuth、pitch和roll。
azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。
0°=北,90°=东,180°=南,270°=西。
pitch:x轴和水平面的夹角,范围为-180°至180°。
当z轴向y轴转动时,角度为正值。
roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。
当x轴向z轴移动时,角度为正值。
电子罗盘在获取正确的数据前需要进行校准,通常可用8字校准法。
8字校准法要求用户使用需要校准的设备在空中做8字晃动,
原则上尽量多的让设备法线方向指向空间的所有8个象限。
手机中使用的电子罗盘芯片有AKM公司的897X系列,ST公司的LSM系列以及雅马哈公司等等。
由于需要读取G-sensor数据并计算出M-sensor和O-sensor数据,
因此厂商一般会提供一个后台daemon来完成工作,电子罗盘算法一般是公司私有产权。
4 陀螺仪传感器
陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。
角加速度的单位是radians/second。
根据Nexus S手机实测:
水平逆时针旋转,Z轴为正。
水平逆时针旋转,z轴为负。
向左旋转,y轴为负。
向右旋转,y轴为正。
向上旋转,x轴为负。
向下旋转,x轴为正。
ST的L3G系列的陀螺仪传感器比较流行,iphone4和google的nexus s中使用该种传感器。
5 光线感应传感器
光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。
光线感应传感器主要用于Android系统的LCD自动亮度功能。
可以根据采样到的光强数值实时调整LCD的亮度。
6 压力传感器
压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。
7 温度传感器
温度传感器返回当前的温度。
8 接近传感器
接近传感器检测物体与手机的距离,单位是厘米。
一些接近传感器只能返回远和近两个状态,
因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。
接近传感器可用于接听电话时自动关闭LCD屏幕以节省电量。
一些芯片集成了接近传感器和光线传感器两者功能。
下面三个传感器是Android2新提出的传感器类型,目前还不太清楚有哪些应用程序使用。
9 重力传感器
重力传感器简称GV-sensor,输出重力数据。
在地球上,重力数值为9.8,单位是m/s^2。
坐标系统与加速度传感器相同。
当设备复位时,重力传感器的输出与加速度传感器相同。
10 线性加速度传感器
线性加速度传感器简称LA-sensor。
线性加速度传感器是加速度传感器减去重力影响获取的数据。
单位是m/s^2,坐标系统与加速度传感器相同。
加速度传感器、重力传感器和线性加速度传感器的计算公式如下:
加速度 = 重力 + 线性加速度
11 旋转矢量传感器
旋转矢量传感器简称RV-sensor。
旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。
RV-sensor输出三个数据:
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)是RV的数量级。
RV的方向与轴旋转的方向相同。
RV的三个数值,与cos(theta/2)组成一个四元组。
RV的数据没有单位,使用的坐标系与加速度相同。
举例:
sensors_event_t.data[0] = x*sin(theta/2)
sensors_event_t.data[1] = y*sin(theta/2)
sensors_event_t.data[2] = z*sin(theta/2)
sensors_event_t.data[3] = cos(theta/2)
GV、LA和RV的数值没有物理传感器可以直接给出,
需要G-sensor、O-sensor和Gyro-sensor经过算法计算后得出。
算法一般是传感器公司的私有产权。
下面列举下大家比较关注也是常见的几种传感器
重力感应器
手机重力感应技术:利用压电效应实现,简单来说是测量内部一片重物(重物和压电片做成一体)重力正交两个方向的分力大小,来判定水平方向。通过对力敏感的传感器,感受手机在变换姿势时,重心的变化,使手机光标变化位置从而实现选择的功能。
手机重力感应指的是手机内置重力摇杆芯片,支持摇晃切换所需的界面和功能,甩歌甩屏,翻转静音,甩动切换视频等,是一种非常具有使用乐趣的功能。
重力感应器说的简单点就是,你本来把手机拿在手里是竖着的,你将它转90度,横过来,它的页面就跟随你的重心自动反应过来,也就是说页面也转了90度,极具人性化。现在基本上智能手机都有内置重力感应器,甚至有些非智能手机也有内置。其常见的应用有玩平衡球了,还有横屏浏览网页、看小说之类的了。
加速度传感器
加速度传感器是一种能够测量加速力的电子设备。加速力就是当物体在加速过程中作用在物体上的力,就好比地球引力,也就是重力。加速力可以是个常量,比如g,也可以是变量。因此其的范围比重力感应器要大,但是一般在手机被提到的加速度感应器时,其实就是指重力感应器,因此两者可以看做是等价的。
方向感应器
手机方向传感器是指,安装在手机上用以检测手机本身处于何种方向状态的部件,而不是通常理解的指南针的功能。
手机方向检测功能可以检测手机处于正竖、倒竖、左横、右横,仰、俯状态。具有方向检测功能的手机具有使用更方便、更具人性化的特点。例如,手机旋转后,屏幕图像可以自动跟着旋转并切换长宽比例,文字或菜单也可以同时旋转,使你阅读方便;听mp3时。可能会有人说:这个跟那个重力感应器是一样的?
这个两者是不一样的,方向感应器或者叫应用角速度传感器比较合适,一般手机的上的方向感应器是感应水平面上的方位角、旋转角和倾斜角的。这个如果你可能觉得有点理论的话,举个例子吧。有方向感应器的能很好的玩都市赛车游戏。而只有重力感应器也能玩,但是恩,很令人纠结。
三轴陀螺仪
三轴陀螺仪:即同时测定6个方向的位置,移动轨迹,加速。单轴的只能测量一个方向的量,也就是一个系统需要三个陀螺仪,而3轴的一个就能替代三个单轴的。3轴的体积小、重量轻、结构简单、可靠性好,是激光陀螺的发展趋势。对于激光陀螺则更多应用于军事方面,我们暂且不做讨论。不过我们可以看出iPhone 4应用的三轴陀螺仪是较为先进的。
如果说,重力感应器所能测的是直线的,方面感应器所测的是平面得,那么三轴陀螺仪所测的方向和位置则是立体的。特别是玩一些像彩虹六号,那种第一人称射击游戏,你会发现三轴陀螺仪的效果是很明显的。
距离传感器
距离传感器是利用测时间来实现测距离的原理,以检测物体的距离的一种传感器。工作原理:通过发射特别短的光脉冲,并测量此光脉冲从发射到被物体反射回来的时间,通过测时间来计算与物体之间的距离。这个传感器在手机上的作用是当我们打电话时,手机屏幕会自动熄灭,当你脸离开,屏幕灯会自动开启,并且自动解锁。这个对于待机手机较短的智能手机来说是相当实用的。现在很多智能手机都装备的这个传感器。
光线传感器(感应器)
光线传感器,也就是感光器,是能够根据周围光亮明暗程度来调节屏幕明暗的装置。就是在光线强的地方手机会自动关掉键盘灯,并且稍微加强屏幕亮度,达到节电并更好观看屏幕的效果,在光线暗的地方自动打开键盘灯。可以到工具设置中调节关掉。这个传感器也主要起到节省手机电力的作用,毕竟现在的智能手机的待机时间都很令人头痛,能节省就节省吧。
电子罗盘,也叫方位感应器(传感器)
电子罗盘,也叫数字指南针,是利用地磁场来定北极的一种方法。古代称为罗经,现代利用先进加工工艺生产的磁阻传感器为罗盘的数字化提供了有力的帮助。现在一般有用磁阻传感器和磁通门加工而成的电子罗盘。这个就是电子版指南针,配合GPS和地图时非常好用,不会整的晕头转向。
当然除了这些较为常见的传感器之外,在女性手机上可以见到紫外线传感器,在军用手机上可以看到气压和温度传感器等等。
所谓电子产品的传感器,实际上就是指能够探测并感受到外界的信号、光、热量、温度等的物理装置。下面我们就共同了解一下手机中常见的五种传感器。
重力感应
首先我们来了解一下何为重力感应技术。它是利用压电效应来实现,通过测量内部一片重物重力正交两个方向分力的大小,从而判定水平方向。在智能手机中,系统默认手机水平放置时为重力感应的中心。但是在现实中,玩家在操作时很难做到让手机保持水平姿态。因此,一般在游戏的设置中,就会有设定功能,让玩家自己选择持握状态下的中心。
利用重力感应技术的平板电脑
目前多数智能手机都采用了G-Sensor重力感应器+三轴加速度计的组合。如果只用G-Sensor的手机时最多只能倾斜90度,并不能360度旋转。
MEMS三轴加速度计
三轴加速度计是手机上另一个输出传感器。可以根据由于重力感应产生的加速度来计算出设备相对于水平面的倾斜度。因此,该技术也经常被人们和重力感应混为一谈。实际上这里有一些明显的标志分清它们。首先,MEMS三轴加速度计可以感知重力、手机的静态姿态以及运动方向。其次,带有加速度计的手机屏幕会随着角度的不同智能旋转。此外,音乐播放器软件中热门的甩歌功能,聊天软件微信摇一摇功能也基于加速度计。当然,游戏方面也充分利用了该功能。例如赛车游戏中的漂移触发。
3D方位感测器
电子罗盘
电子罗盘是应用到手机中的磁阻传感器的一项功能。虽然手机可以通过GPS来定位。但是在GPS信号不好或者无网络的情况下,我们如何感知方位呢?近些年流行开来的电子罗盘功能便可以判断东南西北。而这一切都是通过地球磁场来分辨的。在危急情况下也可以用来充当指南针导航。
运用在手机中的电子罗盘
FPS游戏必备之三重陀螺仪
从2010年iPhone 4首次引入陀螺仪后,手机游戏便发生了翻天覆地的变化。此前,陀螺仪技术更多的被应用于直升飞机中,飞行中可以充分保持平衡。在智能手机、游戏中的展现主要得益于MEMS应用半导体技术的发展。它是一种能制作极小机械构造的微型加工技术。总的来看,MEMS三重陀螺仪和MEMS三轴加速度计有着精准、小巧、成本低廉的特点。
利用三重陀螺仪瞄准射击
简单介绍一下陀螺仪的有关概念。陀螺仪是用于测量或维持方向的设备,基于角动量守恒原理,能判断物体在空间中的相对位置、方向、角度以及水平的变化作用。最终根据用户的动作输出相对应的指令。下面我们来看看几个实际例子。著名游戏现代战争3就是可以依靠陀螺仪进行瞄准射击的。开启陀螺仪之后,这就意味着我们需要不断转动身体进行操作。
陀螺仪让游戏效果更加真实
光线距离感应器
下面我们再来看看手机上的光线距离感应器。手机中的光线感应是利用光线传感器实现的。一般都是设计在传感器屏幕上方,通过识别外界光线的强弱在显示效果中做出调节。利用传感器,最明显的例子就是手机自动感应周围环境,让屏幕亮度自动调节。
手机上方的光线感应器
距离感应器也被称为位移传感器。可以通过感应传感器到对象间的距离变化来实现操作。一般而言,距离感应器都在听筒的附近,当我们接听或拨打电话时,距离感应器就可以通过测量耳朵与听筒的距离从而实现屏幕显示的自动开启和关闭,最终可以有效的节省电量。