Android平台提供了四种传感器,可让您监控各种环境属性。您可以使用这些传感器来监控Android设备附近的相对环境湿度,照度,环境压力和环境温度。所有四种环境传感器都是基于硬件的,并且只有在设备制造商将其构建到设备中时才可用。除了大多数设备制造商用来控制屏幕亮度的光传感器之外,环境传感器并不总是可用于设备。因此,在您尝试从中获取数据之前,您在运行时验证是否存在环境传感器,这一点尤其重要。
与大多数运动传感器和位置传感器不同,该传感器为每个SensorEvent传感器返回多维传感器值阵列,而环境传感器为每个数据事件返回一个传感器值。例如,以℃为单位的温度或以hPa为单位的压力。另外,与运动传感器和位置传感器(通常需要高通或低通滤波)不同,环境传感器通常不需要任何数据过滤或数据处理。表1提供了Android平台支持的环境传感器的摘要。
表1. Android平台支持的环境传感器。
1 实现因设备而异。此传感器在Android 4.0(API Level 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);
// Get an instance of the sensor service, and use that to get an instance of
// a particular sensor.
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
}
@Override
public final void onSensorChanged(SensorEvent event) {
float millibars_of_pressure = event.values[0];
// Do something with this sensor data.
}
@Override
protected void onResume() {
// Register a listener for the sensor.
super.onResume();
mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
// Be sure to unregister the sensor when the activity pauses.
super.onPause();
mSensorManager.unregisterListener(this);
}
}
您必须始终包含onAccuracyChanged()和onSensorChanged()回调方法的实现。此外,请确保您在活动暂停时始终取消注册传感器。这样可以防止传感器持续感测数据并排空电池。
使用湿度传感器
您可以使用湿度传感器获取原始相对湿度数据,这与使用光照,压力和温度传感器的方式相同。但是,如果设备同时具有湿度传感器(TYPE_RELATIVE_HUMIDITY)和温度传感器(TYPE_AMBIENT_TEMPERATURE),则可以使用这两个数据流来计算露点和绝对湿度。
露点
露点是在恒定的气压下,给定体积的空气必须冷却以使水蒸气冷凝成水的温度。以下公式显示了如何计算露点:
哪里,
t d =以℃为单位的露点温度
t =以摄氏度为单位的实际温度
RH =实际相对湿度百分比(%)
m = 17.62
T n = 243.12
绝对湿度
绝对湿度是给定体积的干燥空气中水蒸气的质量。绝对湿度以克/米3度量。以下公式显示了如何计算绝对湿度:
哪里,
d v =以克/米3为单位的绝对湿度
t =以摄氏度为单位的实际温度
RH =实际相对湿度百分比(%)
m = 17.62
T n = 243.12摄氏度
A = 6.112 hPa
你也应该阅读
- 传感器
- 传感器概述
- 位置传感器
- 运动传感器
-
AccelerometerPlay示例
Lastest Update:2018.04.24
联系我
QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ
公众号推荐: