11 Mayıs 2017 Perşembe

SensorEventListener Arayüzü

Giriş
Şu satırları dahil ederiz. Sensör'ün fiziksel olarak nasıl çalıştığı burada
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
onAccuracyChanged metodu
İmzası şöyle
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {...}
onSensorChanged metodu
Accelerometer için önce değerleri saklayacağımız bir dizi yaratırız.
float[] acceleration = new float[3];
Daha sonra her tetiklenmede bu değerleri saklarız.
public void onSensorChanged(SensorEvent event){
  if(event.sensor.getType() ==  Sensor.TYPE_ACCELEROMETER){
    acceleration[0] = event.values[0];
    acceleration[1] = event.values[1];
    acceleration[2] = event.values[2];
    ...
  }
}
Eğer aynı listener farklı sensor tipleri için de kullanılıyorsa sensor tipine göre ayrım yapılabilir. Şöyle yaparız.
@Override
public void onSensorChanged(SensorEvent event) {
  if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
    ...
  }
}
Toplamı alıp bir öncekinin farkı ile karşılaştırabiliriz.
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
float total = x + y + z;

if (Math.abs(total - totalPrev) > 20) {...}
SensorEvent Sınıfı
Sensor ve Value Alanları
Olayın hangi sensor tarafından gönderildiğini bildirir ve değerleri verir. Şöyle yaparız.
@Override
public void onSensorChanged(SensorEvent event) {

  Sensor sensor = event.sensor;
  float[] values = event.values;
  ...
}