Posts Tagged Android
Android’in Veri Tabanlarında Gezinti
Posted by Sarp Centel in Android on December 29th, 2009

Dosya Sisteminde Gezinti
Cihaz üzerinde komut satırına erişmek için adb shell komutunu kullanıyoruz.
Android işletim sistemi Linux kernel’i üzerine kurulu olduğu için, Linux üzerinde alışkın olduğumuz bazı komutları cihaz üzerinde de çalıştırabiliyoruz. Mesela ls komutu ile dizinleri listeleyebilir, cd dizinadı ile istediğimiz dizine geçebilir, cd .. ile bir üst seviyedeki dizine geri dönebiliriz.

Bu şekilde klasörler arasında dolaşarak istediğimiz bilgilerin nerede durduğunu bulmamız gerekiyor. Mesela veri tabanları genellikle /data/data dizinin altında duruyor. Örnek olarak Contacts uygulamasına ait verilere göz atalım. Bu bilgiler /data/data/com.android.providers.contacts/databases dizininde bulunan contacts.db dosyasında bulunuyor. (NOT: SDK 2.0 ve sonraki sürümlerde contacts2.db olarak geçer).

Database’e Erişim

Cihazdan Dosya Kopyalamak

Kaynaklar
2010 Android’in yılı olacak (mı?)
Posted by Serkan Doğantekin in Android, Genel on December 15th, 2009
Google’ın mobil platformlar için Android isimli bir platform geliştirdiği açıklaması ile başlayan süreç hem Apple tarafından ekarte edilmiş operatörler/cihaz üreticileri hem de mobil uygulama geliştiriciler için oldukça heyecan verici bir şekilde başlamıştı. Geçen süre zarfındaki gelişime baktığımızda Android platformunun başarılı olduğunu rahatlıkla söyleyebiliyoruz (AdMob verilerine göre dünya akıllı telefon pazarındaki payı %11 olarak görünse de gerçek değer %4, 2009 büyüme tahmini ise %900 civarındadır) ancak ilk baştaki o büyük beklentilerin karşılanması konusunda bazı sıkıntıların olduğunu da göz ardı edemeyiz.
Android platformu konusundaki en temel sıkıntı cihazlar konusunda oldu. Şu ana kadar yaklaşık 20 tane Android tabanlı telefon piyasada yer bulmuş olsa da, bu cihazların çok büyük bir çoğunluğu ana rakip olarak görülen iPhone ile yapılan kullanıcı memnuniyet karşılaştırmalarda geride kaldılar. Ayrıca çeşitli firmalar (Motorola gibi) tarafından 2009 içerisinde çıkartılacağı belirtilen cihazların büyük bir çoğunluğu piyasaya sürülemediler. Bu konuda Android platformu için umut vaat eden nokta ise şimdiden 2010 için en az 30 adet yeni cihazın piyasaya çıkacağının kesinleşmiş olmasıdır. Ancak cihaz pazarındaki bu artış beraberinde getireceği değişik ekran büyüklük/çözünürlük değerleri ve donanım parçalarının farklılığını uygulama geliştiriciler için zorluklar çıkartabileceği gözden kaçırılmaması gereken bir noktadır, ancak kişisel olarak bu konuda zaman geçtikçe bir denge kurulacağını düşünüyorum.
Android hakkındaki diğer başka büyük bir sıkıntı ise uygulama pazarı alanında olmuştur. Google’ın Apple App Store’na rakip olarak ortaya çıkardığı Android Market şu ana kadar beklenildiği kadar iyi bir alternatif olmayı başaramamıştır. Genel uygulama sayısı olarak bakıldığı zaman App Store’da 100.000 civarında olan uygulama sayısına karşılık Android Market’te yaklaşık 10.000 uygulamanın bulunması ve daha da önemlisi bu uygulamaların büyük bir çoğunluğunun kullanıcılar tarafından “v1.0” olarak nitelenen yeterli kalitede olmayan uygulamalar olması ortalama müşteriler için App Store’un daha çekici olması ile sonuçlanmaktadır. Ayrıca Android platformu için iTunes benzeri bir uygulamanın olmaması kullanıcı memnuniyetini düşüren bir etken olmaktadır. Android Market konusundaki başka bir önemli sıkıntı ise uygulama geliştiriciler için yeterli bir gelir kaynağı olarak görülmemesi oldu. Kasım ayı içerisinde dünyanın en büyük mobil oyun şirketlerinden Gameloft, Android platformu üzerinde kimsenin yeterli seviyede gelir kazanamadığını öne sürerek platform üzerindeki yatırımları önemli ölçüde azaltma kararı aldığını, sadece kendilerinin değil benzer şirketlerinde aynı fikirleri paylaştığını belirtmişti. Gerçi takip eden günlerde Motorola Droid’in satış başarısı ve gelişmiş yeni cihazların yakın zamanda ortaya çıkacağı beklentisi ile bu kararlarını geri alıp özellikle 2. nesil Android cihazlar üzerinde yatırımlarına devam edeceklerini açıklasalar da, firmaların iPhone OS üzerinde uygulamaya geliştirmeye daha fazla önem vermeye belli bir süre daha devam edeceklerini rahatlıkla söyleyebiliriz.
Kendi kişisel fikrim bu sene içerisinde yaşanan soru işaretlerine rağmen 2010 yılının Android platformunun gerçekten patlama yapacağı bir yıl olacağı yönünde. Özellikle Android 2.0 ile platformun belirli bir olgunluk derecesine ulaşması, her gün üreticiler tarafından duyurulan yeni nesil cihazlar ve Google’ın platforma kazandırdığı yeni yetenekler ve servislerle (Android 2.0 ile birlikte sunulmaya başlanan sesli navigasyon, yeni duyurulan Goggles servisleri gibi) birlikte firmalar çekinceleri bulunsa da bu pazardan uzak kalamayıp Android üzerinde çalışmaya daha da önem vererek devam edeceklerdir ki buda cihaz üreticilerini yeni modeller konusunda tetikleyici bir sonuca, kısacası bir döngüye yol açacaktır. Ayrıca Google başarılı ADC (Android Developer Challange) stratejisi ile firmalar dışında büyük bir geliştirici kitlesi oluşturmayı başarmış durumdadır. Bu durumda Gartner’ın Android platformu için belirlediği 2012 yılında %18lik akıllı telefon pazar payı tahmini gerçekleştirilebilecek bir hedef olarak görülmelidir. Aslında 2010 yılında Android’in cep telefonlarından çıkıp diğer cihazlar üzerinde de (özellikle netbooklarda) kendini göstermesi bekleniyordu ancak Chrome OS’un ortaya çıkması ile birlikte Android platformunun 2010 yılında cep telefonu merkezli kalacağını söyleyebiliriz.
Mobil operatörlerin bu durumda karşısındaki pozisyonlarını incelersek; bu gelişim potansiyeli karşısında mobil operatörler, iPhone üzerindeki servislerini hızlı bir şekilde Android platformuna da taşımalı, bundan sonra sunacağı servisler içinse iki ortamı da destekleyen bir yapı sergilemelidir. Ayrıca mobil dünya üzerindeki etki alanını giderek attırmakta olan Google’un sadece platform geliştiricisi olarak yetinmeyip servis sağlayıcı olarak etkinliğini arttırması beklenmektedir ki bu durumda operatörler tarafından sağlanan servisler için yeni ve güçlü rakiplerin ortaya çıkması demek olacaktır. Ama bence bunlardan çok daha önemlisi, uzun süredir Google tarafından kabul edilemeyen data/voip tabanlı bir cihaz geliştirdiği iddiasının -tam olarak iddialardaki gibi olmasada- geçen haftasonu Nexus One adı ile ortaya çıkması oldu. Şu anda cihaz hakkında çok fazla bilgi paylaşılmamış olsada bu tarz bir gelişmeyi Google’ın Amerika’daki 700 Mhz ihalesine eklenmesini sağladığı maddelerle birlikte düşünürsek (bu maddeleri kısaca “açık servisler, açık cihazlar” olarak özetleyebiliriz) bu mobil operatörleri sadece data hattı sağlama rolüne doğru itecek bir sürecin habercisi olabilir. Mobil operatörler tüm bu olası senaryolar karşısında etkin stratejiler oluşturmaya şimdiden başlamalıdır, yarın gerçekten çok geç olabilir.
Broadcast Receiver nedir ve nasıl kullanılır?
Posted by Omer Saatcioglu in Android on November 11th, 2009

Sizlere Broadcast Receiver’in ne olduğunu ve ne işe yaradığını anlatıcam. Sonra da, örnek bir projeyle nasıl kullanıldığını göstericem. Broadcast Receiver, sistem veya başka bir uygulama tarafından çalışıyor olmasa bile broadcast ettiği intent’leri yakalamamızı ve tepki vermemizi sağlayan komponentlerdir. Örneğin, kullanıcı bir SMS attığında veya Müzik Çalar’daki şarkıyı değiştirdiğinde sistem bunun olduğuna dair bir broadcast yapar. Sonraki yazılarımda nasıl broadcast yapıldığını anlatıcam ama şimdilik broadcast yakalama işlemini oğrenelim.
Örnek olarak, müzik çalar’da çalan şarkı sayacı yapabiliriz. Super class’i BroadcastReceiver olan MüzikBroadcastReceiver adında bir class tanımlayalın. Gördüğünüz gibi, onReceive metodunu üstüne yazıp Broadcast geldiği zaman SharedPreferences’ten daha önce kaydedilmiş calanSarkiSayac’ını alıp bir artırıp tekrar SharedPreferences’e yazıyor.
public class MuzikBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { SharedPreferences sharedPreferences = context. getSharedPreferences(SarkiSayaci.SHARED_PREFERENCE, Context.MODE_PRIVATE); Editor editor = sharedPreferences.edit(); int calanSarkiSayisi = sharedPreferences.getInt(SarkiSayaci.CALANSARKISAYISI, 0); calanSarkiSayisi++; editor.putInt(SarkiSayaci.CALANSARKISAYISI, calanSarkiSayisi); editor.commit(); } }
Tamam çok güzel. Ama, MuzikBroadcastReceiver şarkı değiştiğini nasıl anlıyor ve intent broadcast edildiği zaman bu obje aktive oluyor? Onu da AndroidManifest.xml’e eklediğimiz şu satırlarla sağlıyoruz.
<receiver android:name=".MuzikBroadcastReceiver"> <intent-filter> <action android:name="com.android.music.metachanged" /> </intent-filter> </receiver>
Gördüğünüz gibi, intent filter altında action olarak com.android.music’in metachanged aksiyonu için sadece aktive edilmesini sağlıyoruz. Böylece, her şarkı değiştiğinde SharedPreferences’teki sayacımızı bir arttıran mekanizmamızı yaratmış olduk. Şimdi de bunu gösterme sırası geldi ki en basit kısmı. Ana aktivitemizde (ki bu örnekte SarkiSayaci) onPause metodu üstüne yazılır.
@Override protected void onResume() { SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFERENCE, Context.MODE_PRIVATE); if(sharedPreferences != null){ int calanSarkiSayisi = sharedPreferences.getInt(CALANSARKISAYISI, 0); ((TextView) findViewById(R.id.TextViewSayac)).setText(Integer.toString(calanSarkiSayisi)); } super.onResume(); }
Özetleyecek olursak, Broadcast Receiver kullanabilmek için BroadcastReceiver’dan derive edilmiş objenin onReceive metodu üstüne yazmanız ve AndroidManifest.xml’deki intent filter’da broadcast’ini beklediğiniz aksiyonu belirtmeniz yeterlidir. İşinize yaraması dileğiyle…
Örnek projeye şurdan ulaşabilirsiniz:
http://code.google.com/p/yazarbozar-omer/source/browse/#svn/trunk/SarkiSayaci
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=5227a526-6f90-4e2a-849b-4e8f54d28913)
Güncel Yorumlar