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