64
www.smartiks.com.tr Mobil Programlamaya Giriş ve Android Eğitimi 7 Mart 2014 Cuma Eğitmen :D. Barış Akkurt

Mobil Programlamaya Giriş ve Android

Embed Size (px)

DESCRIPTION

A presentation about mobile programming

Citation preview

Page 1: Mobil Programlamaya Giriş ve Android

www.smartiks.com.tr

Mobil Programlamaya Giriş ve Android Eğitimi

7 Mart 2014 CumaEğitmen :D. Barış Akkurt

Page 2: Mobil Programlamaya Giriş ve Android

Barış Akkurt2

İÇİNDEKİLER-1

12.3.2014

Bölüm – 1 : Mobil Platformlar Hakkında

• Genel Bilgiler • Tarihçe

Bölüm – 2 : Windows Phone

• WP Platformu• WP Geliştirme Ortamı

• Merhaba Dünya Uygulaması

Bölüm – 3 : iOS Platformu

• iOS Genel Bilgiler• iOS Geliştirme Ortamı• Objective C’ye Giriş

• Merhaba Dünya Uygulaması

• PC’lere Mac OS Kurulumu

Page 3: Mobil Programlamaya Giriş ve Android

Barış Akkurt3

İÇİNDEKİLER-2

12.3.2014

Bölüm – 4 : Android

• Genel Bilgiler Android İç Yapısı Aktivite Yaşam Döngüsü Geliştirme Araçları Terimler Derleme

• Demo: Merhaba Dünya Uygulaması

• Shared Preferences• Layout Yönetimi• Checkbox, Radio button

• Spinner ve Kamera• ListView Örneği• Fragment• Content Provider • Sensörler• Best Practices• Google Maps• Test• Uygulama Yayınlama• Demo: Veritabanı

Kullanan Uygulama

Page 4: Mobil Programlamaya Giriş ve Android

Barış Akkurt4

• Mobil Uygulama Geliştirme Nedir?Telefon, tablet, PDA vs. tipi düşük güç tüketen cihazlar

• Mobil Uygulama TürleriNative app, web app ve hybrid app

• Dikkat Edilmesi Gerekenler• Ufak Ekranlar• Değişen Ekran Boyları• Lokalizasyon• Küçük bellek• Az mikroişlemci gücü• Telefonun pili

GENEL BİLGİLERBölüm 1 – Mobil Platformlar Hakkında

12.3.2014

Page 5: Mobil Programlamaya Giriş ve Android

Barış Akkurt5

• 1973, İlk cep tel., Motorola, 1.1 kg, 23 cm

• 1983, İlk ticari cep tel., Motorola, 4000$

• 1990’ların sonu: Cep tel. Yaygınlaşıyor.

• 1997 Nokia 6110– Oyunlar: Memory, snake, logic– Hesap makinesi, saat, takvim– Profile ayarları

• 2000: Windows Mobile

TARİHÇEBölüm 1 – Mobil Platformlar Hakkında

12.3.2014

Page 6: Mobil Programlamaya Giriş ve Android

Barış Akkurt6

• 2002 Samsung SGH-T100: İlk LCD display• 2006: Nokia N95, Akıllı telefon, 332 MHz

Cpu, 160 MB RAM• 2007: iPhone• 2008: Android işletim sistemli ilk cep tel.• 2010: Windows Phone• Tarihten bazı yazılım platformları: LiMo4,

Maemo, Meego, Palm OS, webOS, Windows Mobile

TARİHÇE - 2Bölüm 1 – Mobil Platformlar Hakkında

12.3.2014

Page 7: Mobil Programlamaya Giriş ve Android

Barış Akkurt7

MOBİL PLATFORMLAR GENEL

Blackberry 10 Symbian Firefox OS

C, C++, Qt, HTML 5, JavaScript vs.

Java ME, Qt, Python for Symbian

HTML 5 Apps

Bölüm 1 – Mobil Platformlar Hakkında

12.3.2014

Page 8: Mobil Programlamaya Giriş ve Android

Barış Akkurt8

İlk sürüm: 8 Kasım 2010, Kuzey AmerikaGüncel sürüm: WP 8.1Programlama dili: C#IDE: Visual Studio

WP’YE GİRİŞBölüm 2 – Windows Phone

12.3.2014

Page 9: Mobil Programlamaya Giriş ve Android

Barış Akkurt9

Kurulum öncesi:• File>New Project>Windows Phone>Install WP

SDK

Kurulum sonrası:• File>New Project>Windows Phone>WP

Application

WP sürümünü seç.MainPage.xaml sayfanın layoutu.WinForm ve ASP.Net benzer toolbox’tan sürükle.

WP – MERHABA DÜNYABölüm 2 – Windows Phone

12.3.2014

Page 10: Mobil Programlamaya Giriş ve Android

Barış Akkurt10

• Programlama Dili: Objective C• IDE: Xcode• iPhone, iPad, Apple Tv için uygulamalar• iOS, XNU çekirdeğinin bir türünü kullanır• iOS SDK şu bölümlerden oluşur:

I. Cocoa Touch: UI frameworkII. Media: OpenGL ES, video, audio işleriIII. Core Services: Networking, thread’lerIV. Mac OS X kernel: soketler, güç yönetimi

IOS’A GİRİŞBölüm 3 – iOS Platformu

12.3.2014

Page 11: Mobil Programlamaya Giriş ve Android

Barış Akkurt11

• iBoot, boot disk image’ı indir.• BIOS değişiklikleri:

-First boot device Cd-PCH SATA Control Mode=AHCI-Power Management Setup=64 bit

• iBoot (or Empire EFI) boot disk ve çalıştır.

• iBoot supported ekranı gelince, Mac OS X dvd’sini koy, F5’le

• Dil seçimi ekranı gelir.

PC’YE MAC OS X KURULUMU

Bölüm 3 – iOS Platformu

12.3.2014

Page 12: Mobil Programlamaya Giriş ve Android

Barış Akkurt12

• Disk bölümü ekranı gelir. Bu işlem yapılırken GUID partition table seç.

• Kurulumu yap. Sonra tekrar iBoot ile başlat.

• MacOS açılır, bununla Multibeast isimli aracı kur.

• iBoot’u çıkar. Bilgisayarı baştan başlat.

PC’YE MAC OS X KURULUMU

Bölüm 3 – iOS Platformu

12.3.2014

Page 13: Mobil Programlamaya Giriş ve Android

Barış Akkurt13

• Genel amaçlı• C üzerine Smalltalk özellikleri

eklenmiş, dolayısıyla nesne yönelimli• Next, NeXTSTEP işl. sis. için

geliştirmiş• Kaynak kod .m, başlık dosyaları .h

uzantılı

OBJECTIVE C’YE GİRİŞBölüm 3 – iOS Platformu

12.3.2014

Page 14: Mobil Programlamaya Giriş ve Android

Barış Akkurt14

• int a, b;• a=10;• const int LENGTH=5;

• Yorumlar /* ile */ arasına yazılır.• Kaçış karakterleri \n, \t ...

OBJECTIVE C – DEĞİŞKEN, SABİT, YORUM

Bölüm 3 – iOS Platformu

12.3.2014

Page 15: Mobil Programlamaya Giriş ve Android

Barış Akkurt15

• Tamsayı türleri

OBJECTIVE C – TEMEL VERİ TÜRLERİ

Tür Depolama boyu Aralık

char 1 byte -128 to 127 or 0 to 255

unsigned char 1 byte 0 to 255

signed char 1 byte -128 to 127

int 2 or 4 bytes -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647

unsigned int 2 or 4 bytes 0 to 65,535 or 0 to 4,294,967,295

short 2 bytes -32,768 to 32,767

unsigned short 2 bytes 0 to 65,535

long 4 bytes -2,147,483,648 to 2,147,483,647

unsigned long 4 bytes 0 to 4,294,967,295

Bölüm 3 – iOS Platformu

12.3.2014

Page 16: Mobil Programlamaya Giriş ve Android

Barış Akkurt16

• Tamsayı türleri

• void türü

OBJECTIVE C – TEMEL VERİ TÜRLERİ-2

Tür Depolma Boyu Aralık Duyarlılık

float 4 byte 1.2E-38 to 3.4E+38 6 decimal

Double 8 byte 2.3E-308 to 1.7E+308 15 decimal

long double 10 byte 3.4E-4932 to 1.1E+4932 19 decimal

Bölüm 3 – iOS Platformu

12.3.2014

Page 17: Mobil Programlamaya Giriş ve Android

Barış Akkurt17

• while(koşul){ ifadeler; }• for(başlangıç; koşul; arttırım)

{ ifadeler; }• do { ifadeler; } while(koşul);• if(koşul){ifadeler; } else { ifadeler; }• switch(koşul){ case A: ifadeler; ....}

Bu yapıların tümü C# ve Java ile aynı.

OBJECTIVE C – KARAR VE DÖNGÜ YAPILARI

Bölüm 3 – iOS Platformu

12.3.2014

Page 18: Mobil Programlamaya Giriş ve Android

Barış Akkurt18

• type arrayName [ arraySize ];• Ör: double balance[10];• double balance[5] = {1000.0, 2.0,

3.4, 17.0, 50.0};• Fonksiyonlar:

void aFunction() { //do something}

• İki yapı da C’ye benzerdir.

OBJECTIVE C – DİZİLER VE FONKSİYONLAR

Bölüm 3 – iOS Platformu

12.3.2014

Page 19: Mobil Programlamaya Giriş ve Android

Barış Akkurt19

• İşaretçi: Başka bir değişkenin adresini tutan değişken

• type *var_name;• Ör: int var = 20; /* değişken tanımlama */int *ip; /* işaretçi tanımlama */ip = &var; /* işaretçide adres tut *//* ekrana bir adres basar*/NSLog(@"Address stored in ip variable: %x\n", ip );/* ekrana 20 basar */NSLog(@"Value of *ip variable: %d\n", *ip );

OBJECTIVE C - İŞARETÇİLER

Bölüm 3 – iOS Platformu

12.3.2014

Page 20: Mobil Programlamaya Giriş ve Android

Barış Akkurt20

• Sınıflar @interface ve @implementation olarak 2 bölümde tanımlanır.

// Car.h#import <Foundation/Foundation.h>@interface Car : NSObject {}

@property (copy) NSString *model;- (void)drive;

@end

OBJECTIVE C - SINIFLARBölüm 3 – iOS Platformu

12.3.2014

Page 21: Mobil Programlamaya Giriş ve Android

Barış Akkurt21

// Car.m#import "Car.h"@implementation Car { // Private instance variables double _odometer;}@synthesize model = _model; - (void)drive { NSLog(@"Driving a %@. Vrooooom!", self.model);}@end

• Nesne yaratmaCar *toyota = [[Car alloc] init];[toyota setModel:@"Toyota Corolla"];[toyota drive];

OBJECTIVE C – SINIFLAR-2Bölüm 3 – iOS Platformu

12.3.2014

Page 22: Mobil Programlamaya Giriş ve Android

Barış Akkurt22

- (int)addX:(int)x toY:(int)y { int sum = x + y; return sum; }- İnstance metotu demektir. Ve int değer döner [ -(int) ]Parameters are specified with a colon after the name, a data type, and their own name.- :(int)xGarip olan kısım:toY:(int)yint newScore = [score addX:24 toY:500];

OBJECTIVE C - METOTLARBölüm 3 – iOS Platformu

12.3.2014

Page 23: Mobil Programlamaya Giriş ve Android

Barış Akkurt23

• @interface derived-class: base-class@interface Person : NSObject{ NSString *personName; NSInteger personAge;}

OBJECTIVE C - KALITIMBölüm 3 – iOS Platformu

12.3.2014

Page 24: Mobil Programlamaya Giriş ve Android

Barış Akkurt24

• Protocol: Java’daki interface• Bellek yönetimi: Automatic Reference

Counting• Category: Olan bir sınıfa ek özellikler

eklemek içindir ve bunu kalıtım olmadan yapmaya imkan verir.

• Block: Objective C’nin anonymous fonksiyonları

OBJECTIVE C - DİĞERLERİBölüm 3 – iOS Platformu

12.3.2014

Page 25: Mobil Programlamaya Giriş ve Android

Barış Akkurt25

• Xcode – New>Project>Select Single View App

• Product Name is Hello.• Device Family is set to iPhone.• Use Storyboards is not selected.• Use Automatic Reference Counting is selected.-Click Next and pick a location to store the project. Build and Run by Product>Run-Open the ViewController.xib file. This brings up the Interface Builder editor-Drag a Label into the view and resize it -Build and run

IOS – MERHABA DÜNYABölüm 3 – iOS Platformu

12.3.2014

Page 26: Mobil Programlamaya Giriş ve Android

Barış Akkurt26

IOS – MERHABA DÜNYA-2

IOS – ÇALIŞMA ORTAMIBölüm 3 – iOS Platformu

12.3.2014

Page 27: Mobil Programlamaya Giriş ve Android

Barış Akkurt27

ANDROİD GENEL BİLGİLER

• Android: Linux çekirdeği tabanlı işletim sis.• Apache Lisansı• En çok uygulama Android platformunda (1

milyon)• İlk sürüm: 23 Eylül 2008• Güncel sürüm: 9 Aralık 2013, 4.4.2 Kit Kat• Programlama dili: Java• IDE: Eclipse• Telefon, tablet haricinde; akıllı saat, Google glass,

ev otomasyonu, voip telefonu, kulaklık akıllı tv• 2013 sonu itibariyle akıllı telefonlar içinde %81.3

Pazar payı

Bölüm 4 – Android

12.3.2014

Page 28: Mobil Programlamaya Giriş ve Android

Barış Akkurt28

ANDROİD GENEL BİLGİLER-2

Bölüm 4 – Android

12.3.2014

Page 29: Mobil Programlamaya Giriş ve Android

Barış Akkurt29

Linux çekirdeğinde yapılan değişiklikler ashmem (Android Shared Memory), a file-based shared

memory system. Binder, an inter-process communication (IPC) and remote

procedure call (RPC) system. logger, a high-speed in-kernel logging mechanism

optimized for writes. Paranoid Networking, a mechanism to restrict network I/O

to certain processes. pmem (Physical Memory), a driver for mapping large

chunks of physical memory into user-space. Viking Killer, Android’s “kill least recently used process”

logic under low memory conditions. wakelocks, Android’s unique power management solution

ANDROİD ÇEKİRDEĞİBölüm 4 – Android

12.3.2014

Page 30: Mobil Programlamaya Giriş ve Android

Barış Akkurt30

• Aktivite• Intent• Dalvik• Content Provider (içerik sağlayıcı)• Broadcast receiver• Service• Resource

TERİMLERBölüm 4 – Android

12.3.2014

Page 31: Mobil Programlamaya Giriş ve Android

Barış Akkurt31

ANDROİD’İN YAPISIBölüm 4 – Android

12.3.2014

Page 32: Mobil Programlamaya Giriş ve Android

Barış Akkurt32

AKTİVİTE YAŞAM DÖNGÜSÜ

Bölüm 4 – Android

12.3.2014

Page 33: Mobil Programlamaya Giriş ve Android

Barış Akkurt33

• IDE: Eclipse, Android Studio, Netbeans

• DDMS: Dalvik Debug Monitor System• Sqlite• Emülatör

GELİŞTİRME ARAÇLARIBölüm 4 – Android

12.3.2014

Page 34: Mobil Programlamaya Giriş ve Android

Barış Akkurt34

ADIM ADIM UYGULAMA GELİŞTİRME

Bölüm 4 – Android

12.3.2014

Page 35: Mobil Programlamaya Giriş ve Android

Barış Akkurt35

DERLEME İŞLEMİBölüm 4 – Android

12.3.2014

Page 36: Mobil Programlamaya Giriş ve Android

Barış Akkurt36

• Arayüz ileWindow>AVD Manager>New• Konsol ile$ android create avd -n <name> -t <targetID> [-<option> <value>] ... C:\Users\{yourUserName}\.android\avd\{yourAVDName}.avd

Hızlandırmak için:Intel HAXM

EMÜLATÖRBölüm 4 – Android

12.3.2014

Page 37: Mobil Programlamaya Giriş ve Android

Barış Akkurt37

• Ufak farklar Ör: Java.version 0 döndürür

• ClassName.class• ClassName.this• Nested class

ANDROID İÇİN JAVABölüm 4 – Android

12.3.2014

Page 38: Mobil Programlamaya Giriş ve Android

Barış Akkurt38

MERHABA DÜNYA UYGULAMASI

Merhaba dünya uygulaması, loglama, buton ile yeni aktivite açma.

Bölüm 4 – Android

12.3.2014

Page 39: Mobil Programlamaya Giriş ve Android

Barış Akkurt39

İZİNLER

Telefonun bazı özellikleri için izin gerekebilir.<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RECEIVE_SMS" /> ...</manifest>

Ör: sms alma, sms yollama, internet, yer bilgisi, kamera, titreşim, bluetooth vs.Tümü: http://developer.android.com/reference/android/Manifest.permission.html

Bölüm 4 – Android

12.3.2014

Page 40: Mobil Programlamaya Giriş ve Android

Barış Akkurt40

• Uygulama ayarlarını saklamak için.

SHARED PREFERENCES

shared_pref.java shared_pref.xml

Bölüm 4 – Android

12.3.2014

Page 41: Mobil Programlamaya Giriş ve Android

Barış Akkurt41

• Action bar Android 3.0 (API Level 11) ile geldi.

• <uses-sdk android:minSdkVersion="11" ... />

• res/menu/main_activity_actions.xml dosyasına menüyü ekle

ACTION BAR ÖRNEĞİ

action_bar.txt

Bölüm 4 – Android

12.3.2014

Page 42: Mobil Programlamaya Giriş ve Android

Barış Akkurt42

• Linear Layout• Relative Layout• Table Layout• GridLayout• Absolute Layout• Frame Layout

LAYOUT YÖNETİMİBölüm 4 – Android

12.3.2014

Page 43: Mobil Programlamaya Giriş ve Android

Barış Akkurt43

LINEAR LAYOUT

• android:orientation= vertical & horizontal

linear_layout.xml

Bölüm 4 – Android

12.3.2014

Page 44: Mobil Programlamaya Giriş ve Android

Barış Akkurt44

• Relative Layout: View’ların birbirine göre yerleştirildiği yerleşim düzeni.

RELATIVE LAYOUT

relative_layout.xml

Bölüm 4 – Android

12.3.2014

Page 45: Mobil Programlamaya Giriş ve Android

Barış Akkurt45

TABLE LAYOUT

table_layout.xml

Bölüm 4 – Android

12.3.2014

Page 46: Mobil Programlamaya Giriş ve Android

Barış Akkurt46

GRID LAYOUT

grid_layout.xml grid_layout.java

Bölüm 4 – Android

12.3.2014

Page 47: Mobil Programlamaya Giriş ve Android

Barış Akkurt47

• Checkbox

• Radio button

• Spinner

CHECKBOX, RADIO, SPINNER

checkbox.java checkbox.xml

radio_button.java radio_button.xml

spinner.java spinner.xml

Bölüm 4 – Android

12.3.2014

Page 48: Mobil Programlamaya Giriş ve Android

Barış Akkurt48

• DatePicker

• TimePicker

DATE PICKER VE TIME PICKER

datepicker.javadatepicker.xml

timepicker.javatimepicker.xml

Bölüm 4 – Android

12.3.2014

Page 49: Mobil Programlamaya Giriş ve Android

Barış Akkurt49

LISTVIEW

list_item.xml listview.java strings.xml

Bölüm 4 – Android

12.3.2014

Page 50: Mobil Programlamaya Giriş ve Android

Barış Akkurt50

1-Olan Kamera uygulamasını kullanmak2-Direk Android Kamera API’yi kullanmak1. yöntem ile örnek:

KAMERA

camera.java camera.xml

Bölüm 4 – Android

12.3.2014

Page 51: Mobil Programlamaya Giriş ve Android

Barış Akkurt51

• A Fragment represents a behavior or a portion of user interface in an Activity. Fragment, alt aktivite gibi düşünülebilir.

FRAGMENTBölüm 4 – Android

12.3.2014

Page 52: Mobil Programlamaya Giriş ve Android

Barış Akkurt52

• Fragment’ların kendi layoutu ve yaşam• döngüsü vardır.• Aktivite çalışırken fragment eklenebilir• çıkarılabilir.• Bir aktivitede birden çok fragment • olabilir.• Bir fragment birden fazla aktivitede• kullanılabilir.• Fragment’lar API Level 11’de geldi.

FRAGMENT-2Bölüm 4 – Android

12.3.2014

Page 53: Mobil Programlamaya Giriş ve Android

Barış Akkurt53

FRAGMENT-3: ÖRNEK

activity_main.xml LM_Fragment.java lm_fragment.xml

MainActivity.java PM_Fragment.java pm_fragment.xml

strings.xml

Bölüm 4 – Android

12.3.2014

Page 54: Mobil Programlamaya Giriş ve Android

Barış Akkurt54

Android’de 3 genel sensör kategorisi var: Hareket sensörü Çevre sensörü Pozisyon sensörüprivate SensorManager mSensorManager;mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);tenderdetailapproval//tüm sensörlere ulaşList<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);

SENSÖRBölüm 4 – Android

12.3.2014

Page 55: Mobil Programlamaya Giriş ve Android

Barış Akkurt55

• Content provider başka uygulamalara içerik sağlayan bileşen.

• Örnek: Bir content provider’ı kullanan uygulama

CONTENT PROVIDER

content_provider.java list_item.xml

Bölüm 4 – Android

12.3.2014

Page 56: Mobil Programlamaya Giriş ve Android

Barış Akkurt56

Teoride şu adımlardan oluşur:1. ContentProviderBase sınıfını extend

eden bir sınıf yaz.2. Verilere erişmek için kendi URI

adresini tanımla3. Verileri kendi veritabanında tut.4. Content provider sorgularını

gerçekle5. AndroidManifest’te aktivite’ye

provider tagı ekle.

CONTENT PROVIDER YAZMAK

Bölüm 4 – Android

12.3.2014

Page 57: Mobil Programlamaya Giriş ve Android

Barış Akkurt57

• Windows>Android SDK Manager’dan Google Play Services’i indir.

• Eclipse’e android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib import et.

• Keytool ile bir Google Maps API key al.• Google API Console’da Android key’i yarat• Yeni Android projesi yarat. • Bu projeye Google Play Services’i ekle.

GOOGLE MAPSBölüm 4 – Android

12.3.2014

Page 58: Mobil Programlamaya Giriş ve Android

Barış Akkurt58

• Map Key’ini Manifest dosyasına ekle.• Gerekli izinleri ver• Nihayet kodlama

GOOGLE MAPS-2

maps.java maps.xml

Bölüm 4 – Android

12.3.2014

Page 59: Mobil Programlamaya Giriş ve Android

Barış Akkurt59

• İki altın kural:1. Don't do work that you don't need to do.2. Don't allocate memory if you can avoid it.

Performans: float kullanmaktan kaçın, sabitleri final yap vs. vs.Arayüz: iphone’u kopyalama, vertical ve portrait modları destekle vs. vs.Developer doc’ta ayrıntılar var.

BEST PRACTICESBölüm 4 – Android

12.3.2014

Page 60: Mobil Programlamaya Giriş ve Android

Barış Akkurt60

• JUnit’in Android için extension’ı var.• File > New > Other > Android Test

Project• android->sdk->platform-tools• $ adb shell monkey -v 100• Daha fazla bilgi için; Activity, Service,

Content provider, UI testing ile ilgili sayfalar var Android docs’ta.

TESTBölüm 4 – Android

12.3.2014

Page 61: Mobil Programlamaya Giriş ve Android

Barış Akkurt61

• Uygulama sağ tık, Export >Export Android App

• Sihirbazı bitir (private key oluşturma vs.)

• Google Play admin arayüzüne gir, Add New App

• .apk dosyanı upload et, gerekli şeyleri doldur.

http://stackoverflow.com/questions/5119633/to-do-list-before-publishing-android-app-to-market

UYGULAMA YAYINLAMABölüm 4 – Android

12.3.2014

Page 62: Mobil Programlamaya Giriş ve Android

Barış Akkurt62

• Sqlite kullanan bir uygulamanın demosu

VT KULLANAN UYGULAMABölüm 4 – Android

12.3.2014

Page 63: Mobil Programlamaya Giriş ve Android

Barış Akkurt63

• Yeni Başlayanlar İçin Kaynaklar- Programming Mobile Applications for Android Handheld Systems, Adam Porter, coursera.org- Hello Android, Ed Burnette, The Pragmatic Bookshelf- Beginning Android 4 Application Development, Wei-Meng Lee, Wrox Publishing- Google’ın Android sayfası: http://developer.android.com/training/index.html- Blog: http://www.androidhive.info/

• Orta ve İleri Düzey Kaynaklar- Google Android Best Practices, http://developer.android.com- Android Programming: Pushing The Limits, Erik Hellman, Wiley Publishing

REFERANSLAR VE KAYNAKLAR

Bölüm 4 – Android

12.3.2014

Page 64: Mobil Programlamaya Giriş ve Android

Teşekkürler

D. Barış Akkurt