Platform Android menyediakan empat sensor yang memungkinkan Anda memantau berbagai properti lingkungan. Anda dapat menggunakan sensor ini untuk memantau kelembapan udara relatif, pencahayaan, tekanan sekitar, dan suhu sekitar di dekat perangkat Android. Keempat sensor lingkungan tersebut berbasis hardware dan hanya tersedia jika produsen perangkat telah mem-build-nya ke dalam perangkat. Dengan pengecualian sensor cahaya, yang digunakan sebagian besar produsen perangkat untuk mengontrol kecerahan layar, sensor lingkungan tidak selalu tersedia di perangkat. Oleh karena itu, sangat penting untuk memastikan di waktu proses mana sensor lingkungan tersedia sebelum Anda mencoba mendapatkan data darinya.
Tidak seperti kebanyakan sensor gerak dan sensor posisi, yang menampilkan array multi-dimensi dari nilai sensor untuk setiap SensorEvent
, sensor lingkungan menampilkan nilai sensor tunggal untuk setiap peristiwa data. Misalnya, suhu dalam °C atau tekanan dalam hPa.
Selain itu, tidak seperti sensor gerak dan sensor posisi yang sering memerlukan pemfilteran tingkat tinggi atau rendah, sensor lingkungan biasanya tidak memerlukan pemfilteran data atau pemrosesan data. Tabel 1 menyajikan ringkasan sensor lingkungan yang didukung di platform Android.
Tabel 1. Sensor lingkungan yang didukung di platform Android.
Sensor | Data peristiwa sensor | Satuan ukuran | Deskripsi data |
---|---|---|---|
TYPE_AMBIENT_TEMPERATURE |
event.values[0] |
°C | Suhu udara sekitar. |
TYPE_LIGHT |
event.values[0] |
lx | Pencahayaan. |
TYPE_PRESSURE |
event.values[0] |
hPa atau mbar | Tekanan udara sekitar. |
TYPE_RELATIVE_HUMIDITY |
event.values[0] |
% | Kelembapan udara relatif. |
TYPE_TEMPERATURE |
event.values[0] |
°C | Suhu perangkat.1 |
1 Penerapan antar setiap perangkat akan berbeda-beda. Sensor ini tidak lagi tersedia di Android 4.0 (API Level 14).
Menggunakan sensor cahaya, tekanan, dan suhu
Data mentah yang Anda peroleh dari sensor cahaya, tekanan, dan suhu biasanya tidak memerlukan kalibrasi, pemfilteran, atau modifikasi, yang menjadikannya sebagai sensor termudah untuk digunakan. Untuk memperoleh data dari sensor ini, terlebih dahulu Anda harus membuat instance class SensorManager
, yang dapat digunakan untuk mendapatkan instance sensor fisik.
Kemudian Anda harus mendaftarkan pemroses sensor dalam metode onResume()
, dan mulai menangani data sensor yang masuk dalam metode callback onSensorChanged()
. Kode berikut menunjukkan cara melakukannya:
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); } }
Anda harus selalu menyertakan penerapan metode callback onAccuracyChanged()
dan onSensorChanged()
. Selain itu, pastikan Anda selalu membatalkan pendaftaran sensor saat aktivitas dijeda. Hal ini mencegah sensor agar tidak terus mendeteksi data dan menguras baterai.
Menggunakan sensor kelembapan
Anda dapat memperoleh data mentah kelembapan relatif menggunakan sensor kelembapan dengan cara yang sama seperti menggunakan sensor cahaya, tekanan, dan suhu. Akan tetapi, jika perangkat memiliki sensor kelembapan (TYPE_RELATIVE_HUMIDITY
) dan sensor suhu (TYPE_AMBIENT_TEMPERATURE
), Anda dapat menggunakan kedua aliran data ini untuk menghitung titik embun dan kelembapan mutlak.
Titik embun
Titik embun adalah suhu saat volume udara tertentu harus didinginkan, pada tekanan barometrik yang konstan, agar uap air terkondensasi menjadi air. Persamaan berikut menunjukkan cara menghitung titik embun:
![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?authuser=0&hl=id)
Di mana,
- td = suhu titik embun dalam derajat C
- t = suhu aktual dalam derajat C
- RH = kelembapan aktual relatif dalam persen (%)
- m = 17,62
- Tn = 243,12
Kelembapan mutlak
Kelembapan mutlak adalah massa uap air dalam volume udara kering yang ditentukan. Kelembapan mutlak diukur dalam gram/meter3. Persamaan berikut menunjukkan cara menghitung kelembapan mutlak:

Di mana,
- dv = kelembapan mutlak dalam gram/meter3
- t = suhu aktual dalam derajat C
- RH = kelembapan aktual relatif dalam persen (%)
- m = 17,62
- Tn = 243,12 derajat C.
- A = 6,112 hPa