SensorEventListener etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SensorEventListener etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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;
  ...
}