Android Programlama
2014-2015 BAHAR
MAKU-TBMYO 2015
AKTS ders kataloğuna göre
DEĞERLENDĠRME
Konu BaĢlıkları
Genel Kavramlar
Android GeliĢtirme Araçları
Android Kaynakları
Activity
Intent
Layout
Frame
Servisler
Dosyalar
SqlLite
Sensörler
Google MAP API
Mobil Telefon Anakartı
Kaynak: http://www.cs.dartmouth.edu/~campbell/cs65/cs65-2014.html (22/02/15)
Kaynak: http://www.cs.dartmouth.edu/~campbell/cs65/cs65-2014.html 22/02/15
Bir Mobil Cihazdaki Sensörler
Sensörler
1. Barometre: Hava basıncını ölçerek dağa tırmanırken kaç kalori yakıldığını hatasız olarak hesaplar.
2. Hall sensörü: Katlanır kapağın durumunu algılar. Böylece kapak açılınca ekran ıĢığı da açılır, kapandığında ise ekran ıĢığı otomatik olarak kapanır.
3. RGB ortam ışığı sensörü: Ekranı otomatik olarak aydınlatarak veya karartarak göz yorgunluğunu azaltır.
4. El Hareketi sensörü: Kullanıcılar telefonlarına dokunmadan, sadece ellerini hareket ettirerek telefonlarıyla etkileĢimde bulunabilirler.
5. Yakınlık sensörü: Telefon görüĢmesi sırasında ekranı kapatır.
6. Jiroskop: Kullanıcılar ekranı yukarı ve aĢağı eğerek kolayca metin okuyabilirler.
7. Hareket Sensörü: Adımölçerle benzer iĢlevleri vardır ve zinde kalmak konusunda yardımcı olacak özellikler sunar.
8. Jeomanyetik sensör: Ana yönleri hatasız saptayabilmek üzere haritalardan faydalanır.
Bazı Mobil Cihaz Uygulama GeliĢtirme Araçları
Android Studio (Java)
Eclipse IDE (Java)
Xcode ( Objective-C, Swift)
Visual Studio C#.NET
============================
VindDev Mobile
Telerik (Online - HTML5 ile)
MIT App Inventor (On-line)
=========OYUN==============
Corona SDK
Unity
Android Nedir?
Andrid Google Firması tarafından 2005 yılında geliĢtirilmeye baĢlanmıĢ
Telefon
Tablet
Saat
TV
gibi cihazları programlanması için
Java Programlama Dilini kullanan ve
Linux Tabanlı (kernel) tabanlı bir
İŞLETİM SİSTEMİDİR
Neden Android?
Linux Tabanlı
Samsung, LG, Sony, Huawei,... vb. firmaların ortak
Ücretsiz geliĢtirme aracı
Java dili ile geliĢtirilir (iOS için kullanılan Object-C ve Swift gibi zor diller kullanmaz)
GeniĢ Kullanım Alanı ( Mobil telefon, Tablet, Otomobil, TV, Blue Ray, vb. gibi)
Farklı yerlerden kurulabilir (GoogleStore, direkt yükleme,..)
Bol miktarda kaynak döküman
Registery-based olduğundan küçük iĢlemcilede az bellekle çalıĢabilir
Arkasında Google gibi bir firma olması
Android Uygulamaları (SANDBOX)
Kendine ait bir Prosess Kendine ait ĠĢletim sistemi kullanıcısı
Kendine ait bir DVM Hafızadan ayrılmĢ bellek(Heap)
Kendine ait kanaklar
Android Uygulama-1
. . .
Android iĢletim sistemi üzerinde çalıĢan her bir uygulama için ayrı bir iĢlem ve sanal makina ( DVM: Dalvik Virtul Machine) ayrılır. Böylece uygulamalar
birbirinden izole olarak çalıĢır. Bu güvenlik açısından önemlidir.
Android uygulamaları GoogleAppStore üzerinden dağıtımı yapıldığında üretici firma anahtarı ile yüklenir. Dolayısıyla hangi uygulam hangi üretici tarafından
geliĢtirildiği bellidir. Aynı üretici tarafından geliĢtirilen farklı uyggulamalar aynı üretici koduyla yüklenir.
Kendine ait bir Prosess Kendine ait ĠĢletim sistemi kullanıcısı
Kendine ait bir DVM Hafızadan ayrılmĢ bellek(Heap)
Kendine ait kanaklar
Android Uygulama-N
Kendine ait bir Prosess Kendine ait ĠĢletim sistemi kullanıcısı
Kendine ait bir DVM Hafızadan ayrılmĢ bellek(Heap)
Kendine ait kanaklar
Android Uygulama-2
Android Mimarisi
http://developer.android.com/images/system-architecture.jpg
Android ĠĢletim sistemi, adres defteri, telefon arama, notification, 2D/3D grafik, database, security/encryption, camera, ses, input/output, web .. gibi kütüphaneler sağlar.
Java Kodlar Derlenerek DVM binary kodlara dönüĢtürülür
1
2
3
4
1-Linux Çekirdeği(Kernel)
2-Android Yerel Linux Kütüphanesi (Android Linux Library)
Dalvik Virtual Machine
Dalvik Virtual Machine
Hızlı CPU ihtiyaç duymaz
Swap alana ihtiyaç duymaz
Sınırlı batarya ömrü
Küçük RAM lara ihtiyaç duyar
Örn: Toplam 64 Mb, ÇalıĢma sırasında yaklaĢık 10 Mb
Dalvik Virtual Machine
Bir .dex dosyada birden çok class vardır
Stack-based yerine registered-based dir
Modifiye edilmiĢ garbage (çöp toplama)
GeliĢtirilmiĢ memory paylaĢımı (sharing)
Ġnstal zamanında optimize edilir
DVM’ ye karĢı ART (OTM)
Dalvik VM (Dalvik Virtual Machine) Dan Bornstein tarafından Android iĢletim sistemi için özel olarak geliĢtirilmiĢ bir sanal makinadır. Java olarak yazılan uygulama kodları (.class) derleyiciler tarafından Dalvik VM’in okuyabileceği bytecodelara çevrilerek toplanır ve .dex uzantılı dosyada dönüĢtürülürler. Bu .dex uzantılı dosyalar Dalvik VM’in çalıĢtırılabilir(executable) dosya uzantılarıdır.
Dalvik VM düĢük hafıza kullanımından dolayı sevilmektedir. Dalvik VM için ön görülen min RAM kapasitesi 64 MB olarak belirtilmektedir. ĠĢletim sistemi baĢladıktan sonra 20 MB RAM kapasiti bulundurmaktadır.
Dalvik VM, Android 2.2 ile birlikte Just-In-Time derleyici olarak yoluna devam etmiĢtir. JIT olarak bilinen ve çalıĢma zamanlı derleme yapısı Android 4.4 ile yerini Ahead-of-Time (AOT) derleyiciye bırakmaya baĢlamıĢtır. ÇalıĢma öncesi derleme yapısı AOTGoogle firması tarafından ART olarak sunulmuĢtur.
ART Android RunTime ile yoluna devam eden Android iĢletim sistemi için performans kazandırılacağı düĢünülmektedir. Çünkü JITyani çalıĢma zamanlı derleme, Uygulamaların çalıĢma zamanında ele alarak bytecodelarının okunup, iĢlemci üzerinde yorumlanmasıyla çalıĢmakta iken AOT yani çalıĢma öncesi derleme ile bu yapı Uygulamaların kurulma aĢamasında derlenip çalıĢma esnasında derlenme ile zaman kaybetmemesi sağlamaktadır. Buda Android için daha az iĢlemci ve ram anlamına gelmektedir.
Kaynak (23/02/15): http://ibrahimbalic.com/tag/android-art/
Android Sürümleri
Program yazarkan API level önemli An itibarı ile en piyasadaki en çok sürüm.
Android Versiyonlarına göre Piyasada Kullanım Oranları
22 ġubat 2015 httphttp://www.idc.com/prodserv/smartphone-os-market-share.jsp
Android GeliĢtirme Araçları
SEÇENEK-I
1- Java Developer Kit (JDK)
2- Android Studio (Android Virtual Device birlikte)
SEÇENEK-II
1- Java Developer Kit (JDK)
2- Eclipse ( Java Software Developer Kit) 3- Android Developer Toolkit
4- Emülatör (AVD, GenyMotion)
Android Studio
Google Android Studio 1.1, IntelliJ IDEA editor temeline dayanıyor.
Android Studio 1.1 Kurulumu
1- Download Android Studio
http://developer.android.com/sdk/index.html 2-Install ADT Plug-ins and Android SDK https://dl-ssl.google.com/android/eclipse/
2 GB RAM minimum, 4 GB RAM recommended
400 MB hard disk space
At least 1 GB for Android SDK, emulator system images, and caches
1280 x 800 minimum screen resolution
Proxy ayarları: http://developer.android.com/tools/studio/index.html
Android Uygulama Build ĠĢlem Süreci
Android Uygulaması Java Kodu Ornek1.java
Ornek1.class
Ornek1.dex
ANDROID ĠġLETĠM SĠSTEMĠ DVM
Dalvik Virtual Machine
javac ( Java Compiler)
dx (Dalvik Compiler)
Ornek1.apk
GoogleAppStore Kaynak dosyalar
Android Uygulaması Kaynakları
Android Uygulaması Java Kodu XML dosya Diğer
XML
: Tasarım ve diğer alfasayısal verilerin bılunduğu xml tabanlıkaynaklar
AndroidManifest.xml
Active_main.xml,
menu.xml,
values.xml,
color.xml
styles.xml
dimension.xml
Resim Kaynak dosyaları (png, jpeg, gif ve nine-pitch(.9.png))
Diğer Kaynaklar (raw) ( video, ses, pdf, txt vb. )
SQLLite (dtabase)
AndroidManifast.xml
-Projenin ayarlamalarının yapıldığı dosya
src/java/...
- Java class kaynak dosyaları
res/... ( kaynak dosyalar (xml) ) -dreawable / (resimler)
-layout/ (GUI tanımları) -menu/ (menu değerleri) -values/ (sabit değerler ve
diziler)
-strings ( değiĢkenler) -styles (görünüm stilleri)
Gradle
-build/compile yönetim sistemi
-build.gradle (ana build ayarları dosyası)
Android Uygulaması
Android Emulator
Cok kullanılan bazı Emülatörler
1-Android Virtual Device (AVD)
2-GenyMotion (Download GenyMotion) 3-BluStacks (Download Bluestacks) 4-You wave (Download You Wave) 5-Windroy
6-AndyRoid 7-Droid4X 8-Xamarin 9-DuOS-M
10- Web tabanlı emülatör (https://www.manymo.com/emulators)
…
Emülatör Hızlandırma:
http://www.javacodegeeks.com/2013/12/android-boost-up-the-android-emulator-speed-up-to-400-on-intel-based-architecture.html
Emülatörler Android programını gerçek cihazda çalĢıyormuĢ gibi, sanal cihazlar üzerinde denemek için gerekli programlardır.
Android Studio ile birlikte Android Virtual Device (AVD) emülatörü gelmektedir.
Android Uygulamsı Test Araçları
Kaynak(03/03/2015):/https://software.intel.com/en-us/android/articles/services-to-test-your-android-apps-on-intel-devices
AppThwack
Applause Testdroid
appthwack.com.
applause.com. www.testdroid.com
Services to Test Your Android Apps on Intel Devices, Joshua A. Bancroft on May 22, 2014