Android 플랫폼은 다양한 환경 속성을 모니터링할 수 있는 센서 4개를 제공합니다. 이러한 센서를 사용하여 상대 주변 습도, 조도, 주변 압력 및 80도. 4개의 환경 센서는 모두 하드웨어 기반입니다 기기 제조업체에서 기기에 내장한 경우에만 사용할 수 있습니다. 단, 대부분의 기기 제조업체가 화면 밝기, 주변 환경을 제어하는 데 사용하는 광센서 기기에서 센서를 항상 사용할 수 있는 것은 아닙니다. 그렇기 때문에 환경 센서의 존재 여부를 런타임에 확인( 있습니다.
센서의 다차원 배열을 반환하는 대부분의 움직임 감지 센서 및 위치 센서와 달리
값이 SensorEvent
이므로 환경 센서는
값을 정의합니다. 예를 들어 온도는 °C, 압력은 hPa로 반환됩니다.
또한 종종 고역 전달 또는 저역 통과를 요구하는 움직임 감지 센서 및 위치 센서와는 달리
필터링, 환경 센서에는 일반적으로 데이터 필터링이나 데이터 처리가 필요하지 않습니다. 테이블
1은 Android 플랫폼에서 지원되는 환경 센서의 요약을 제공합니다.
표 1. Android 플랫폼에서 지원되는 환경 센서
센서 | 센서 이벤트 데이터 | 측정 단위 | 데이터 설명 |
---|---|---|---|
TYPE_AMBIENT_TEMPERATURE |
event.values[0] |
°C | 주변 기온. |
TYPE_LIGHT |
event.values[0] |
lx | 조도. |
TYPE_PRESSURE |
event.values[0] |
hPa 또는 mbar | 주변 기압. |
TYPE_RELATIVE_HUMIDITY |
event.values[0] |
% | 주변 상대 습도. |
TYPE_TEMPERATURE |
event.values[0] |
°C | 기기 온도.1 |
1 구현은 기기마다 다릅니다. 있습니다. 이 센서는 Android 4.0(API 레벨 14)에서 지원 중단되었습니다.
조도, 압력 및 온도 센서 사용
일반적으로 조도, 압력 및 온도 센서에서 얻는 원시 데이터에는
보정, 필터링 또는 수정과 같은 일반적인 개념이 있습니다. 받는사람
먼저 실제 센서의 인스턴스를 가져오는 데 사용할 수 있는 SensorManager
클래스의 인스턴스를 만듭니다.
그런 다음 onResume()
메서드에 센서 리스너를 등록하고 onSensorChanged()
콜백 메서드에서 수신되는 센서 데이터를 처리하기 시작합니다. 이
방법은 다음과 같습니다.
class SensorActivity : Activity(), SensorEventListener {
private lateinit var sensorManager: SensorManager
private var pressure: Sensor? = null
public override fun onCreate(savedInstanceState: Bundle?) {
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.
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
pressure = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE)
}
override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
// Do something here if sensor accuracy changes.
}
override fun onSensorChanged(event: SensorEvent) {
val millibarsOfPressure = event.values[0]
// Do something with this sensor data.
}
override fun onResume() {
// Register a listener for the sensor.
super.onResume()
sensorManager.registerListener(this, pressure, SensorManager.SENSOR_DELAY_NORMAL)
}
override fun onPause() {
// Be sure to unregister the sensor when the activity pauses.
super.onPause()
sensorManager.unregisterListener(this)
}
}
public class SensorActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor pressure;
@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.
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
pressure = sensorManager.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 millibarsOfPressure = event.values[0];
// Do something with this sensor data.
}
@Override
protected void onResume() {
// Register a listener for the sensor.
super.onResume();
sensorManager.registerListener(this, pressure, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
// Be sure to unregister the sensor when the activity pauses.
super.onPause();
sensorManager.unregisterListener(this);
}
}
항상 onAccuracyChanged()
및 onSensorChanged()
콜백 메서드의 구현을 모두 포함해야 합니다. 또한
활동이 일시중지될 때 항상 센서를 등록 취소해야 합니다. 이렇게 하면
지속적으로 데이터를 감지하고 배터리를 소모합니다.
습도 센서 사용
사용하는 것과 동일한 방식으로 습도 센서를 사용하여 원시 상대 습도 데이터를 얻을 수 있습니다.
조도 센서, 압력 센서, 온도 센서입니다. 하지만 기기에 습도 센서가 둘 다 있는 경우
(TYPE_RELATIVE_HUMIDITY
)와 온도 센서 (TYPE_AMBIENT_TEMPERATURE
)가 있다면 이 두 데이터 스트림을 사용해
이슬점과 절대 습도.
이슬점
이슬점은 주어진 양의 공기가 일정하게 냉각되어야 하는 온도입니다. 수증기가 물로 응축되는 기압 다음 식은 이슬점을 계산할 수 있습니다.
![t_d(t,RH) = Tn· (ln(RH/100) + m·t/(T_n+t)
))/(m - [ln(RH/100%) + m·t/(T_n+t)])](https://developer.android.google.cn/static/images/guide/topics/sensors/dew_point.png?hl=ko)
여기서
- td = 이슬점 온도(˚C)
- t = 실제 온도(˚C)
- RH = 실제 상대 습도(%)
- m = 17.62
- Tn = 243.12
절대 습도
절대 습도는 주어진 양의 건조 공기에 포함된 수증기의 질량입니다. 절대적 습도는 그램/미터3로 측정됩니다. 다음 식은 절대 습도를 계산할 수 있습니다.

여기서
- dv = 절대 습도(그램/미터3)
- t = 실제 온도(˚C)
- RH = 실제 상대 습도(%)
- m = 17.62
- Tn = 243.12˚C
- A = 6.112 hPa