StupidBeauty
Read times:1542Posted at: - no title specified

安卓开发文档翻译:环境传感器,Environment Sensors

安卓平台提供了4种传感器,可用来监视各种各样的环境状况。妳可以使用这些传感器来监视该安卓设备周围的相对环境湿度、照度、环境气压和环境温度。这4个环境传感器都是基于硬件的,因此,只有当设备厂商将它们配备到设备上去的情况下才可用。光线传感器是个特例,因为大部分设备厂商都会安装这个以便控制屏幕亮度,除此之外,其它的环境传感器并非是在所有设备上都存在的。所以,在运行时,请在尝试从某个环境传感器获取数据之前先检查它是否存在。

大部分的运动传感 器和位置传感器 会在每个 SensorEvent 中返回一个多维的传感器数 数组 而环境传感 器就不一样,它们在每个数据事件中只返回一个单个的传感器数值。例如, 以°C为单位返回的温度值,或者,以 hPa 为单位返回的气压值。另外 ,对于运动传感 器和位置传感 通常需要进行高 通过滤或低通过滤, 而环境传感 器呢, 一般不需要进行数据过滤 或数据处理。 1列出 了安卓平台支持的环境传感器的概要。

1.  安卓平台支持 的环境传感器。

传感

传感器事件数据

度量单位

数据说明

TYPE_AMBIENT_TEMPERATURE

event.values[0]

°C

环境气温

TYPE_LIGHT

event.values[0]

lx

TYPE_PRESSURE

event.values[0]

hPambar

环境气压。

TYPE_RELATIVE_HUMIDITY

event.values[0]

%

环境相对湿度

TYPE_TEMPERATURE

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 opinions

Your name:Email:Website url:Opinion content: