光传感器(Light Sensor)
光传感器主要用来检测手机周围光的强度,与其他传感器不同的是,该传感器只读取一个数值即手机周围光的强度。光线传感器输出的值以 lux 为单位,通常的动态范围为1~30000lux。光线传感器的分辨率为1lux。
光线传感器通常被用于根据环境光线来调节屏幕亮度。
光线传感器中定一个常量值(SensorManager):
LIGHT_NO_MOON = 0.001f luminance at night with no moon in lux(没有月亮的晚上)
LIGHT_FULLMOON = 0.25f luminance at night with full moon in lux(满月的晚上)
LIGHT_CLOUDY = 100.0f luminance under a cloudy sky in lux(阴天)
LIGHT_SUNRISE = 400.0f luminance at sunrise in lux(日出时分)
LIGHT_OVERCAST = 10000.0f luminance under an overcast sky in lux(多云天气)
LIGHT_SHADE = 20000.0f luminance in shade in lux(日光下的物体影子里)
LIGHT_SUNLIGHT = 110000.0f luminance of sunlight in lux(阳光明媚)
LIGHT_SUNLIGHT_MAX = 120000.0f Maximum luminance of sunlight in lux(比上一个还要明媚)
接近传感器(Proximity Sensor)
接近传感器包含一个在光电探测器边上的弱红外 LED(发光二极管),当有物体距离传感器足够近时,光电探测器会检测到物体反射的红外光。
LED 并不是一直亮着,而是以一定的脉冲开关。光电探测器锁定在一定的脉冲频率上从而让光电探测器对在该频率内未改变的光线并不敏感。光电探测器只会捕捉以 LED 准确频率为脉冲的光线。脉冲频率并不可控,因为接近传感器器通常是在内部检测光电探测器信号的第三方硬件,它只确定接近状态,通常只能为应用程序提供远或近两种状态。
一些接近传感器会测量以厘米为单位的传感器与物体之间的距离,另外一部分接近传感器则用来测量在一个阀值距离内物体是否存在。
二元传感器典型的动态范围在5cm 左右,更有意义的数据是范围在2cm 到4cm 的近似距离阀值。
二元输出的接近传感器是基于中断的,传感器会在过渡到接近状态(由近及远或者由远及近)
时产生对 onSensorChanged() 方法的调用。
气压传感器(Pressure Sensor)
气压传感器用来测量的是 MEMS 气压。典型的 MEMS 压力传感器的测量范围是300~1100 mbar,分辨率为0.01mbar。
气压以每小时0.5 millibar(mbar)漂移是正常的。由于大气潮汐和温度改变等方面的影响,气压一般周期性(每天)的上升下降两次。
通过使用 SensorManager.getAltitude(float p0, float p)可以根据气压计算出海拔高度(单位米)。该方法基于测出的压力 p 和海平面压力 p0,使用一个标准的物理公式来计算海拔高度(标高)。海平面的压力可以使用:
SensorManager.PRESSURE_STANDARD_ATMOSPHERE 给出了基于相对海拔高度的标准气压1013.25f。
气象站一般会给出平均海平面压力。
SensorManager.getAltitude使用的计算公式如下所示:
h(p0,p)=T0L(1−(pp0)RLgM)=44330∗(1−(pp0)15.255)h(p0,p)=T0L(1−(pp0)RLgM)=44330∗(1−(pp0)15.255)
T0T0 为海平面标准温服,L 为温度递减速率,R 为通用气体常数,g 为重力加速度,M 为干燥空气的摩尔质量。
相对湿度传感器(Relative Humidity)
相对湿度传感器以当前空气中的水蒸气百分比提供当前环境湿度。如果设备上同时存在温度传感器和相对湿度传感器, 那么就可以计算当前环境的露点温度(水蒸气达到凝结点的温度)和绝对湿度(指定体积的空气中水的质量)。
露点温度计算
露点温度是给定体积的气体在恒定的大气压力下,水蒸汽由气体转换成水的温度,下面显示了如何计算露点的公式:
td(t,RH)=Tn∗ln(RH100%)+mtTn+tm−(ln(RH100%)+mtTn+t)td(t,RH)=Tn∗ln(RH100%)+mtTn+tm−(ln(RH100%)+mtTn+t)
其中
tdtd 为露点温度,单位:摄氏度
t 为实际温度,单位:摄氏度
RH 为实际的相对湿度,单位:百分比
m 为17.62
TnTn 为243.12
绝对湿度
绝对湿度是给定体积的空气中水的质量。绝对湿度的测量单位是:克/立方米(grams/meter3meter3),以下是计算绝对湿度的公式:
dv(t,RH)=216.7∗A∗RH100%∗exp(m∗tTn+t))273.15+tdv(t,RH)=216.7∗A∗RH100%∗exp(m∗tTn+t))273.15+t
其中
dvdv 为绝对湿度,单位为 (grams/meter3meter3)
t 为实际温度,单位:摄氏度
RH 为实际相对湿度,单位:百分比
m 为17.62
TnTn 为243.12 摄氏度
A 为 6.112 hPa
环境温度传感器(Ambient Temperature)
环境温度传感器提供当前环境的温度,以摄氏度为单位。环境温度传感器是为了取代正在被逐渐淘汰的 TYPE_TEMPERATURE。
温度传感器 (Temperature)
Android 温度传感器用于检测 CPU 温度。从而对内部硬件进行校准。自 Android 4.0之后,该传感器逐渐被淘汰,取而代之的是环境温度传感器。