Pazar, Nisan 15, 2012

AndTutorial-2: Bir Android projesinin yapısı, Android uygulamasının yaşam döngüsü, İlk Eclipse projesi.

Android uygulaması geliştirebilmek için Android SDK ve Android Plugin’i eklenmiş bir Eclipse kurulumu ile işe başlıyoruz.

Öncelikle http://developer.android.com/sdk/index.html adresinden Android SDK installer’ını indirip kurmaya başlıyoruz.


SDK installer’dan kurulum yeri belirledikten sonra  en az yukarıdaki seçenekleri işaretleyerek “Install .. packages” seçeneği ile Android SDK kurulumunu tamamlıyoruz. İsterseniz daha sonra kurulum dizininden “SDK Manager” programı ile Android SDK’sını güncelleyebilir yada yeni Android versiyonlarını ekleyebilirsiniz.

Daha sonra işe temiz bir Eclipse (http://developer.android.com/sdk/index.html) kurulumu devam ediyoruz.

Eclipse kurulumunu tamamladıktan sonra Help –> Install New Software menüsünden Android plugin’inin (https://dl-ssl.google.com/android/eclipse/ )  adresini ekleyip, tüm bileşenleri kuruyoruz.


Plugin kurulumu tamamlandıktan sonra Android SDK’sının kurulum path’ini göstermek üzere Window –> Preferences menüsünden Android sekmesini açıp “SDK Location” alanına Android SDK dizinimizin bulunduğu yeri ekliyoruz.


Böylece Android uygulaması geliştirmek için gerekli ortama kavuşmuş olduk.
Şimdi ilk uygulamamızı yapalım. Öncelikle File –> New –> Android Project menüsünden Android projesi wizard’ını açıyoruz.



Projemizi “HelloAndroid” olarak isimlendirdikten sonra SDK versiyonunu seçiyoruz. Güncel versiyon 4.0.3 ile devam edelim.



Sonraki ekranda paket ismini ve uygulamamızın destekleyeceği minimum Android versiyonunu seçerek proje wizard’ını tamamlıyoruz. (CreateActivity checkbox’ını seçmek bizim için temel bir Android activity’si oluşturacak, bunu Java projelerindeki main sınıfı gibi düşünebiliriz)



Proje yapısı:



project.properties : Android Tools tarafından otomatik olarak yaratılır ve projenin hangi Android versiyonu ile build edileceği bilgisini içerir.

proguard*.txt : Yayınlanma öncesi kodların obfustucation’ını sağlayan ve decompile edilmesini bir nebze olsun zorlaştıran proguard aracının konfigürasyonunu içerir.

AndroidManifest.xml : Uygulamanın hangi componentlere ( service, activity, contentprovider vs) sahip olduğu, çalışmak için hangi izinlere ihtiyaç duyduğu ( internet izni, sd card erişim izni vs) ve uygulama ilgili genel bilgileri (versiyon, paket yapısı, minimum android versiyonu vs) içerir.

res : res klasörü imaj ve layoutlar gibi uygulama ile birlikte derlenecek dosyaları içerir.

bin: Uygulamanın derlenmiş halini içerir.

assets: Uygulama dahil edilecek, derleme gerektirmeyen statik dosyaları içerir.

src: Uygulama kaynak kodunu içerir.

gen: Source kodlardan res klasörü altındaki kaynaklara erişimi sağlayan R dosyasını içerir.

Proje’yi Android projesi olarak çalıştırdığımızda emülatör ya da telefonumuzda aşağıdakine benzer bir görüntü olmalı.



Android activity yaşam döngüsü



Bir Android activity’si yaşadığı süre boyunca farklı durumlarda bulunabilir bunlar;

Starting: Uygulamanın çalışmak için tetiklendiği, hafızada hiç bulunmadığı haldir. Bu aşamada uygulamanın çalışması yani running durumuna geçmesi ve gerekli initialization’ı yapabilmek için gerekli methodlar çağrılır.

Running (Active): Activity’inin başladığı ve kullanıcı ile etkileşimde olduğu durumdur.

Paused: Activity’inin görünür olduğu ama kullanıcı etkileşiminin olmadığı durumdur. Örneğin bir dialog yada bildirim sebebiyle uygulama arkaplan’a geçmiş olabilir.

Stopped: Activity’inin artık görünür olmadığı durumdur. Bu durumda activity memory’de tutulmaya devam edilir ve kullanıcı geri döndüğünde hızlı bir şekilde yeniden active duruma geçebilir.

Destroyed: Activity’inin memory’den de kaldırılarak tamamen bitirildiği durumdur. Bu durum kullanıcı tarafından tetiklenebileceği gibi, kaynak yetersizliği sebebiyle Android uygulama yöneticisi tarafından da tetiklenebilir. Bu durumda kullanıcı uygulamaya geri dönmek istediğinde uygulamanın ilk kez açılmasındaki yol takip edilir.

Önceki tutorial: http://emrahkocaman.blogspot.com/2012/04/andtutorial-1-android-nedir-androidi.html
Tutorial index: http://emrahkocaman.blogspot.com/2012/04/android-tutorials.html

Çarşamba, Nisan 11, 2012

AndTutorial-1: Android nedir? Android’i oluşturan parçalar nelerdir?

Android kısaca, cep telefonları, tablet pc’ler, saatler, eğlence sistemleri, navigasyon sistemleri, ev otomasyonları gibi sistemlerin tümünde kullanılabilen Linux tabanlı açık kaynak kodlu ve ücretsiz bir mobil platformdur.

Android’in en büyük artısı yazılımı üzerinde çalıştığı donanımdan tamamen soyutlamasıdır. Bu sayede ucuz, pahalı, herhangi bir marka mobil cihazda çalışabilir.

Evet sunduğu kullanıcı deneyimi tüm cihazlarda aynı değildir ama büyük bir kitlenin “"Akıllı telefon” ile tanışmasını sağladığı ve sağlamaya devam ettiği gerçektir.

Android platformu ile ilgili detaylar için http://www.android.com/about/ adresini ziyaret edebilirsiniz.

Gelelim bizi ilgilendiren kısma yani Android uygulamalarına;
Android uygulamaları temelde 4 kısımdan oluşur.

1) Activity : Activity, bir masaüstü uygulamasındaki pencerenin karşılığı olan, kullanıcı arayüzüne ev sahipliği yapan yapıdır.

2) Content Provider: Android uygulamaları hem güvenlik hem de uygulamaların birbirinden soyutlanabilmesi için doğrudan birbirlerinin verilerine ulaşamazlar. Bir veri birden fazla uygulama tarafından kullanılmak isteniyorsa erişim “Content Provider” yapısı ile sağlanır. Böylece content provider’ın sahibi veriyi paylaşırken hangi veriye nasıl ulaşılacağını belirlemiş olur.

3) Intent : Intent yapısı sistem bazlı bir mesajlaşma altyapısı olarak düşünülebilir. Uygulamalar arası iletişim, sistem bazlı uyarılar (GPS konum değişimi, Çağrı gelişi, SMS gelişi vb) intent’ler üzerinden tüm sisteme duyrulur. Bu duyuruyla ilgilenen uygulamalarda böylece mesajla ilgili aksiyon alabilirler.

4) Service : Activity’ler kullanıcı tarafından doğrudan ya da arka plan’da iken ihtiyaç olması tarafında sistem tarafından kapatılabilirler ve uzun süreli işler yapmak için tasarlanmamışlardır. Örneğin telefonunuzda müzik dinlediğinizi düşünün. Müzik uygulaması müzik çalma işini bir servis yaratıp işi ona delege ederek yapar. Böylece müzik uygulaması arkaplanda olsa dahi müzik çalmaya, kullanıcının input’larına tepki vermeye (Volume +/- tuşlarına cevap verme) devam eder.

Bir çok konuda olduğu gibi bu konu içinde http://developer.android.com/index.html adresini ziyaret etmenizi şiddetle tavsiye ederim.

Bir sonraki yazıda Android uygulamamız üzerinde bir Android projesinin yapısını inceliyor olacağız.

Sonraki Tutorial: http://emrahkocaman.blogspot.com/2012/04/andtutorial-2-bir-android-projesinin.html
Tutorial Index: http://emrahkocaman.blogspot.com/2012/04/android-tutorials.html

Salı, Nisan 10, 2012

Android Tutorials

Bugün’den itibaren sıfırdan başlayıp en ince detaylarına kadar Android platformunu öğreneceğimiz yazı dizimize başlıyoruz.

Bir aksilik olmazsa konular şöyle olacak.

1) Android nedir? Android’i oluşturan parçalar nelerdir?
2) Bir Android projesinin yapısı, Android uygulamasının yaşam döngüsü,  İlk Eclipse projesi.
3) Temel layout kavramları
4) Temel widgetlar
5) Widget containerlar (Linear, Relative, Table layout)
6) Complex widgetlar-1 ve ArrayAdapter kavramı
7) ListView ve performans optimizasyonları
8) Complex widgetlar-2 (Tab, ViewFlipper, ProgressBar, TimePicker)
9) Menü kavramı
10) Webkit tarayıcısının uygulama içine gömülmesi
11) Android bildirimlerine giriş (Toast, Alert, Notifications)
12) Multithreading – Mobil uygulamalar çabuk tepki vermelidir.
13) Preferences – Kullanıcı tercihlerine saygı
14) SQLite – Veritabanı yaratma ve yönetme
15) Networking – Android ve REST mükemmel uyum
16) Intent Filters – Uygulamalar arası iletişim
17) Content Providers 1 – Varolan content provider kullanımı
18) Content Providers 2 – Kendi content provider’ımızı yaratma
19) Android Service yapısı
20) Cihaz konum bilgisine erişim
21) Google Maps entegrasyonu
22) Bonus: Telefon çağrılarına erişim
23) Bonus: SearchManager API kullanımı
24) Bonus: Custom font kullanımı

Pazar, Nisan 01, 2012

JSF 2 Implicit EL Objects

 JSF Expression Language içerisinde sık kullanılan implicit nesne listesi:

Implicit Object Tip Açıklama
applicationScope Map Uygulama seviyesinde tutulan nesneleri içerir. (@ApplicationScoped)
cookie Map Http cookie header’ında bulunan nesneleri içerir
facesContext FacesContext İşlem anındaki FacesContext nesnesi
flash Map Bir sonraki request’e kadar yaşayacak nesnelerin tutulabileceği map.
header Map İlgili request’in tüm header’ları
param Map İlgili request’in URL parametrelerinin saklandığı map
requestScope Map RequestScoped bean’lerin de tutulduğu, request bazlı veri saklamak için kullanılan map
sessionScope Map SessionScoped bean’lerin de tutulduğu, session bazlı veri saklamak için kullanılan map

Örnek kullanım:
JSF EL ile gelen Implicit nesneler’den managed bean’lerle aynı syntax kullanılarak faydalanılabilir.
<h:outputText value=”#{param[‘selectedItem’]}”/>
yada
<h:outputText value=”#{sessionScope[param[‘selectedItem’]]}”/>