28 Eylül 2009

Windows Mobile 6.5 – Widget System State

Windows Mobile 6.5 üzerinde geliştirilen widget’ larda yararlanılabilecek bir başka nokta ise bir önceki yazımızda ifade ettiğimiz “widget” javascript objesi üzerinden oluşturulabilecek SystemState objesidir. SystemState objesi vasıtasıyla geliştirdiğiniz widget’ lar içerisinden “bazı belirli” sistemsel özelliklerin değerlerine ulaşabilir, bu değerlerin değiştiğini algılayabilir ve istenilen kod bloklarını çalıştırabilmektesiniz. Aşağıdaki listede SystemState objesi üzerinden ulaşılabilecek değerlerin bir listesi listelenmiştir.

CradlePresent – Cihazın “cradle” (cihazın bilgisayarınız ile olan fiziksel bağlantısı) üzerine takılıp takılmadığının değerini döndürür.

DisplayRotation – Ekranın anlık görüntüsünün kaç derecelik bir açıyla gösterildiğinin değerini döndürür. (0 – 360 Derece Arası)

PhoneHomeService – Cihazın anlık network ile kayıtlı olup olmadığının değerini döndürür.

PhoneOperatorName – Cihazın anlık network (operatör) isim değerini döndürür.

PhoneRomaing – Cihazın anlık olarak “Roaming (Yurtdışında farklı bir operatör üzerinden bağlantı)” içerisinde olup olmadığının değerini döndürür.

PhoneSignalStrength – Cihazın operatör ile arasındaki bağlantı kalitesinin değerini yüzdelik olarak döndürür.

PowerBatteryState – Cihazın anlık batarya güç değerini düşük, güçlü, orta şeklinde tanımlı değerlerinin numerik karşılıklarını döndürür.

PowerBatteryStrength – Cihazın anlık batarya güç değerini yüzdelik değer olarak döndürür.

Sıra geldi widget’ ı çalıştıracak olduğumuz fiziksel mobil cihazımız üzerinde widget üzerinden bu değerlerin alınmasına. Konfigurasyon dosyamız daha önceki yazımızda olduğu gibi aşağıdaki şekilde tanımlanmış, config.xml isim ve dosya uzantısıyla kaydedilmiştir. Konfigürasyon (manifest) dosyasının dışında, bu dosya içerisinde belirlenen ikon (*.png uzantılı) ve kaynak HTML dosyası da konfigürasyon dosyası ile birlikte aynı lokasyona yerleştirilmiştir.

(Resimlerin büyük halleri için üzerilerine tıklayınız)



Hiç vakit kaybetmeden kaynak olarak kullanılacak olan HTML dosyasının içeriğini hazırlıyoruz. Yukarıda bahsedildiği üzere amacımız geliştirdiğimiz widget içerisinden bize izin verilen ölçüde bazı sistemsel değerleri çekmek ve widget içerisinde uygun yerlerde görüntülemektir. Bu noktada bu değerlere ulaşabileceğimiz SystemState objesini widget javascript objesinin createObject fonksiyonuna “SystemState” değerini gönderek oluşturuyor ve ss isminde bir değişkende tutuyoruz. Bir sonraki aşamada ise ss isimli SystemState değişkeni üzerinden yukarıdaki tabloda isimleri verilen özelliklere ulaşıyor ve bu özelliklerin değerlerini aşağıdaki ekran görüntüsünde gösterildiği üzere bir div içerisinde görüntüleyecek javascript fonksiyonunu oluşturuyoruz.

Bu fonksiyonu ise HTML dosyamız içerisinde oluşturduğumuz button kontrolünün client side click event’i (onlick) tetiklendiğinde çağırıyoruz. İşte bu kadar !

Widget’ ımızı paketlemeye geçmeden önce ihtiyaç duyabileceğimiz önemli bir konuya daha dikkat çekmemiz gerekiyor. Değişikliklerin algılanması. Ya biz yukarıda listelenen sistemsel değerlerin herhangi birinde bir değişiklik olduğunda bu değişiklikten haberdar olmak ve bir javascript fonksiyonunu çalıştırmak istiyorsak ?

Bu ihtiyacın çözümü için yukarıda listelenen SystemState değerleri içerisinde çok basit bir yöntem bulunmaktadır. Değişikliğini algılamak istediğiniz SystemState değerinin üzerinden Javascript addEventListener fonksiyonu ile “changed” olayını yakalayan kod bloğunu aşağıdaki ekran görüntüsündeki gibi ekliyoruz. “changed” yani değişiklik durumu söz konusu olduğunda ise addEventListener fonksiyonunun ikinci parametresinde verilen fonksiyon olan “Degisti” fonksiyonu otomatik olarak çağırılacaktır. Örneğimizde telefonun güç değeri değiştiğinde ekrana mesaj kutusu getiren bir kod bloğunu ekliyoruz.

Daha önce yazdığımız SistemOzellikleriniYukle fonksiyonu içerisine EventHandler’ ımızı ekliyoruz. Ardından bu EventHandler içesinde işaret edilen “Degisti” isimli Javascript fonksiyonumuzu yazıyoruz.

Sıra geldi widget’ ımızı paketlemeye. Tüm gerekli dosyaları seçip zipledikten sonra uzantısını *.widget ya da *.wgt olarak değiştiriyoruz.

Widget’ a mobil cihaz emulatörümüz üzerinden erişip kurulum işlemlerine başlıyoruz.

Widget’ ın başarılı bir şekilde kurulmasından sonra çalıştırıp sayfa içerisindeki button kontrolüne tıklıyoruz ! Hepsi bu kadar !



Emulatör ayarlarından batarya gücünü azaltıyoruz.



OK’ e tıkladığımızda değişikliğin algılandığını ve mesaj kutusunun ekrana geldiğini görüyoruz ! İşte bu kadar !



Hazırladığımız örnek widget’ ı ve diğer dosyaları buradan indirebilirsiniz. Bir başka yazıda daha görüşmek üzere.

Hiç yorum yok:

Yorum Gönder