Sign In

 

 

Windows Phone 8 Uygulamasında Accelerometer Sensöründen Veri OkumaWindows Phone 8 Uygulamasında Accelerometer Sensöründen Veri Okuma1072016-01-26T13:45:00Z 26.1.2016 13:45:00Engin Polat<div class="ExternalClass487E0E64EB7E49378D77F2E30BBE07F8">​ <p> <strong>Windows Phone</strong> cihazlar, cihazın <em>hareket</em>-<em>yön</em>-<em>ivme</em> gibi çeşitli bilgilerini yazılımsal olarak algılamamıza yardım eden algılayıcılar (<em>sensör</em>) ile birlikte geliyorlar. <strong>Accelerometer</strong> sensörü cihazın <em>X</em>, <em>Y</em>, <em>Z</em> eksenlerindeki ivme bilgisini algılar ve işletim sistemi aracılığıyla yazılıma iletebilir. Öncelikle projenin <em>References</em> kısmında <em>Microsoft.Devices.Sensors</em> referansının olduğunu kontrol edelim ve sınıfın <em>using</em> kısmına <em>Microsoft.Devices.Sensors</em><em>namespace</em>'ini ekleyelim; </p><pre>using Microsoft.Devices.Sensors;</pre> <strong>Accelerometer</strong> sensörüne erişebilmek ve verisini okuyabilmek için <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer" target="_blank">Accelerometer</a> sınıfından yeni bir <em>instance</em> oluşturmalıyız, bunun için <em>static</em> olan <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer.getdefault" target="_blank">GetDefault()</a> methodunu kullanabiliriz; <pre>var _accelerometer = Accelerometer.GetDefault();</pre> Sensör verisini bir defa okumak için <em>_accelerometer</em> değişkeninin <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer.getcurrentreading" target="_blank">GetCurrentReading()</a> methodunu kullanıyoruz. Methoddan geri dönen <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometerreading" target="_blank">AccelerometerReading</a> tipindeki cevabın içerisindeki <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometerreading.accelerationx" target="_blank">AccelerationX</a>, <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometerreading.accelerationy" target="_blank">AccelerationY</a>, <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometerreading.accelerationz" target="_blank">AccelerationZ</a><em>property</em>'leri sayesinde ivme bilgisini elde edebiliriz; <pre>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); }</pre> Eğer ivme bilgisini sürekli okumamız gerekiyorsa <em>_accelerometer</em> değişkeninin <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer.readingchanged" target="_blank">ReadingChanged</a> event'ini kullanabiliriz, <a href="http://msdn.microsoft.com/library/windows/apps/microsoft.devices.sensors.accelerometer.start" target="_blank">Start()</a> method'unu çağırmayı unutmamamız lazım; <pre class="brush:csharp">_accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(AccelerometerReadingChanged); _accelerometer.Start();</pre><pre>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); }</pre> <strong>Accelerometer</strong> verisine ihtiyacımız kalmadığında <em>_accelerometer</em> değişkeninin <a href="http://msdn.microsoft.com/library/windows/apps/microsoft.devices.sensors.accelerometer.stop" target="_blank">Stop()</a> method'unu çağırmalıyız; <pre>_accelerometer.Stop();</pre> <em>X</em>, <em>Y</em>, <em>Z</em> eksenlerindeki değerler <em>-2</em> ile <em>+2</em> aralığında değişiyorlar. Yerçekimsiz ortamda değerlerin <em>0</em> olması bekleniyor. Eğer telefonu masa üzerine bırakırsak <em>X</em> ve <em>Y</em> değerleri <em>0</em>, <em>Z</em> değeri <em>-1</em> olarak okunmalı. <em>Start()</em> methodu çağırıldıktan sonra yaklaşık olarak <em>50Hz</em> hızında yani saniyede yaklaşık <em>50</em> defa <em>ReadingChanged</em> event'i tetiklenecektir. Eğer <em>ReadingChanged</em> event'inin tetiklenme hızını değiştirmek istiyorsak <em>_accelerometer</em> değişkeninin <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer.reportinterval" target="_blank">ReportInterval</a> property'sine yeni bir değer ataması yapmalıyız. Son olarak, <em>_accelerometer</em> değişkeninin <a href="http://msdn.microsoft.com/library/windows/apps/windows.devices.sensors.accelerometer.shaken" target="_blank">Shaken</a> event'ini kullanarak telefonun sallanma durumunu yakalayabiliriz; <pre>_accelerometer.Shaken += new TypedEventHandler<Accelerometer, AccelerometerShakenEventArgs>(Shaken);</pre><p></p>​​ </div>windows-phone-8-uygulamasinda-accelerometer-sensorunden-veri-okumahttp://www.bilgeadam.com/blog/Lists/Photos/PostImages/windows-phone-8.jpgWindows 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.bluePROYazılım

Yazara Soru Sor




SORU GÖNDER