您的位置:首页 > 移动开发 > Android开发

【1】14种Android Sensor

2015-11-23 15:52 381 查看
1、Android sensor

Android4.0系统内置对传感器的支持达13种,它们分别是:(1)加速度传感器
(accelerometer)、(2)磁力传感器(magnetic field)、(3)方向传感器(orientation)、(4)陀螺仪(gyroscope)、(5)环境光照传感器(light)、(6)压力传感器(pressure)、 (7)温度传感器(temperature)和(8)距离传感器(proximity) 、(9)重力传感器、(10)线性加速度、(11)旋转矢量传感器、(12)湿度传感器(13)心率传感器、(14)指纹传感器、(15)电容触摸传感器



(16)声波传感器

accelerometer英[əkˌseləˈrɒmɪtə(r)]美[əkˌseləˈrɑ:mɪtə(r)]

magnetic
field 英[mæɡˈnetik fi:ld] 美[mæɡˈnɛtɪk fild]
orientation 英[ˌɔ:riənˈteɪʃn] 美[ˌɔriɛnˈteʃən,
-ən-, ˌor-]
gyroscope 英[ˈdʒaɪrəskəʊp] 美[ˈdʒaɪrəskoʊp]

proximity 英[prɒkˈsɪməti] 美[prɑ:kˈsɪməti]

vector rotation 英[ˈvektə rəʊˈteɪʃən] 美[ˈvɛktɚ roˈteʃən]

#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中使用该种传感器。

陀螺仪能提供精度更高的角度信息。借助陀螺仪,Android的Photo Sphere相机功能可以判断手机在哪个方向上旋转了多少度

5 光线感应传感器

光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。

光线感应传感器主要用于Android系统的LCD自动亮度功能。

可以根据采样到的光强数值实时调整LCD的亮度。

机的光线传感器能检测环境的亮度。软件可以利用光线传感器的数据自动调节显示屏亮度——当环境亮度高时,显示屏亮度会相应调高;当环境亮度低时,显示屏亮度也会相应调低。三星高端Galaxy型号手机能利用先进的光线传感器,独立地测量白、红、绿和蓝光的亮度。Adapt Display功能利用这些数据优化显示屏的画面质量。

6 压力传感器

压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。

部分高端智能手机配置有气压传感器,能测量气压。气压传感器的数据能用来判断手机所处位置的海拔高度,有助于提高GPS(全球定位系统)的精度。

7 温度传感器

温度传感器返回当前的温度。

测量气温的温度传感器。但是,许多其他智能手机都配置有温度传感器,有的还不止一个。区别就在于它们的目的是监测手机内部以及电池的温度。如果发现某一部件温度过高,手机就会关机,防止手机损坏。Galaxy S4气温传感器提供的数据被S Health应用用来判断用户所处的环境是否舒适。

8 接近传感器

接近传感器检测物体与手机的距离,单位是厘米。

一些接近传感器只能返回远和近两个状态,

因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。

接近传感器可用于接听电话时自动关闭LCD屏幕以节省电量。

一些芯片集成了接近传感器和光线传感器两者功能。

距离传感器由一个红外LED灯和红外辐射光线探测器构成。距离传感器位于手机的听筒附近,手机靠近耳朵时,系统借助距离传感器知道用户在通电话,然后会关闭显示屏,防止用户因误操作影响通话。距离传感器的工作原理是,红外LED灯发出的不可见红外光由附近的物体反射后,被红外辐射光线探测器探测到

下面三个传感器是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经过算法计算后得出。

算法一般是传感器公司的私有产权。

(15)电容触摸传感器

(16)强化声音效果,使用两组麦克风与相关的运算来达到降噪效果。

参考头文件

code:android \hardware\libhardware\include\sensor.h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: