Windows 8 - Sensörler

Windows 8 hakkında keşfedilmesi gereken ilk şey sistem düzeyindeki çalışmalarında bilgisayar kullanımlarına göre daha çok pil ömrünü koruyor olmasıdır.
Bu makalemde size sensörler hakkında bilgi veriyor olacağım.
Sensörler ve Metro Style Uygulamaları
WinRT için özel olarak tasarlanmış olan bir sensör API’si bulunuyor. Bu API'ler sayesinde, uygulama geliştiriciler herhangi bir Metro Style uygulamasının donanım üzerindeki sensörlerden faydalanarak zenginleşmesini sağlayabiliyorlar. Sensör API 'leri anlaşılır ve basit bir şekilde tasarlanmış olduğundan dolayı, uygulama geliştiriciler rahat ve kolay bir şekilde bunları kullanabiliyor ve tasarladıkları sanal gerçeklik ve artırılmış gerçeklik konularındaki uygulamalarda da sensörlerden topladıkları verileri kullanabiliyorlar. Ayrıca, tüm oyun geliştiriciler ve Masaüstü uygulama geliştiriciler için de Win32 API üzerinden sensörlere erişim mümkündür. Hatta WinRT üzerinde Javascript kullanarak da uygulama geliştirip, yine javascript ile bu API’dan faydalanmak mümkündür. Aşağıda, bununla ilgili basit bir örnek bulabilirsiniz. Bu örnek, ivmeölçerin verilerine çalışma zamanında nasıl erişilebileceğini göstermektedir.
var accelerometer;
accelerometer = Windows.Devices.Sensors.Accelerometer.getDefault();
accelerometer.addEventListener("readingchanged",onAccReadingChanged);
function onAccReadingChanged(e) {
var accelX = e.reading.accelerationX;
var accelY = e.reading.accelerationY;
var accelZ = e.reading.accelerationZ;
}
Windows 8 üzerinde Sensörleri kullanmakta olan uygulamaları inceleyebilir ve fikir edinebilir, sonrasında da kendi uygulamalarınızı geliştirmeye başlayabilirsiniz. Yalnız, unutmayın ki bunu sadece Windows 8 kaynaklı bir sistemle yapabilirsiniz.
Sensör Grupları
Sensörleri,
Simple Data
,
Raw Sensor Data
ve
Sensor Fusion Data
olarak 3 farklı gruba ayırabiliriz. Uygulama içerisinde sensörleri kullanabilmek için öncelikle,
Windows.Devices.Sensors
isimalanı altındaki sınıfları kullanmalısın.
Cihazın oryantasyonunu ve değişimini tespit edebileceğin, Simple Device Orientation Sensörü, Işık Sensörü (Light Sensor), İvmeölçer (Accelerometer), Gyro, Pusula (Compass), Inclinometer ve Device Orientation, Windows 8 ile birlikte kullanılabilecek olan sensörlere örnek olarak verilebilir.
Sensörler İçin Geliştirici Destekleri
Windows 8 sensörleri genelde aşina olduğumuz özelliklere sahiptir. Oyunlar, Ticari uygulamalar, çeşitli araçlar (tools) ve yardımcı programlar, sensör özelliklerinin kullanımına birer örnek teşkil edebilirler. Sensörler, 3D Accelerometer (ivmeölçer) ve 3D Magnetometer (manyetik alan ölçer) destekleri ile oluşmaktadır. Bu kombinasyonlarda 6 eksenli hareket algılama ve yönlendirme sistemi meydana gelmektedir.
Sensörler sayesinde 3 boyutlu tüm hareketler algılanabiliyor. Bu sensörlerin kullanıldığı alanlar ise, gyro, accelerometer ve magnetometer'dır. Arayüzlerinde ise Pass-Through ve Sensor Fusion bulunmaktadır.
Bu sensörlerden biraz bahsedecek olursak, sensörler yardımıyla cihazların 3 boyutlu hareketlerini uygulamalarımız içerisinden ilgili parametreleri kullanarak elde edebiliyor ve bu hareketlere ait verileri işleyebiliyoruz.
Herhangi bir sensöre erişebilmek için, Appication Manifest içerisinde, aşağıdaki kod bloğunda verilen örneğe benzer bir tanımlama yapmak gerekmektedir.
Windows.Media API'leri
Windows.Media API içerisinde mikrofon (microphone), vidyo (video) ve ses (audio) gibi özellikleri sensörlerle birlikte kullanabilmemiz için oluşturulmuş bir yapı bulunmaktadır.
Media elementi, kendi içerisinde CameraCaptureUI ve MediaeCapture API özelliklerini barındırmaktadır. Bunlarla birlikte arka planda sık sık kullanabileceğimiz metotlar yardımı ile media elementinin video formatını belirleyebiliriz.
Uygulamalarınızda kamera ve mikrofonlara erişmek için application manifest içerisinde gerçekleştirmeniz gereken tanımlamalar aşağıdaki gibidir.
Bilmemiz gereken diğer bir özellik ise C#'da yazdığımız bir kod JavaScript'te de aynı şekide Media elementini çağırabilmektedir. Tüm bunları sağlayan özellik ise WinRT API’lerinin desteklenen tüm dillerle aynı şekilde kullanılabilmesidir. WinRT API'leri sayesinde uygulamalarımız asenkron bir şekilde çalışmaktadır. WinRT API'leri, işletim sistemine ve bununla birlikte servislere de direkt bir şekilde erişim sağlamaktadır. Bu sebepten dolayı WinRT API'lerinin C#, JavaScript ve C++'da platforma tam bir uyum sağladığını görebiliyoruz.
Birçok akıllı telefon ve mobil cihazların sahip olduğu özellik olan; grafiklerin ekranda dönmesi sonucunda boy oranlarına göre yeni yönlerinin ekrana adapte olabilmesi özelliği, otomatik ekran rotasyonu (Automatic screen rotation) olarak bilinmektedir. Bir cihazın elde edilen verileri ile o cihazın temel yönlerini belirlemenize olanak sağlanır. Amaç, otomatik bir şekilde ekranın yönelimlerine, insanların yazılımsal yada donanımsal bir şekilde müdahele etmesine gerek kalmadan daha doğal bir şekilde cihazlarını kullanabilmelerini sağlamaktır. Sensörler için temel hareketler bulunmaktadır. Uygulamalarımızda da yine bu hareketlere ait verileri çebileceğimiz API'ler içerisinde uygun metotları kullanacağız. Sensörlerdeki temel hareketler ise;
Shake
,
Rotate
ve
Flip
'tir. Bunlar hazır olaylar (event) olup, projenizde çağırarak otomatik olarak verileri çekebilirsiniz.
Uygun Parlaklık
Windows 8' de göze çarpan ilk sistem özelliklerden birisi Adaptive Brightness olarak bilinen otomatik ekran parlaklığı kontrolüdür. Mobil ve Laptop'ları hedef alan bir özellik ise Ambient light sensors (ALS) olarak bilinen ortam ışığı sensörleridir. Günümüzde ekran panelleri yaklaşık iki katı yoğunlukta parlaklık seviyelerini desteklemektedir. Dinamik ortam ışığı değişen koşullara göre ekran parlaklığını kontrol ederek, konforlu okuma düzeyini optimize eder ve ekran karanlık ortamlarda parlaklığını daha düşük bir seviyede ayarlayacağı için pil ömrü kaybedilmeyecektir.
Ortam ışıklarını algılayabilecek Light Sensor'ler bulunmaktadır. Ortamdaki ışığı algılayıp, uygulamalarda hazır event'lar sayesinde çektiğimiz verileri işlemlere sokabilir ve uygulamanın bu verilerle nasıl çalışması gerektiğini belirleyebiliriz. Light Sensor'ler ise; Dark, Indoors, Outdoors şeklindedir.
Tüm bunlarla ilgili verileri uygulamamıza çekebilmemiz için sekronize bir şekilde çalışmamız gerekiyor. Bunun için de methotlarımızda C# 5.0 yenilikleriyle birlikte gelen async - await anahtar kelimelerini kullanarak uygulama geliştirmemiz gerekmektedir. Böylelikle çekebileceğimiz pozisyonları sekronize bir şekilde işlemlere sokabiliriz. Keyifli Çalışmalar Dilerim.
Yorumlar