38-Android Studio Sensörler

Android cihazımız’da çeşitli sensörler bulunmaktadır. Bunları ısı sensörü, yatay, dikey ve yükseklik değişimlerini haberdar eden sensörler, basınç sensörleri, yakınlık sensörleri ya da manyetik alanı haberdar eden sensörler olarak ayırabiliriz.

Başlıca sensörleri tanımlayacak olursak;

Sensor.TYPE_ACCELEROMETER

Telefon’unuzun yatay , dikey ve yükseklik değişimlerini veren sensör’dür.Telefon’unuzu düz konumdan sola doğru yatırınca yatay değer artmaya başlıyacaktır tam tersi durumda ise eksi değere düşmeye başlıyacaktır. (m/s2) (Eğer ben yatay kısmı x kısmı sallarsam değiştirirsem telefon sallanmış kabul edilir. )

Sensor.TYPE_GYROSCOPE

Hemen bir üstteki sensör gibi 3 eksen değerini geri döndürür tek farkı geri dönüş birimi derece cinsindendir.

Sensor.TYPE_LIGHT

Bulunan ortamın aydınlatmasını veren sensör’dür.Geriye tek bir değer döner

Sensor.TYPE_MAGNETIC_FIELD

Cihazınızın içerisinde bulunduğu manyetik alanı yatay,dikey ve yükseklik olarak 3 değer olarak verir.

Sensor.TYPE_PRESSURE

Telefon üzerindeki basıncı KPa(KiloPascal) cinsinden verir

Sensor.TYPE_TEMPERATURE

Santigrat cinsinden sıcaklığı geri döner.

Sensor.TYPE_PROXIMITY

Yakınlık sensör’üdür.Hedef ile cihaz arasındaki mesafeyi hesaplayabilir.

Sensörleri Kullanmak

Öncelikle bir Sensor Eylem Dinleyicisi oluşturuyoruz. Sensör değerlerini izlemek için onSensorChanged yöntemini ve Sensor doğruluğundaki değişikliklere tepki vermek içinde onAccuracyChanged yöntemini kullanıyoruz.

onSensorChanged yöntemindeki SensorEvent parametresi bir sensör eylemini açıklamak için dört özellik içerir.

  • sensor Eylemi tetikleyen sensör nesnesi.
  • accuracy Sensör’ün eylem tetiklendiği andaki doğruluğu.
  • values Algılanan yeni değerleri içeren bir float dizisi.
  • timestamp Sensör eyleminin gerçekleştiği zaman.

Bir sensörün doğruluğundaki değişiklikleri onAccuracyChanged yöntemini kullanarak izleyebiliriz.Bu yöntemde accuracy değeri aşağıdaki sabitlerden birini kullanarak izlenen sensörün doğruluğundan geri bildirimi temsil etmektedir.

  • SENSOR_STATUS_ACCURACY_LOW Sensör’ün düşük doğrlukla bildirim yaptığını ve kalibre edilmeye ihtiyaç duyduğunu gösterir.
  • SENSOR_STATUS_ACCURACY_MEDIUM Sensör verisinin ortalama doğrulukta olduğunu ve kalibre edilerek iyileştirilebiliceğini gösterir.
  • SENSOR_STATUS_ACCURACY_HIGH Sensör’ün mümkün olan en iyi  doğrulukta olduğunu gösterir.
  • SENSOR_STATUS_ACCURACY_UNRELIABLE Sensör verirsinin güvenilir olmadığını yani kalibrasyon gerektiğini yada okumaların mümkün olmadığını gösterir.

Aşağıdaki örnek ile varsayılan yakınlık sensör’ü için , normal güncelleme oranında, bir sensör eylem dinleyicisi’ni kaydettirir.

Sensör Yöneticisi güncelleme sabitleri

  • SENSOR_DELAY_FASTEST Mümkün olan en hızlı güncelleme oranıdır.
  • SENSOR_DELAY_GAME Oyumlar için en uygun güncelleme oranıdır.
  • SENSOR_DELAY_NORMAL Varsayılan güncelleme oranını seçer.
  • SENSOR_DELAY_UI Kullanıcı arabirimi(UI) özelliklerini güncellemek için uygun bir oran belirler.

Burada seçtiğimiz oranlar kesin değildir. Sensör yöneticisi seçtiğimiz orandan daha hızlı veya daha yavaş çalışabilir. Sensörümüzü uygulamamızda kullanırken  güç kaynağımızı tüketmemek adına mümkün olan en uzun aralıkta güncelleme yapmalıyız.

Ayrıca uygulamada güncellemeye ihtiyaç kalmadığında Sensor Eylem Dinleyici kayıtlarını kaldırmamız gereklidir.

sensorManager.unregisterListener(mySensorEventListener);

Sadece aktivite etkin iken kullanılıyor olduklarından emin olmak için, sensör eylem dinleyicisinin kaydetme ve silme işlemlerini onResume ve onPause yöntemleri içerisinde gerçekleştirmemiz gereklidir.

 

Şimdi bir örnek üzerinde anlatalım..

MainActivity : 

main_activity.xml

 

 

Post Author: umiitkose

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">