Broadcast Receiver

Merhaba arkadaslar, bugün Android içerisindeki 4 temel bileşenlerden biri olan Broadcast Receiver konusuna değinicem.

Hatırlarsanız Android 4 temel bileşen üzerine inşa edildiğini belirtmiştik. Bunlar;

  1. Activity
  2. Broadcast Receiver
  3. Service
  4. Content Provider

Broadcast Receiver

Android sistemi üzerinde gerçekleşen bazı olayların uygulamalar tarafından algılanması için kurulmuş bir yapıdır. Sistem üzerinde gerçekleşen bir event’dan uygulama uyarılmak isteyebilir ve buna göre uygulama tepki verebilir. Örneğin; Sms alınması, Batarya seviyesi, Uçak modu algılanması yada kulaklık takılması/çıkarılması gibi gibi.

Yukarda örneğini verdiğim olaylar gerçekleştiğinde Android işletim sistemi bir broadcast(yayın)  yayınlar. Uygulamalar belirli olayları dinlemek için register olurlar. Bu şekilde register olunan event sistem üzerinde gerçekleştiğinde uygulama bir broadcast ile uyarılır ve uygulamada buna göre bir tepki verir.

Broadcast Receiver Type

Broadcast’lar iki şekilde oluşturabilinir. Bunlar; Static broadcast ve dynamic broadcast receiver’dır.

  • Static Broadcast Receiver: AndroidManifest.xml içerisinde <receiver> tag’ı içerisinde belirilir. Uygulamanın çalışıp çalışmaması static boradcast receiver’ı etkilemez.
  • Dynamic Broadcast Receiver: Activity yada Service içerisinde tanımlanmış olan broadcast’lardır. Dynamic broadcast receiverlar uygulamanın Context’i üzerinde tutulur. Activity sonlandığında receiver da sonlanmış olur.

Dynamic Broadcast Type

Hemen bir örnek üzerinden gidelim;

Örneğimizde Activity sınıfımız içerisinde batarya değişimi için bir broadcast yayınlayacağız.

BatteryActicity.java

^ Örneğimizde kısaca şunu yaptık; onCreate() methodumuz içerisinde registerReceiver(BroadcastReceiver, IntentFilter) methodunu çağırdık.

Parametre olarak; Dynamic olarak olusturdugumuz brodcast receiver’ı(innet-class) ve bir intent filter ile durumundan haberdar olmak istediğimiz eventi verdik. TextView’i ise batarya level’i olarak güncelledik.

2014-11-14 16:12:29

 

 

 

 

 

 

 

* Acitivity her açıldıgında güncel batarya level’ı bize göstericektir.

Static Broadcast Type

Static bir Broadcast oluşturmamız için öncelikle manifest.xml dosyamız içerisinde bunun tanımını yapmamız gerekmektedir.

 

^ Yukardaki örneğimizin static broadcast ile aynısını bu şekilde oluşturabiliriz. Burada Broadcast’ı dinleyen MyReceiver sınıfımız mevcutr. Onun yapısına bir bakalım;

MyReceiver.java

^ Static olarak olusturdugumuz receiver BroadcastReceiver sınıfını kalıtmakta ve onReceive() methodunu imlemente etmekte. Android sistemi geçerli broadcast oluştugunda onReceive() methodunu kendisi çağırmaktadır.

Not : Static broadcast receiver’lar birden fazla durumdan haberdar olabilir. Bir uygulama hem batarya durumundan hemde batarya kablosunun takıldıgından haberdar olmak isteyebilir.

Güç bağlantısını dinlemek için receiver tagı içerisinde ikinci bir action tanımı yapılabilir;

Not : android sdk içerisinde ilgili api klasörün altında data klasörü dizininde tüm intent action türleri bulunmaktadır.

Custom Broadcast Receiver

Kendi yayınlarımızı da olusturabiliriz. Bunun için manifest.xml içerisinde şu tanımı yapabiliriz;

^ Kendi uygulamamız içerisinde broadcastı baslatabiliriz;

Öncelikle bir intent nesnesi olusturup action özelliğini ayarlamamız gerekmekte. manifest.xml içerisindeki receiver’ın action kısmında tanımladıgımız Stringi vermemiz lazım. Daha sonra sendBroadcast(intent) ile yayınımızı başlatmış oluyoruz.

2014-11-14 15:46:40

 

* Broadcast gönder butonumuza tıklandıgında şunlar gerçekleşmekte;

Bu sayede uygulamamız içerisinde haberleşmeyi bu şekilde sağlayabiliriz.

Yazımızın sonua gelmiş bulunmaktayız arkadaslar

Mutlu kalın, kodla kalın ve bol bol Çay için (Çay önemlidir)

~ Alican Akkus

2383 Total Views 1 Views Today

  • Çok sade ve açıklayıcı bir anlatım olmuş. Elinize sağlık

    • Alican Akkus

      Tesekkur ederim, iyi çalismalar.