Pendahaluan
Pada pecobaan kali ini, kita akan mencoba memanfaatkan sensor proximity. Sensor proximity adalah sensor yang mampu mendeteksi jarak obyek yang ada disekitarnya. Rata-rata jarak terjauh obyek yang dapat dideteksi sensor proximity adalah 5cm. Biasanya, sensor proximity diletakkan pada bagian depan (layar) perangkat Android. Sensor ini sering digunakan untuk mendeteksi seberapa dekat layar dengan obyek, kemudian aplikasi akan mematikan layar jika jarak terlalu dekat.
Tujuan
Pada percobaan kali ini kita akan membuat aplikasi sederhana yang akan mengubah warna layar jika sensor proximity mendeteksi obyek yang sangat dekat.
Tahapan
- Buat proyek Android baru pada Android Studio dengan nama Simple Proximity
- Pada
MainActivity.javaimplementasi interfaceSensorEventListenerpada kelas. Implementasi method yang dibutuhkan oleh interfaceSensorEventListenerseperti pada gambar dibawah ini.

Pada
MainActivity.javaakan ditambahkan methodonSensorChanged()danonAccuracyChange(). MethodonSensorChanged()akan dijalankan ketika terjadi perubahan nilai dari sensor. Sedangkan methodonAccuracyChange()dipanggil ketika terjadi perubahan nilai akurasi dari sensor.Dekalarsi obyek
SensorManagerdanSensor. Tambahkan variable booleanisSensorPresentsebagai variabel untuk pengecekan ketersediaan sensor
SensorManager sensorManager;
Sensor sensor;
Boolean isSensorPresent = false;
- Inisiasi obyek
SensorManagerdanSensorpada methodonCreate()
// Inisiasi SensorManager
sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE);
// Cek sensor proximity
if(sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) != null) {
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
isSensorPresent = true;
} else {
isSensorPresent = false;
Toast.makeText(this, "Sensor tidak ditemukan", Toast.LENGTH_LONG).show();
}
- Lakukan override untuk fungsi
onResume()danonPause(). Pada lifecycle onResume, kita akan meregistrasi sensor kedalam activity. Cara ini dilakukan untuk mendapatkan nilai hasil pembacaan sensor dan dijalankan pada activity. Kemudian pada lifecycle onPause kita akan melakukan unregister sensor. Hal ini dilakukan untuk melepas listner sensor, sehingga pembacaan sensor tidak terus menerus dijalankan ketika activity tidak dapat dilihat user. Isikan kode seperti berikut pada methodonResume()danonPause()
@Override
protected void onResume() {
super.onResume();
if(isSensorPresent){
// SENSOR_DELAY_NORMAL digunakan untuk mendelay pembacaan data sensor
// dengan kecepatan normal
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
protected void onPause() {
super.onPause();
if(isSensorPresent){
sensorManager.unregisterListener(this);
}
}
- Pada method
onSensorChanged()terdapat parameter dengan obyek bernamaSensorEvent.SensorEventmerupakan obyek yang menyimpan data dari hasil pembacaan sensor. MethodonSensorChanged()akan terus dipanggil selama ada perubahan data dari hasil pembacaan sensor. Tambahkan kode dibawah ini didalam methodonSensorChanged().
if(sensorEvent.values[0] < sensor.getMaximumRange()){
// Jika terdapat obyek sangat dekat dengan sensor proximity
getWindow().getDecorView().setBackgroundColor(Color.RED);
} else {
// Jika tidak ada obyek yang dekat dengan sensor proximity
getWindow().getDecorView().setBackgroundColor(Color.BLUE);
}