Windows Phone 8 Uygulamasında Accelerometer Sensöründen Veri Okuma

windows-phone-8
PRO

Windows Phone 8 Uygulamasında Accelerometer Sensöründen Veri Okuma

​ Windows Phone cihazlar, cihazın hareket-yön-ivme gibi çeşitli bilgilerini yazılımsal olarak algılamamıza yardım eden algılayıcılar (sensör) ile birlikte geliyorlar. Accelerometer sensörü cihazın X, Y, Z eksenlerindeki ivme bilgisini algılar ve işletim sistemi aracılığıyla yazılıma iletebilir. Öncelikle projenin References kısmında Microsoft.Devices.Sensors referansının olduğunu kontrol edelim ve sınıfın using kısmına Microsoft.Devices.Sensorsnamespace’ini ekleyelim;using Microsoft.Devices.Sensors; Accelerometer sensörüne erişebilmek ve verisini okuyabilmek içinAccelerometer sınıfından yeni bir instance oluşturmalıyız, bunun için static olanGetDefault() methodunu kullanabiliriz;var _accelerometer = Accelerometer.GetDefault(); Sensör verisini bir defa okumak için _accelerometer değişkenininGetCurrentReading() methodunu kullanıyoruz. Methoddan geri dönenAccelerometerReading tipindeki cevabın içerisindekiAccelerationX,AccelerationY,AccelerationZproperty’leri sayesinde ivme bilgisini elde edebiliriz;var reading = _accelerometer.GetCurrentReading(); if (reading != null) { var x = string.Format(“{0,5:0.00}”, reading.AccelerationX); var y = string.Format(“{0,5:0.00}”, reading.AccelerationY); var z = string.Format(“{0,5:0.00}”, reading.AccelerationZ); } Eğer ivme bilgisini sürekli okumamız gerekiyorsa _accelerometer değişkenininReadingChanged event’ini kullanabiliriz,Start() method’unu çağırmayı unutmamamız lazım;_accelerometer.ReadingChanged += new EventHandler(AccelerometerReadingChanged); _accelerometer.Start();public void AccelerometerReadingChanged(object sender, AccelerometerReadingEventArgs e) { var x = string.Format(“{0,5:0.00}”, e.X); var y = string.Format(“{0,5:0.00}”, e.Y); var z = string.Format(“{0,5:0.00}”, e.Z); } Accelerometer verisine ihtiyacımız kalmadığında _accelerometer değişkenininStop() method’unu çağırmalıyız;_accelerometer.Stop(); X, Y, Z eksenlerindeki değerler -2 ile +2 aralığında değişiyorlar. Yerçekimsiz ortamda değerlerin 0 olması bekleniyor. Eğer telefonu masa üzerine bırakırsak X ve Y değerleri 0, Z değeri -1 olarak okunmalı. Start() methodu çağırıldıktan sonra yaklaşık olarak 50Hz hızında yani saniyede yaklaşık 50 defa ReadingChanged event’i tetiklenecektir. Eğer ReadingChanged event’inin tetiklenme hızını değiştirmek istiyorsak _accelerometer değişkenininReportInterval property’sine yeni bir değer ataması yapmalıyız. Son olarak, _accelerometer değişkenininShaken event’ini kullanarak telefonun sallanma durumunu yakalayabiliriz;_accelerometer.Shaken += new TypedEventHandler<Accelerometer, AccelerometerShakenEventArgs>(Shaken);
​​

 

Arşivler