安卓开发文档翻译:环境传感器,Environment Sensors
安卓平台提供了4种传感器,可用来监视各种各样的环境状况。妳可以使用这些传感器来监视该安卓设备周围的相对环境湿度、照度、环境气压和环境温度。这4个环境传感器都是基于硬件的,因此,只有当设备厂商将它们配备到设备上去的情况下才可用。光线传感器是个特例,因为大部分设备厂商都会安装这个以便控制屏幕亮度,除此之外,其它的环境传感器并非是在所有设备上都存在的。所以,在运行时,请在尝试从某个环境传感器获取数据之前先检查它是否存在。
大部分的运动传感 器和位置传感器 会在每个 SensorEvent 中返回一个多维的传感器数 值 数组 , 而环境传感 器就不一样,它们在每个数据事件中只返回一个单个的传感器数值。例如, 以°C为单位返回的温度值,或者,以 hPa 为单位返回的气压值。另外 ,对于运动传感 器和位置传感 器 , 通常需要进行高 通过滤或低通过滤, 而环境传感 器呢, 一般不需要进行数据过滤 或数据处理。 表 1列出 了安卓平台支持的环境传感器的概要。
表 1. 安卓平台支持 的环境传感器。
传感器 |
传感器事件数据 |
度量单位 |
数据说明 |
event.values[0] |
°C |
环境气温。 |
|
event.values[0] |
lx |
照度。 |
|
event.values[0] |
hPa或mbar |
环境气压。 |
|
event.values[0] |
% |
环境相对湿度。 |
|
event.values[0] |
°C |
设备温度。 1 |
1 不同设备的实现是不同的。 此传感器从安卓4.0 (应用编程接口级别14)开始废弃。
从光线、压力和温度传感器获取到的那些数据,通常不需要校准、过滤或修改,因此,它们 是 最容易使用的传感器。 要想从这些传感器获取数据的话,首先,创建 SensorManager 类的一个实例,然后 ,可用该实例来获取一个物理传感器实现。然后 , 在 onResume() 方法中注册一个传感器监听器, 再在 onSensorChanged() 回调方法中处理传入的传感器数据。参考 以下示例代码:
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager ;
private Sensor mPressure ;
@Override
public final void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . main );
// 获取传感 器服务的实例,然后使用该实例来获取某个特定传感器的一个实例。
mSensorManager = ( SensorManager ) getSystemService ( Context . SENSOR_SERVICE );
mPressure = mSensorManager . getDefaultSensor ( Sensor . TYPE_PRESSURE );
}
@Override
public final void onAccuracyChanged ( Sensor sensor , int accuracy ) {
// 当传感器的精度发生变化时,在此进行处理。
}
@Override
public final void onSensorChanged ( SensorEvent event ) {
float millibars_of_pressure = event . values [ 0 ];
// 对这个传感器数据做点什么。
}
@Override
protected void onResume () {
// 针对 该传感器注册一个监听器。
super . onResume ();
mSensorManager . registerListener ( this , mPressure , SensorManager . SENSOR_DELAY_NORMAL );
}
@Override
protected void onPause () {
// 注意 ,当该活动(activity)暂停时,应当解除针对该传感器的监听器。
super . onPause ();
mSensorManager . unregisterListener ( this );
}
}
妳必须将 onAccuracyChanged() 和 onSensorChanged() 两个回调方法都实现。另外 ,当活动(activity)暂时时,记得要解除传感器的注册。 这样,就避免传感器持续地探测数据而将电池耗尽。
正如光线 、气压和温度传感器一样, 妳可以使用相同的方法来 从湿度传感器获取到原始的相对湿度数据。但是,如果某个设备 上同时装配了湿度传感器( TYPE_RELATIVE_HUMIDITY )和温度传感器( TYPE_AMBIENT_TEMPERATURE )的话,那么, 妳可以使用这两个数据流来计算出露点和绝对湿度。
露点 ( 英语 : Dew point )或 露点温度 ( 英语 : Dew point temperature )是在固定 气压 之下, 空气 中所含的 气态 水 达到饱和而 凝结 成 液态 水所需要降至的温度。 可使用以下公式来计算露点 :
ln(RH/100%) + m·t/(T n +t)
td(t,RH) = Tn · ------------------------------------
m - [ln(RH/100%) + m·t/(T n +t)]
其中,
•.td = 以℃表示的露点温度
•.t = 以℃表示的实际温度
•.RH = 以百分比(%)表示的实际相对湿度
•.m = 17.62
•.Tn = 243.12
绝对湿度,是指,指定体积的干燥空气中所含的水蒸汽的质量。绝对湿度的单位是克/立方米。可按照以下公式来计算绝对湿度:
(RH/100%) · A · exp(m·t/(T n +t)
dv(t,RH) = 216.7 · ------------------------------------
273.15 + t
其中,
•.dv = 以克/立方米表示的绝对湿度
•.t = 以℃表示的实际温度
•.RH = 以百分比(%)表示的实际相对湿度
•.m = 17.62
•.Tn = 243.12 ℃
•.A = 6.112 百帕
未知美人
未知美人
Your opinionsHxLauncher: Launch Android applications by voice commands