Android プラットフォームには 4 つのセンサーが用意されており、さまざまな環境特性をモニタリングできます。 これらのセンサーを使用して、周囲の相対湿度、照度、周囲の気圧、 周囲の温度に照らして Android 搭載デバイスの近くにあります。4 つの環境センサーはすべてハードウェアベース デバイスに組み込まれている場合にのみ使用できます。ただし、 光センサーは、ほとんどのデバイス メーカーが画面の明るさ、環境、 デバイスでセンサーを利用できない場合があります。このため、データ アナリストが 環境センサーの存在を実行時に検証してから、 できます。
センサーの多次元配列を返すほとんどのモーション センサーや位置センサーとは異なり、
SensorEvent
ごとの値の場合、環境センサーは 1 つのセンサーを返します。
値として使用されます。たとえば、温度(°C)や圧力(hPa)などです。
また、モーション センサーや位置センサーは、多くの場合ハイパス / ローパス
環境センサーは、通常、データのフィルタリングやデータ処理を必要としません。テーブル
に、Android プラットフォームでサポートされている環境センサーの概要を示します。
表 1. Android プラットフォームでサポートされている環境センサー
センサー | センサー イベント データ | 測定単位 | データの説明 |
---|---|---|---|
TYPE_AMBIENT_TEMPERATURE |
event.values[0] |
℃ | 周囲の気温。 |
TYPE_LIGHT |
event.values[0] |
ルクス | 照度。 |
TYPE_PRESSURE |
event.values[0] |
ヘクトパスカルまたはミリバール | 周囲の気圧。 |
TYPE_RELATIVE_HUMIDITY |
event.values[0] |
% | 周囲の相対湿度。 |
TYPE_TEMPERATURE |
event.values[0] |
℃ | デバイスの温度。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
)を使用すると、この 2 つのデータ ストリームを使って計算できます。
絶対湿度で決まります
露点温度
露点温度とは、一定量の空気を冷却しなければならない温度です 気圧、水蒸気が水に凝結するためです。次の式は、 露点温度を計算するには:
![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=ja)
ここで、
- td = 露点温度(℃)
- t = 実際の気温(℃)
- RH = 実際の相対湿度(%)
- m = 17.62
- Tn = 243.12
絶対湿度
絶対湿度とは、一定量の乾燥空気中に含まれる水蒸気の質量で、絶対的 湿度はグラム/メートル3で測定されます。次の式は、 次のように絶対湿度を計算できます。

ここで、
- dv = 絶対湿度(g/m3)
- t = 実際の気温(℃)
- RH = 実際の相対湿度(%)
- m = 17.62
- Tn = 243.12℃
- A = 6.112 ヘクトパスカル