PhoneGap/Cordova Events API

12 Şubat 2013
Bu yazıyı beğendiysen paylaşmayı unutma :)
Pin It

PhoneGap/Cordova çalışma ortamının kurulması” başlıklı makale de “Hello World” uygulamamızda kullandığımız “deviceready” olay işleyicisini ve Events API’ı altında bulunan diğer olay işleyicileri biraz daha yakından tanıyalım.

Olay işleyicileri, genel olarak tüm yazılım dillerinde bir işlemin başlaması için gerekli şartların oluştuğunda tetiklenen iş yürütücülerdir. Mobil platformalar da ve dolayısı ile Cordova içerisinde de olay işleyiciler olmazsa olmaz unsurların başında geliyor.

Bu yazı ile birlikte bundan sonra yayımlayacağım PhoneGap API’lerine ait konuları, PhoneGap dokümantasyonlarını kullanarak, denenmiş örnekler ile yayımlayacağım. Ayrıca belli API’ların sonunda da “Atölye” adını vereceğim uygulama yazıları da yer alacak.

Şimdi daha fazla beklemeden Events API’ye başlayalım.

“deviceready” Kullanımı

Her PhoneGap/Cordova uygulamasının ayağa kalkıp çalışması için gerekli en temel olay işleyicidir. Bunun anlamı en basit anlamı şudur. Cordova içerisinden bir çağrıda bulunmak ve bir iş gerçekleştirebilmek için mutlaka Cordova’nın tamamen yüklenmesi gerekir. İşte bu yüklemenin tamamlandığı nokta da “deviceready” olayı tetiklenir. Bunu aynen JQuery kütüphanesinin yüklenip yüklenmediğinin kontrolünün yapıldığı “$(document).ready(function()” olayı ile bire bir aynı işlemdir.

Biz de bu durumu “PhoneGap/Cordova çalışma ortamının kurulması” başlıklı yazımda hazırladığım “Hello World” uygulamasında kullanmıştık.

deviceready” olayının temel olarak yazım şekli aşağıdaki gibidir.

document.addEventListener("deviceready", birGeriDonusFonksiyonu, false);

Örnek:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   console.log(“Cihaz kullanıma hazır!”);
}

“pause” ve “resume” Kullanımı

Bir Cordova uygulamasının çalışmasının bekleme durumuna getirilmesi ve daha sonra uygulamanın yeniden kaldığı yerden devam etmesini sağlayan olaylardır. Örneğin; bir uygulamanın çalışması sırasında telefonunuza gelen bir telefon çağrısı sebebiyle uygulamanızın “pause” durumu tetiklenir ve bu duruma göre aksiyon alabilirsiniz. Aynı şekilde işlem tamamlandıktan sonra yeniden kaldığı yerden devam edebilmesi için de “resume” durumu tetiklenir. Bununla ilgili en güzel gerçek dünya örneklerinden biri mobil oyunlardır. Oyun oynadığınız sırada telefonunuza gelen bir arama sebebiyle oyun pause durumuna getirilir, görüşmeniz tamamlandığından ise ya hemen devam eder ya da devam etmeniz için bir menüyü tuşlamanız beklenir.

pause” olayının temel olarak yazım şekli aşağıdaki gibidir.

document.addEventListener("pause", birGeriDonusFonksiyonu, false);

resume” olayının temel olarak yazım şekli aşağıdaki gibidir.

document.addEventListener("resume", birGeriDonusFonksiyonu, false);

Örnek:
Örneğimiz de cihaz kullanıma hazır hale geldiğinde “document.addEventListener” olay dinleyicisini kullanarak uygulamamızı önce “pause” durumuna getirip, sonra “resume” olayını tetikleyip bunun da çalışıp çalışmadığını görmek için konsola bilgi olarak yazdırıyoruz.

document.addEventListener("deviceready", onDeviceReady, false);

function onPause() {
   console.log("Pause durumundayız!");
}

function onResume(){
   console.log("Resume durumundayız!");
}

function onDeviceReady(){
   console.log("Cihaz hazır!");
   document.addEventListener("pause", onPause, false);
   document.addEventListener("resume", onResume, false);
}

“online” ve “offline” Kullanımı

Cihazınızın İnternet bağlandığı ve bağlantısının kesildiği durumda tetiklenir.

online” olayının temel olarak yazım şekli aşağıdaki gibidir.

document.addEventListener("online", birGeriDonusFonksiyonu, false);

offline ” olayının temel olarak yazım şekli aşağıdaki gibidir.

document.addEventListener("offline", birGeriDonusFonksiyonu, false);

Örnek:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   document.addEventListener("offline", onOffline, false);
   document.addEventListener("online", onOnline, false);
}

function onOffline() {
   console.log("İnternet bağlantınız offline durumda.");
}

function onOnline() {
   console.log("İnternet bağlantınız online durumda.");
}

“backbutton” Kullanımı

Cihazın geri butonuna basıldığında tetiklenen olaydır.

Kullanım Şekli:

document.addEventListener("backbutton", birGeriDonusFonksiyonu, false);

Örnek:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
document.addEventListener(“backbutton”, onBackButton, false);
}

function onBackButton() {
alert(“Geri butonuna bastınız!”);
}

“menubutton” Kullanımı

Cihazın menü butonuna basıldığında tetiklenen olaydır.

Kullanım Şekli:

document.addEventListener("menubutton", birGeriDonusFonksiyonu, false);

Örnek:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   document.addEventListener("menubutton", onMenuButton, false);
}

function onMenuButton() {
   alert("Menü butonuna bastınız!");
}

“searchbutton” Kullanımı

Cihazın arama butonuna basıldığında tetiklenen olaydır.

Kullanım Şekli:

document.addEventListener("searchbutton", birGeriDonusFonksiyonu, false);

Örnek:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   document.addEventListener("searchbutton", onSearchButton, false);
}

function onSearchButton() {
   alert("Arama butonuna bastınız!");
}

“batterystatus” ve “batterycritical” Kullanımı

batterystatus”, cihazınızın pilindeki yüzde 1’lik değişimde tetiklenir. Bu tetikleme işlemi cihazınız şarjda olsa da olmasa da gerçekleşir. Yani pil seviyeniz artsa da azalsa da yüzde 1’lik bir değişimi batterystatus ile kontrol edebilirsiniz.

batterycritical”, cihaz pilinin kritik eşiğe ulaştığında tetiklenir. Ancak unutulmamalı ki her cihazdaki kritik pil eşiği farklı olabilir.

batterystatus ve batterycritical iki özellik içerir:

level: Yüzde olarak pil düzeyini gösterir. (0-100 arasında bir değer ifade eder).
isPlugged: Cihazın şarj cihazına takılı olup olmadığını hakkında Boolean bir değer döndürür. True ise cihazınız şarja takılıdır. Değil ise false değeri döner.

Dikkat edecek olursanız iki olay için de “addEventListener” olay dinleyicisi burada “document” değil, cihaz scope’unda yer aldığından “window” nesnesi üzerinden çalışır.

Kullanım Şekli:

window.addEventListener("batterystatus", birGeriDonusFonksiyonu, false);
window.addEventListener("batterycritical", birGeriDonusFonksiyonu, false);

Örnek:
Bu örneği iki event için de kullanabilirsiniz.

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   window.addEventListener("batterystatus", onBatteryStatus, false);
}

function onBatteryStatus(durum) {
   alert("Level: " + durum.level + " isPlugged: " + durum.isPlugged);
}

“batterylow” Kullanımı

batterylow”, cihaz pilinin düşük pil eşiğine ulaştığında tetiklenir. Ancak batterycritical da olduğu gibi her cihazdaki düşük pil eşiği farklı olabilir.

batterylow da batterystatus ve batterycritical’la aynı iki özelliği içerir:

level: Yüzde olarak pil düzeyini gösterir. (0-100 arasında bir değer ifade eder).
isPlugged: Cihazın şarj cihazına takılı olup olmadığını hakkında Boolean bir değer döndürür. True ise cihazınız şarja takılıdır. Değil ise false değeri döner.

Kullanım Şekli:

window.addEventListener("batterylow", birGeriDonusFonksiyonu, false);

Örnek:
Bu örneği iki event için de kullanabilirsiniz.

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   document.addEventListener("batterylow", onBatteryLow, false);
}

function onBatteryLow(durum) {
   alert("Level: " + durum.level + " isPlugged: " + durum.isPlugged);
}

Yazımızın sonuna geldiğimize göre hemen küçük bir hatırlatma yapayım. Cordova Events API’ye ait event’ların sayısı bu kadar değildir. Bunların dışında BlackBerry işletim sistemi üzerinde çalışan startcallbutton, endcallbutton, volumedownbutton, volumeupbutton gibi event’lar da bulunur. Ya da searchbutton gibi yalnızca Android’e özel event’lar da bulunuyor. Ancak yazı konularını her platform için ayrı ayrı hazırlamak yerine başlık ve içerikleri Android geliştirme üzerine yazıyorum, bilginize..

Bu yazıda yer alan “searchbutton” event’ının uygulamalarından başarılı sonuç alamadım. Yani uygulamanın çalışması esnasında “searchbutton” eventı için hazırladığım olaylar tetiklenmedi. Bu sebeple bu eventı denerken siz de aynı sorunu yaşayabilirsiniz. Gerçekleştirebilen olursa da bilgi verirse sevinirim.

Bir daha ki yazı da görüşmek üzere..

Benzer Yazılar


DeliPenguen'i Google+'da bulun



  1. teoman
    4 Şubat 2014 - 22:50

    Search button Windows Phone’da da var, bende wp kullaniciyim, deneyip geri bildirim yapabilirim.