android - verzija -final

221
UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA LABORATORIJA ZA ELEKTRONSKO POSLOVANJE RAZVOJ APLIKACIJA ZA OPERATIVNI SISTEM ANDROID

Upload: branko-cvijovic

Post on 11-Dec-2015

258 views

Category:

Documents


14 download

DESCRIPTION

RAZVOJ APLIKACIJA ZA OPERATIVNI SISTEM ANDROIDOsnove Android platformeArhitektura Android sistema

TRANSCRIPT

Razvoj aplikacija za operativni sistem Android

Razvoj aplikacija za operativni sistem Android

UNIVERZITET U BEOGRADUFAKULTET ORGANIZACIONIH NAUKA

LABORATORIJA ZA ELEKTRONSKO POSLOVANJE

RAZVOJ APLIKACIJA ZA OPERATIVNI SISTEM ANDROID

Beograd, mart 2012.

Sadraj51.Osnove Android platforme

81.1.Istorija razvoja Android sistema

81.1.1.Android 1.0/1.1

91.1.2.Android 1.5 ("Cupcake)

91.1.3.Android 1.6 (Donut)

101.1.4.Android 2.0/2.1 (Eclair)

121.1.5.Android 2.2 (Froyo)

141.1.6.Android 2.3 (Gingerbread)

151.1.7.Android 2.4(Gingerbread, Ice-Cream?)

151.1.8.Dalji razvoj Android sistema

161.1.9.Android 3.0 (Honeycomb)

161.1.10.Android 3.1

161.1.11.Android 3.2

171.1.12.Android 4 (Ice Cream Sandwich)

171.1.13.Android 5

171.2.Funkcionalnosti Android OS

191.3.Arhitektura Android sistema

201.3.1.Linux jezgro

201.3.2.Izvorne programske biblioteke

201.3.3.Radno okruenje Android Runtime (Dalvik Virtual Machine)

211.3.4.Application Framevork

221.3.5.Integrisani pretraiva

221.3.6.Optimizovana grafika

221.3.7.SQLite

221.4.Razvoj Android aplikacija

231.4.1.Komponente aplikacija

252.Instalacija i postavljanje razvojnog okruenja

372.1.Kreiranje nove Android aplikacije

402.2.Fajl AndroidManifest.xml

433.Aktivnosti i klasa Activity

433.1.ivotni ciklus aktivnosti

473.2.Kreiranje aktivnosti

524.Resursi u Android aplikacijama

534.1.Upravljanje i pristup resursima

544.2.Tipovi resursa

554.3.Rad sa resursima

554.3.1.Rad sa stringovima

554.3.2.Rad sa nizom stringova

564.3.3.Rad sa Boolean i Integer resursima

574.3.4.Rad sa bojama

574.3.5.Rad sa resursima koji se crtaju

584.3.6.Rad sa menijima

604.3.7.Rad sa fajlovima

614.3.8.Rad sa rasporedom (Layout)

624.3.9.Rad sa stilovima

634.3.10.Rad sa temama

644.4.Referenciranje sistemskih resursa

655.Elementi korisnikog interfejsa

665.1.XML layout

685.2.Layouts

685.2.1.LinearLayout

715.2.2.RelativeLayout

735.2.3.TableLayout

765.2.4.GridView

795.2.5.TabLayout

825.2.6.ListView

845.3.Meniji

855.3.1.Meni opcija

875.3.2.Kreiranje kontekstualnih menija

885.3.3.Kreiranje kretajueg kontekstualnog menija

895.3.4.Iskaui meni

895.3.5.Kreiranje meni grupa

915.4.Dogaaji u okviru korisnikog interfejsa

925.4.1.Event listeners

965.5.Rad sa obavetenjima Notifications

975.5.1.Toast notifikacije

985.5.2.Status bar notifikacije

1005.5.3.Dialog notifikacije

1005.6.Dijalozi

1015.6.1.Kreiranje AlertDialog-a

1025.6.2.Kreiranje dijaloga sa sopstvenim layout-om

1025.6.3.Druge vrste dijaloga

1035.7.Teme i stilovi

1046.Intents

1066.1.Vrste Intent-a

1086.1.1.Intent filteri

1126.1.2.Primer belenice

1176.2.Intents primeri

1186.2.1.Slanje podataka novoj aktivnosti

1196.2.2.Vraanje podataka iz aktivnosti

1207.Rad sa servisima Services

1217.1.ivotni ciklus Servisa

1247.2.Kreiranje i startovanje servisa

1267.3.Kreiranje servisa - primer

1317.4.Implementacija udaljenog interfejsa

1328.Skladitenje podataka

1328.1.Zajednika podeavanja

1348.2.Interne memorije

1358.3.Skladitenje podataka na spoljanoj memoriji

1368.4.Rad sa bazom podataka SQLite

1368.4.1.Kreiranje SQLite baze podataka

1368.4.2.Kreiranje tabela

1378.4.3.Unos, promena i brisanje podataka iz tabele

1378.4.4.Unos podataka insert()

1388.4.5.Promena podataka update()

1388.4.6.Brisanje podataka delete()

1388.4.7.Rad sa transakcijama

1398.4.8.Upiti SQLite baze podataka

1408.4.9.Brisanje tabela i ostalih SQLite objekata

1419.Internet

1419.1.HttpURLConnection

14410.Lokacije i mape

14410.1.Lokacijski servisi

14710.2.Google Map eksterna biblioteka

15311.Kamera

15312.AndroidMarket (GooglePlay)

15412.1.Primeri uspenih aplikacija sa GooglePlay servisa

15412.1.1.INSTAGRAM

15612.1.2.PARKING MANIJAK

15712.1.3.GOGGLES

15812.1.4.PhotoWall - Live wallpaper

15912.1.5.PdfReader

16112.1.6.File Manager

16212.1.7.Last.fm

16312.1.8.Super Sudoku

16412.1.9.Google Maps

16512.1.10.YouTube

16612.1.11.Facebook for Android

16812.1.12.Titanium Backup (root) for Android

16812.1.13.Walk and Text

17012.1.14.Easy Reminder

17012.1.15.Alarm Clock Xtreme free

17112.1.16.Money Manager

17212.1.17.Touch Calendar

17312.1.18.Rhythm Runner

17512.2.Primeri razvijenih ELAB aplikacija

1. Osnove Android platformeAndroid je mobilni operativni sistem prvobitno razvijen od strane Android kompanije, koju je kupio Gugl 2005. godine. Nakon kupovine, Gugl je zatraio stvaranje Open Handset Alliance (OHA) udruenja, koja je sada angaovana u pruanju podrke i dalji razvoj sistema. Android je zasnovan na izmenjenoj verziji Linux jezgra. Prema istraivanjima kompanije Gartner iz druge polovine 2011.god., najvei udeo na tritu imaju: Android, Symbian OS, iOS, RIM (slika 1. i slika 2.).

Slika 1.1. Trino uee mobilnih OS (Gartner, Februar 2012.)

Slika 1.2. Trino uee mobilnih OS - tendencije (Gartner, Februar 2012.)

U Novembru 2011. Android je dostigao trini udeo od 52,3%. Danas je preko 200 miliona Android mobilnih ureaja aktivno na tritu

Vie od 200 ureaja razliitih proizvoaa koji rade na Android OS : HTC, Samsung, Motorola, LG, Sonny Ericsson. Android OS se sastoji od 12 miliona linija koda, ukljuujui 3 miliona linija XML koda, 2,8 miliona linija C koda, 2,1 miliona linija Java koda i 1,75 miliona linija C++ koda..

Android predstavlja softverski stek namenjen mobilnim telefonima koji u sebi ukljuuje operativni sistem, posredniki softver kao i kljune aplikacije za normalno funkcionisanje. Android SDK obezbeuje alatke i API koji su neophodni za dalji razvoj aplikacija na Android platformi koristei JAVA programski jezik.

Prvobitno razvijen od strane Android kompanije. Prva zvanina verzija Android OS, razvijena u saradnji Google i OHA, lansirana je 2007 zajedno sa osnivanjem Open Handset Alliance, udruenja 78 kompanija posveene unapreenju otvorenih standarda za mobilne ureaje. Gugl je vei deo Android koda objavio pod Apache licencom, licencom slobodnog softvera i licencom otvorenog koda.

Shodno svojoj politici OHA istie sledece karakteristike Android programskog okruenja:

otvorenost - programeru omogucava potpunu slobodu u razvoju novih i vec postojecih aplikacija, a proizvoau ureaja slobodno koricenje i prilagoavanje platforme bez placanja autorskih prava; sve aplikacije su ravnopravne - to znai da ne postoji razlika izmeu osnovnih jezgarnih aplikacija ureaja i dodatnih aplikacija. Svim aplikacijama omogucen je ravnopravni pristup resursima pokretnog ureaja to daje mogucnost prilagoavanja ureaja specifinim potrebama individualnog korisnika; automatsko upravljanje ivotnim ciklusom aplikacije - omogucava nadzor pokretanja i izvravanja aplikacija na sistemskom nivou optimizovanim koricenjem memorije i snage ureaja. Krajnji korisnik vie ne brine o gaenju odreenih aplikacija pre pokretanja drugih; uklanjanje granica "klasinih" aplikacija - mogucnost razvoja novih i inovativnih aplikacija zasnovanih na meusobnoj kolaboraciji tehnologija; brz i jednostavan razvoj aplikacija - omogucen je bogatom bazom korisnih programskih biblioteka (eng. libraries) i alata za izradu aplikacija; visokokvalitetni grafiki prikaz i zvuk - podrana 2D vektorska i 3D OpenGL (engl. Open Graphics Librari) grafika, te ugraeni kodeci svih esto koricenih audio i video formata; kompatibilnost sa vecinom sadanjeg i buduceg hardvera - ukljuuje prenosivost Androidovih aplikacija na ARM, k86 i ostale arhitekture, te prilagodljivost sistema ulaznim i izlaznim komponentama.1.1. Istorija razvoja Android sistemaJula 2005, Gugl kupuje malu kompaniju Android Inc. sa seditem u Kaliforniji, SAD. U to vreme, o kompaniji se znalo veoma malo, osim da se bavi razvojem softvera za mobilne telefone.Ova akvizicija je jasno ukazivala da Gugl planira da ue na trite mobilnih telefona.

Sve do 5. Novembra 2007. razvoj novog operativnog sistema za mobilne ureaje od strane Gugl korporacije svodilo se na pekulacije i nagaanja ta su prave namere Gugl korporacije, mada se sa izvesnom dozom sigurnosti znalo da Gugl priprema novi operativni sistem za ulazak na mobilno trite. Tog dana svetu je predstavljena Open Handset Alliance (OHA) koja je predstavljala konzorcijum vie kompanija koje su predstavljale znaajne igrae na tritu mobilnih telefona, poput: Texas Instruments, Broadcom, Google, HTC, Intel, LG, Motorola, Qualcomm i mnogie druge kompanije. OHA je otkrila svetu svoj prvi proizvod, Android, mobilnu platformu zasnovanu na Linux kernelu 2.6.

1.1.1. Android 1.0/1.1

Prva verzija operativnog sistema Android (1.0) predstavljena je u Septembru 2008. godine. Android 1.0 je svoju premijeru doiveo na telefonu kompanije HTC, koja je u sradnji sa kompanijom Gugl razvila telefon koji e uspeno realizovati poetne zadatke koje je nova platforma imala. Jedini telefon koji je imao Android verzije 1.0 bio je HTC Dream ili T-Mobile G1.

Android 1.0 je patio od mnogih dejih bolesti, te je Gugl est meseci kasnije izbacio novu verziju sistema koja je ispravila par kritinih problema, podrku za glasovnu pretragu, mogunost plaenih aplikacija u onlajn prodavnici (Market), ispravljene probleme u vezi sa servisom Gmail i jo nekoliko sitnih prepravki. Ova aurirana verzija sistema bila je Android verzije 1.1. Kao i prethodna verzija, ova verzija je bila namenjena telefonu kompanije HTC, HTC Dream, koji je i dalje predstavljao telefon namenjen programerima i inenjerima zaduenim za razvoj sistema, a i korisnikih aplikacija.

1.1.2. Android 1.5 ("Cupcake)

Samo tri meseca kasnije, u Maju 2009. Gugl predstavlja novu verziju svog operativnog sistema za mobilne ureaje, Android 1.5 koji je imao kodni naziv Cupcake (mala torta). Od ove verzije Gugl je svakoj novijoj verziji dodeljivao naziv nekog slatkia, a skoriji dolazak nove verzije bio bi najavljivan postavljanjem skulpture sledee poslastice ispred sedita firme.

Nova verzija donela je znaajna poboljanja sistema u vidu novih mogunosti kao to su: snimanje video sadraja

podrka za stereo blutut slualice

podesiva tastatura

prepoznavanje glasa

mogunost koja je pruena programerima da kreiraju sopstvene aplikacije za poetni ekran (Home Screen), koje se nazivaju Videti (Widgets).

Nova verzija sistema koja se prvobitno pojavila kao nadogradnja za postojei HTC Dream, privukla je i druge proizvoae, tako da se u periodu nakon pojave verzije 1.5 javlja veliki broj novih modela telefona koji su bili pokretani Android operativnim sistemom.

1.1.3. Android 1.6 (Donut)

Nakon irokog prihvatanja Android operativnog sistema od strane mnogih proizvoaa mobilnih ureaja, koje je izazvala pojava verzije 1.5 bilo je neophodno odrati korak sa konkurencijom koja je napredovala na svakom polju. Gugl je bio svestan stanja na tritu mobilnih ureaja i nastavio strategiju konstantnog poboljanja i uvoenja novih mogunosti svog sistema.

Nova verzija nazvana Krofna (Donut), donela je brojna poboljanja ve iroko prihvaenog operativnog sistema. Promene u verziji 1.6 predstavljale su jasan znak da je Gugl ceo projekat shvatio veoma ozbiljno.

Najznaajnija poboljanja u verziji 1.6 su:

Novi izgled Onlajn Prodavnice (Market) koji je omoguio korisnicima laki pristup i bru pretragu eljenih aplikacija

Kameru i video kameru integrisanu u Galeriju, koja je sada omoguavala izbor vie datoteka za istovremeno brisanje

Podrku za nove tehnologije kao to su: CDMA/EVDO, 802.1x i text-to-speech

Podrku za navigacione aplikacije

Razna poboljanja po pitanju brzine, pretrage grafikog interfejsa, itd.

Pored svih pozitivnih strana nove verzije sistema, polako je do izraaja dolazio problem koji e pratiti Android operativni sistem sve do dananjih verzija. Kako je Gugl za telefon za razvoj sistema izabrao HTC Dream i sistem razvijao na osnovu mogunosti koje je taj telefon posedovao, prvi u redu za auriranje sistema bio je upravo HTC Dream. Meutim, problem se javio poto je veliki broj saradnika izbacio na trite svoje telefone sa do tada aktuelnom verzijom sistema 1.5. Kako je svaki proizvoa prilagodio Android okruenje svojim potrebama, odnosno izmenio okruenje tako da odgovara mogunostima svojih modela, lako auriranje nije bilo mogue, jer nova verzija sistema nije mogla da se primeni bez dodatne manipulacije od strane proizvoaa.

Ovo je dovelo do usporavanja irenja nove verzije sistema, ak su se pojavljivali novi modeli sa sada starom verzijom sistema. Neki od njih su i danas ostali bez nadogradnje na novije verzije.

1.1.4. Android 2.0/2.1 (Eclair)Kako je vreme prolazilo vremeni HTC Dream je polako zaostajao za konkurencijom po pitanju tehnikih mogunosti, naime imao je preslab hardver za vreme koje je dolazilo. Imajui u vidu dinamiku razvoja trita Gugl u saradnji sa HTC korporacijom zapoinje razvoj novog telefona koji e sluiti za razvoj operativnog sistema i aplikacija.

Prvi telefon koji u oktobru dobija novu verziju operativnog sistema Android, bio je ureaj kompanije Motorola, koji se nazivao Motorola Droid. Ovaj telefon pokretala je nova verzija Android sistema 2.0 (Eclair).

Android 2.0 je smatran za prvu veliku nadogradnju sistema, koja je donela znaajne promene kako po pitanju izgleda grafikog interfejsa, tako i po pitanju brojnih novih mogunosti koje je nova verzija ukljuivala.

Promene koje je nova verzija donela su mnogobrojne, ali kao najbitnije se mogu istai:

Podrka za Microsoft Exchange koji omoguava povezivanje mobilnog telefona sa serverom koji kroz ovaj protokol omoguava laku komunikaciju izmeu npr. firme i zaposlenog (mail, calendar, outlook...)

Podrka za Facebook koja integrie ovu socijalnu mreu u kontakte telefona

Poboljanja veb pretraivaa

Potpuno nova aplikacija za pretraivanje mapa (Google Maps), po prvi put ova aplikacija omoguava pregled satelitskis snimaka na mobilnom telefonu

Novi Jutjub (Youtube) videt koji omoguava brzo postavljanje svojih snimaka na servere Jutjuba

Novi nain upravljanaj kontaktima koji omoguava znatno laki pristup opcijama nego do tada...

Motorola Droid koja je imala procesor tek prosene snage, imala je zavidan grafiki procesor, tako da su znaajne firme na polju 3D igara polako poele da svoje naslove prilagoavaju sve jaim Android ureajima.

I pored predstavljanja novog modela telefona sa novom verzijom operativnog sistema u saradnji sa Motorolom, Gugl je nastavio uporedni razvoj sopstvenog telefona koji e biti naslednik tada ve legendarnog HTC Dream telefana. Novi telefon bi trebalo da omogui razvojnom timu kompanije Gugl, ali i ostalim programerima da dalje unapreuje svoj sistem i aplikacije koje su za njega namenjene.

Novi telefon Gugl je ponovo razvio u saradnji sa tajvanskom kompanijom HTC, novi telefon predstavljao je poslednju generaciju tehnologije, telefon je imao procesor iji je radni takt bio 1Ghz, imao je 576MB radne memorije, podravao je microSD kartice veliine do 32GB, a to je najbitnije, dolazio je sa najnovijom verzijom Android operativnog sistema Android 2.1. Novi telefon se nazivao Google Nexus One.

Novi operativni sistem koji se pojavio sa pojavom novog Guglovog telefona, nosio je oznaku 2.1, a kodni naziv je ipak zadran od strane Gugla, tako da je bio isti kao i za Android 2.0 Eclair.

Android 2.1 je za razliku od prethodne verzije koja se nalazila jedino na telefonu Motorola Droid, bio osnova za ogroman broj telefona koji su se pojavljivali u sledeem periodu. Ova verzija sistema je masovno prihvaena od svih proizvoaa telefona koji su bili ukljueni u Android projekat i predstavlja prvu sledeu masovnu verziju nakon verzije 1.5.

I ako mnogi proizvoai nisu vrili nadogradnju 1.5 verzije na 1.6 ili pak 2.0 verziju operativnog sistema Android, ovog puta pripremali su nadogradnju za ve realizovane mobilne ureaje na verziju 2.1.

Poboljanja koja su razdvajala Andorid 2.0 od verzije 2.1 su sledea:

Poboljana ukupna brzina sistema

Podrka za nove veliine ekrana i rezolucije istih

Novi grafiki interfejs web pretraivaa i podrka za HTML5

Podrka za blic za kameru

Digitalni zum

Podrku za registrovanje pokreta vie prstiju od jednom, tzv. Multi-touch

Poboljana tastatura

Podrka za blutut verzije 2.1 (blutut transfer datoteka)

Live Wallpapers...

Nakon pojavljivanja Google Nexus One telefona, nastala je prava bujica novih modela gde je vodeu ulogu imala kompanija HTC.

Ponovo do izraaja dolazi nemogunost centralizovanog auriranja sistema od strane Gugla, ve je nova verzija ponovo morala da proe proces prilagoavanaj od strane drugih proizvoaa. Ovaj nedostak uslovio je da i do danas mnogi modeli nisu doiveli svoju premijeru na novom operativnom sistemu, koji je sada ciljao mnogo monije telefone nego to je do tada bio sluaj.

Nova verzija operativnog sistema donela je znaajna poboljanja po pitanju 3D tehnologije, odnosno aplikacija. Pojavljivanje Android 2.0 koji je pokrenuo razvoj kompleksnih 3D aplikacija za mobilne ureaje, bio je dodatno ubrzan pojavom Android 2.1 sistema.

Po prvi put se ispred sedita firme jedna skulptura zadrava due od par meseci, po prvi put prolo je 7 meseci pre nego to je Gugl predstavio novu verziju, to je znailo samo jedno veliko poboljanje sistema.

1.1.5. Android 2.2 (Froyo)

Nakon dueg perioda bez ikakvih vesti o novoj reviziji operativnog sistema Android, ispred sedita firme, zvanino je postavljena skulptura smrznutog jogurta (Froyo) to je znailo da je nova verzija sistema spremna i da je Guglov ureaj (Nexus One) bio spreman da novi sistem pokrene. Mnogi su novu verziju predstavljali kao apsolutnu revoluciju sistema koja e Android postaviti na lidersku poziciju na tritu mobilnih telefona.

Android 2.2 predstavljen na Gugl samitu u Maju 2010. godine, sadrao je najveu listu poboljanja koja je neka verzija sa svojom pojavom donela, ali moda najzaajniju od svih, ono poboljanje koje je Android distanciralo od konkurentskih operativnih sistema jese podrka za fles animacije (Flash animation) koja je implementirana u saradnji sa kompanijom Adobe.

Poboljanaj koja su ukljuena u novoj verziji su:

Veliko poveanje ukupne brzine sistema, optimizacija korienja memorije

Dodatno poveanje procesiranja aplikacija koja je ostvarena primenom JIT (Just in Time) skripte

Integracija Chrome V8 JavaScript u veb pretraiva

Poboljana podrka za Microsoft Exchange

Mogunost deljenja internet konekcije sa drugim ureajima putem USB ili WiFi konekcije (Tethering)

Opcija za brzo iskljuivanje mobilne mree

Nova onlajn prodavnica (Market) sa mogunou automatske nadogradnje aplikacija

Podrka za upload preko veb pretraivaa

Podrka za instaliranje aplikacija na proirivu memoriju (microSD)

Podrka za Adobe Flash 10.1

Podrka za snimanje i prikazivanje videa u visokoj rezoluciji 720p...

Kao to je ve navedeno, pojavu nove verzije je svakako oznaila pojava Adobe Flash playera na mobilnim ureajima, koja je bila pokretana od strane grafikog procesora. Ova podrka je izazvala burne reakcije od strane konkurenata, pre svega amerike kompanije Apple, koja nije elela da u svoje ureaje implementira podrku za flash. Tada je nastao svojevrsni medijski rati na relaciji Apple-Adobe i Apple-Google.

Proces koji je zapoet verzijom 2.1, nastavljen je proces migracije starih verzija na aktuelnu. Ovog puta Gugl je imao neto drugaiji pristup, u saradnji sa ostalim proizvoaima pronaen je nain da se bee vri nadogradnja postojeih verzija na aktuelnu. Tako da su telefoni koji su prvobitno lansirani sa verzijom 2.1, ubrzo dobili nadogradnju na 2.2 verziju operativnog sistema.

Sa ovom verzijom Gugl prekida dalju proizvodnju i prodaju svog telefona Google Nexus One, kako ne bi ugrozio svoje poslovne partnere i omoguio prodaju telefona iskljuivo programerima koji su radili na razvoju aplikacija za njihov operativni sistem.

Konano, Android je bio dovoljno konkurentan operativnom sistemu kompanije Epl (Apple), tako da je velikom brzinom poeo da grabi trino uee. Da bi krajem iste godine doao na lidersku poziciju i trenutno zauzima najvei procenat aktivnih verzija Android mobilne platforme, a Android lidersku poziciju na tritu mobilnih operativnih sistema uopte.1.1.6. Android 2.3 (Gingerbread)

Ponovo se Gugl povlai i primiruje narednih 6 meseci, pre nego to se skulptura izloena krajem Maja 2010. godine, ne zameni. 6. Decembra 2010. godine osvanula je nova maskota ispred prostorija firme, nova verzija je bila spremna.

Uzmajui u obzir sve vee zahteva mobilnog trita i dolaska u prvi plan elje korisnika koje su nekad bile marginalne (poput 3D igrica), Gugl u saradnji sa juno korejskom kompanijom Samsung razvija novi telefon u svrhe razvoja sistema i aplikacija. Google Nexus S je roen.Iako je prethodne verzije tzv. Gugl telefona razvijao tajvanski HTC, Gugl je ovaj put izabrao Samsung kako ne bi favorizovao nijednog od postojeih poslovnih partnera koji uestvuju u konzorcijumu OHA.

Google Nexus S predstavljen je zajedno sa najnovijom verzijom operativnog sistema Android 2.3, koji nosi kodni naziv Medenjak (Gingerbread).Izneverivi mnoga oekivanja i pekulacije, Android Gingerbread nije doao sa oznakom 3.0 kako su mnogi oekivali, ve 2.3. Verzija 3.0 kako e se kasnije saznati bila je rezervisana za ulazak Androida na novo trite, trote tablet ureaja.

Poboljanaj koja su dola sa novom verzijom, u odnosu na prethodnu su brojna, najznaajnija su sledea:

Redizajniran grafiki interfejs (UI)

Podrka za ekrane rezolucije vee od 800x480

VOIP podrka

Podrka za WebM/VP8 video

Podrka za NFC (Near Field Communication )

Unapreena copy/paste funkcija

Nova multitouch tastatura

Audio, video i grafika unapreenja namenjena za programere i razvojne timove video igara

Dodata podrka za nove senzore poput iroskopa

Poboljana kontrola energije i aplikacija

Podrka za vie kamera

Zamena YAFFS EXT4 sistemom datoteka...

Do samita u Barseloni koji je zavren 18. Februara 2011. Google Nexus S, bio je jedini telefon koji je pogonjen poslednjom verzijom operativnog sistema. Trenutno aktuelna verzija je 2.3.3 koja je ispravila sistne nedostatke prvobitne 2.3 verzije.

Ovde se za sada zavrava predstavljanje aktuelnih verzija operativnog sistema za mobilne ureaje Android, u sledeem poglavlju bie opisane nove najavljene verzije ovog sistema, kako za mobilne telefone, tako i za tablet ureaje.1.1.7. Android 2.4(Gingerbread, Ice-Cream?)

Android 2.3 jo nije poteno zaiveo na mobilnim ureajima (ureaji koji podravaju ovu verziju se mogu nabrojati na prste jedne ruke), Gugl ve najavljuje novu verziju svog operativnog sistema namenjenim za mobilne telefone. Nagaanja govore da e nova verzija najverovatnije zadrati isti kodni naziv kao i prethodna, ili da e se nazivati Sladoled (Ice-Cream), a da e se izmene pre svega odnositi na podrku aplikacija koje su namenjene za Android 3.0.

Podrka se odnosi na mogunost pokretanja aplikacija koje su namenjene za procesore sa vie jezgara, da se uspeno izvravaju na procesorima sa jednim jezgrom, poto trenutna verzija to ne podrava.

Ipak, nova verzija se nee pojaviti do Aprila 2011. godine tako da se sve informacije svode na pekulacije i nagaanaja.1.1.8. Dalji razvoj Android sistema

Pojavom novih ureaja na tritu mobilnih ureaja, pre svega tablet ureaja ija erupcia je nastala pojavom Eplovog (Apple) iPad reenja, sve vei pritisak na Gugl vrili su poslovni partneri kojima je bilo neophodno reenje operativnog sistema prilagoenog za rad na znatno veim ekranima od onih koji su se nalazili na mobilnim telefonima. Neki partneri nisu ekali na Gulg da prilagodi svoj sistem potrebama tablet ureaja, ve su samostalno modifikovali do tada aktuelnu verziju Android operativnog sistema 2.2. Samsung je tokom 2010. godine predstavio svoj prvi tablet, Galaxy Tab koji je pokretao Froyo sa prilagoenim interfejsom posebno za tablet.

Iako je Gugl tvrdio da dosadanje verzije nisu prilagoene za rad sa tablet ureajima, Galaxy Tab doivljava veliki trini uspeh, to dodatno pritiska Gugl da ubrza razvoj novog sistema za te ureaje.

1.1.9. Android 3.0 (Honeycomb)

26. Januara 2011. Premijerno je prikazan potpuno novi operativni sistem Android verzije 3.0 koj nosi kodni naziv Sae (Honeycomb) . Za sada dostupan samo kao test verzija, ali se ve pojavljuju ureaji pokretani ovim operativnim sistemom.

Promene koje donosi novi operativni sistem se odnose pre svega na prilagoenost veim ekranima i sannijim konfiguracijama tablet ureaja:

Novi grafiko interfejs namenjen tablet ureajima

Radna povrina u tri dimenzije (3D) sa novim, redizajniranim videtima

Novi nain simultanog izvravanja aplikacija (Multitasking)

Veb pretraiva napravljen posebno za potrebe tablet ureaja

Podrka za video askanje (Chat) koristei Gugl aplikaciju Google Chat)

Interfejs koji se izvrava na nivou grafikog procesora (Hardware Acceleration)

Podrka za proceore sa vie jezfara...

Prvi ureaj koji koristi novu verziju operativnog sistema Android, 3.0 Honeycomb je Motorola Xoom. Ovaj ureaj poseduje procesor sa dva jezgra, nVidia Tegra2 proceor koji podrava putanje videa u pravoj HD rezoluciji 1080p. Ureaj ima i prednju kameru namenjenu za video razgovore. Sve ovo bi trebalo da predstavi oigledne prednosti u odnosu na konkurentski Apple iPad koji ima nedostatak ovih mogunosti.

1.1.10. Android 3.1Objavljen u Maju 2011., podrava dodatne tipove ulaznih ureaja, USB host mode direktno sa kamera i drugih ureaja, Google Movies, Books apps i sl.

1.1.11. Android 3.2

Objavljen u Julu 2011. Dodatna optimizcaija za razliite veliine ekrana, uitavanja media fajlova direktno sa SD kartice, itd. 1.1.12. Android 4 (Ice Cream Sandwich)4.0 Ice Cream Sandwich, objavljen u Oktobru 2011. Nove funkcionalnosti: otkljuavanje telefona na osnovu lica, upravljanje komunikacijom preko mree, upravljanje aktivnostima na drustvenim mreama na jednom mestu, poboljano upravljanje fotografijama, pretraga mailova offline, app folder, NFC. Poslednja stabilna verzija je Android 4.0.1.1.1.13. Android 5Verzija Android 5 pod radnim nazivom Jelly Bean se planira za kraj 2012. godine.1.2. Funkcionalnosti Android OSOsnovne funkcionalnosti Android OS:

Prikaz na ureajima OS prilagoava izgled razliitim tipovima ureaja i kompatibilian je sa 2D, 3D grafikim bibliotekama Skladitenje podataka SQL lite relaciona baza podataka za upravljanje podacima Konektivnost Android podrava konektivnost sa svim standardnim tehnologijama: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE i WiMAX. Razmena poruka SMS i MMS Web browser WebKit browser, zasnovan na Chrome-u Java support Android aplikacije se piu u Java programskom jeziku, Dalvik virtuelna maina Podrka za multimedijalne podatke - WebM, H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, BMP. Streaming media support - RTP/RTSP streaming (3GPP PSS, ISMA), HTML download (HTML5 tag), Adobe Flash Streaming (RTMP), HTTP Dynamic Streaming

Dodatna harderska podrka - kamera, touchscreen, GPS, brzinometar, iroskop, magnetometar, senzori udaljenosti i pritiska, termometri Okruenje za razvoj Android Development Plugin Trite - Android Market je online katalog aplikacija koje se mogu preuzeti i instalirati na Android ureaje, bez potrebe za raunarom. Multi-touch mogunost ureaja da prepozna tri razliite pozicije ulaznih dodira Bluetooth

Video poziv Multitasking multitasking aplikacija Funkcionalnosti zasnovane na glasu Pozivanje, pretraga, navigacija pomou glasa Tethering Android telefon moe da se iskoristi kao wireless hotspot1.3. Arhitektura Android sistema

Arhitektura Android sistema bazira se na Linux-u 2,6 jezgru (eng. kernel) koja se koristi kao sloj apstrakcije hardvera (HAL, eng. Hardvare Abstraction Laier). Razlog za koricenje jezgra operativnog sistema Linux je dokazana pogonska podrka (eng. driver model), mogucnost upravljanja memorijom i procesima, sigurnosni model, mreni sistem, te dokazana robusnost, konstantni razvoj i unapreivanje sistema. Slika 1.1 prikazuje arhitekturu Android sistema.

Slika 1.3. Arhitektura Android platforme

1.3.1. Linux jezgro

Najvaniji elementi jezgra su:

pogonski program za meuprocesnu komunikaciju izmeu aplikacija i usluga (eng. service) (eng. Binder (IPC) Driver)

upravljanje napajanjem (eng. Pover Management) - komponenta Androida temeljena na standardnom Linuxovom sistemu upravljanja napajanjem.1.3.2. Izvorne programske biblioteke

Izvorne programske biblioteke (eng. native libraries) pisane su u programskim jezicimaC i C++ i ine sledei sloj u arhitekturi sistema. Neke od znaajnijih su:

UI - program za upravljanje grafikim interfejsom (eng. Surface Manager) - biblioteka odgovorna za pravilno iscrtavanje razliitih aplikacionih komponenti u vremenu i prostoru;

OpenGL ES (eng. OpenGL for Embedded Sistems) - biblioteke koje se koriste za hardversku 3D akceleraciju (ukoliko je podrana) ili za 3D rasterizaciju;

SGL (eng. Scalable Graphics Librari) - predstavlja 2D biblioteke na kojima je zasnovana vecina aplikacija. Spomenimo jo da se 2D i 3D elementi mogu kombinovano prikazivati u jednom korisnikom interfejsu;

Media Framevork - grupa kodeka za snimanje i reprodukciju audio formata, video formata i nepominih slika. Omogucena je od strane PacketVidea;

FreeTipe - biblioteka koja slui za vektorsku rasterizaciju oblika pisma (eng. font);

SSL (eng. Secure Socket Laier) - omogucava rezervnu komunikaciju preko Interneta;

SKLite - programska biblioteka koja implementira bazu podataka (eng. database engine);

VebKit - Jezgro pretraivaa koji podrava JavaScript i ostale standarde na malom ureaju; Sistem C library - implementacija standardne C-ove sistemske biblioteke (libc) izvedene iz operativnog sistema BSD.1.3.3. Radno okruenje Android Runtime (Dalvik Virtual Machine)

Iduci sloj u arhitekturi Androida je radno okruenje (eng. Android runtime) kojeg ine virtuelni maina Dalvik (DVM, eng. Dalvik Virtual Machine) i jezgrene biblioteke (eng. core librari).DVM je registarski bazirana virtuelna maina, dok je klasina Javina virtuelna maina (JVM, eng. Java Virtual Machine) baziran na steku. Bazne biblioteke pisane su u programskom Jeziku Java i predstavljaju sve esencijalne klase kao to su klase za manipulaciju kolekcijama, klase za komunikaciju sa okolinom i slino. Bitna novost je i to to se Androidom jezgrene biblioteke razlikuju od biblioteka u Java Standard Edition (J2SE) i Java 2 Micro Edition (J2ME).

Umesto upotrebe standardnog Java 2 Micro Edition (J2ME) kao mehanizma za pokretanje Javinih aplikacija na pokretnim ureajima, Google je razvio sopstvenu virtuelnu maina za Android. DVM Je najverovatnije razvijen kako bi se zaobila problematika s dozvolama koricenjem Sunovog J2ME. Svaki pokretni ureaj koji u sebi sadri J2ME mora kod Suna licencirati bilo kakvu promenu izvornog koda J2ME-a.Virtuelna maina Dalvik dobila je ime po istoimenom Islandskom gradu u kojem su iveli preci glavnog developera DVM-a Dan Bornstein.Osnovna razlika izmeu Sun Java virtuelnih maina i DVM-a je u tome to su prvo spomenuti virtualni ureaju bazirani na steku, dok je DVM registarski baziran virtuelni maina. Meukod (eng. bitecode) Dalvik virtuelne maine transformie se pomocu alata dk (koji je sastavni deo Android SDK-a) iz Javinih klasnih datoteka (eng. Java class file) prevedenih Javinim prevodiocem u novu klasu *.dex (eng. Dalvik Ekecutable) formata. Meukod koji izvrava DVM nije Javin meukod, nego upravo spomenuti .dex oblik. Transformacija formata omogucava bolju prilagoenost za rad na manjim procesorima boljim iskoricavanjem raspoloive memorije i procesorske snage. Rezultat svega je mogucnost viestrukog instanciranja same virtuelne maine to znai da se svaka Android aplikacija pokrece kao zasebni proces, s vlastitom instancom virtuelne maine Dalvik.1.3.4. Application Framevork

Sloj aplikativnih okvira (eng. Application Framevork) napisan je u programskom jeziku Java i sadri proiriv skup programskih komponenti kojeg koriste sve aplikacije ureaja. Framework podrava mnogobrojne open source jezike kao to su openssl, sqlite i libc. Takoe podrava i jezik Android jezgra. Sa gledita sigurnosti, framework se bazira na UNIX file system ovlaenjima koja osiguravaju da aplikacije poseduju samo one mogunosti koje im je vlasnik telefona dao pri instalaciji aplikacije.

Neki od vanijih elemenata su: upravljanje aktivnostima (eng. Activiti Manager) - upravljanje ivotnim ciklusom aplikacije, upravljanje programskim paketima (eng. Package Manager) - sadri informaciju o aplikacijama instaliranim na sistemu

upravljanje prozorima (eng. Window Manager) - upravljanje aplikacionim prozorima, upravljanje pozivima (eng. Telephone Manager) - sadri API-je koji se koriste pri izradi aplikacija za upravljanje pozivima, pruaoci sadraja (eng. Content Providers) - omogucavaju zajedniko koricenje podataka od strane vie aplikacija, upravljanje resursima (eng. Resource Manager) - slui za skladitenje delova aplikacije koji nisu kod (npr. slike), sistem grafikog prikaza (eng. Viev Sistem) - sadri bazu gotovih grafikih prikaza i alata (eng. vidget), upravljanje lokacijski zasnovanim uslugama (eng. Location Manager) i upravljanje notifikacijama (eng. Notification Manager) - upravljanje notifikacijama i dogaajima (npr. dospece poruke, nadolazeci sastanak).

Aplikativni sloj je poslednji sloj u arhitekturi sistema Android i ine ga korisnike aplikacije ureaja. Predstavlja sloj vidljiv krajnjem korisniku. Ukljuuje neke od standardnih sistemskih aplikaciJa kao to su Veb pretraiva, lista kontakata, telefon, itd.

1.3.5. Integrisani pretraiva

Google je napravio pravi potez izborom WebKit kao open source web pretraivaa. Ubacili su dva veoma bitna poboljanja, two pass layout i frame flattening. Two pass layout otvara stranicu bez ekanja na blokirajue elemente, kao to su eksterni CSS ili eksterni JavaScript, ali posle kraeg perioda ponovo otvara stranicu sa svim podacima na strani. Frame flattening konvertuje postojee okvire stranice u jedan okvir i taj okvir pokazuje na ekranu. Ova poboljanja pospeuju brzinu i korisnost surfovanja internetom preko mobilnog telefona.

1.3.6. Optimizovana grafika

Kako Android poseduje 2D grafiku i 3D grafiku zasnovanu an OpenGL ES 1.0, vrlo je mogue da emo videti Google Earth i spektakularne igre kao to je Second Life, koje dolaze na Linux sistemima. U ovom trenutku, legendarna 3D pucaka igra Doom je predstavljena na mobilnim telefonima koji imaju Android platformu.1.3.7. SQLite SQLite je veoma mali (oko 500kb) sistem za upravljanje relacionim bazama podataka, koji je integrisan u Android. Zasniva se na pozivima funkcija i jedinstvenih fajlova, gde se uvaju sve definicije, tabele i podaci. Ovaj jednostavan dizajn je vie nego pogodan za platformu kao to je Android. Postoji veliki broj karakteristika koje zavise od hardvera, kao to su velika koliina multimedijalnih fajlova, podrka konekcija, GPS, unapreena podrka za kameru i jednostavna GSM telefonija.1.4. Razvoj Android aplikacija

Android aplikacije se mogu pisati u Java ili C programskom jeziku. Android SDK alati kompajliraju kod, zajedno sa ostalim podacima i resursima aplikacije u Android package, t.j. fajl sa .apk sufiksom. Kod koji se nalazi u okviru .apk fajla predstavlja Android aplikaciju. Kada se aplikacija jednom instalira na ureaj, ona postaje nezavisna celina u okviru sistema:

Android OS je multi-user Linux sistem gde se svaka aplikacija tretira kao jedinstveni korisnik Sistem dodeljuje aplikaciji jedinstveni Linux user id. Sistem podeava dozvole za sve fajlove u okviru aplikacije, tako da samo aplikacija sa odreenim user id moe da im pristupi Svaki proces poseduje sopstvenu virtualnu mainu, tako da jedna aplikacija moe da se izvrava nezavisno od drugih

Svaka aplikacija se izvrava u okviru svog Linux procesa

Aplikacija moe zahtevati pristup podacima na ureaju kao to su: skladite podataka, korisniki kontakti, SMS poruke, Bluetooth, itd.

1.4.1. Komponente aplikacijaOsnovni elementi svake Android aplikacije su njene komponente, koje odreuju ponaanje i karakteristike aplikacije. Sistem moe da pristupi i komunicira sa aplikacijom preko njenih komponenata. Postoji etiri tipa komponenata aplikacije:Aktivnost

Aktivnost predstavlja jedan ekran sa korisnikim interfejsom. Na primer email aplikacija moe imati jednu aktivnost koja prikazuje listu novih mejlova, druga aktivnost omoguava pisanje mejla, a trea aktivnost slui za itanje mejlova. Iako su aktivnosti u okviru jedne aplikacije komponovane i koordinirane tako da predstavljaju logiku celinu, svaka od njih je nezavisna. U skladu sa tim, razliite aplikacije mogu da startuju akitvnosti iz drugih aplikacija. Na primer aplikacija za rad kamere, moe startovati aktivnost iz email aplikacije kako bi omoguila deljenje fotografija na drutvenoj mrei. Svaka aktivnost se implementira kao podklasa klase Activity.Servisi (Services)Servis je komponenta koja se izvrava u pozadini kako bi se omoguila realizacija dugotrajnih operacija, kao i izvravanje udaljenih procesa. Servis ne prua korisniki interfejs. Na primer, servis moe da puta muziku u pozadini dok se korisnik nalazi u nekoj drugoj aplikacija. Aktivnost moe da pokrene servisProvajderi sadraja (Content providers)Provajder sadraja upravlja deljenim setom podataka aplikacije. Podaci se mogu skladititi u fajl sistemu, bazi, na vebu ili bilo kojoj perzistentnoj lokaciji kojoj aplikacije moe da pristupi. Preko provajdera sadraja aplikacija moe da vri upit nada podacima. Na primer, Android prua provajdera sadraja koji upravlja informacijama o imeniku na telefonu. Svaka aplikacija sa odgovarajuim permisijama, preko provajdera sadraja moe da pristupi kontaktima u imeniku. Broadcast receiversOva komponenta aplikacije je vezana za prenos sistemskih objava i notifikacija. Veina broadcast receiver-a potie iz sistema obavetenje da je baterija slaba, ili da je slika napravljena i sl. Ova komponenta ne uestvuje u korisnikom interfejsu, ali moe da se pojavi kao notifikacija lampice i sl. Jedinstvena karakteristika Android OS je u tome to svaka aplikacija moe startovati komponente iz neke druge aplikacije. Komponente aplikacije se aktiviraju preko asinhrone poruke intenta. Sve komponente jedne aplikacije se definiu u okviru AndroidManifest.xml fajla. Svaka Android aplikacija osim koda sadri i odgovarajue resurse, kao to su slike, audio fajlovi, stilovi, itd.

2. Instalacija i postavljanje razvojnog okruenjaZa razvoj aplikacija za Android operativni sistem potrebno je instalirati sledee programe navedenim redosledom:

Java SDK

Eclipse IDE

Android SDK

Android Development Tools Plugin za Eclipse

Potrebne verzije Android platformi za Android SDKAndroid SDK podrava Windows, Linux i Mac OS operativne sisteme. Za pisanje Android aplikacija koristi se programski jezik Java. Programer moe da izabere proizvoljno razvojno okruenje. Potrebno je napomenuti da je najjednostavnije razvijati Android aplikacije u Eclipse razvojnom okruenju, poto je Google za njega obezbedio najbolju podrku u vidu dodataka (plugins). Rad u ostalim okruenjima je komplikovaniji, zato to nisu integrisana sa Android SDK-om, te je neophodno pokretati odgovarajue alate iz konzole (komandne linije). U daljem tekstu bie opisan postupak postavljanja Android razvojnog okruenja za operativni sistem Windows. Navedeni postupak se neznatno razlikuje za Linux i MacOS operativne sisteme.Prvi korak pri postavljanju razvojnog okruenja jeste instalacija Java Development Kit paketa (JDK). Ukoliko je na raunaru prethodno ve instaliran Java Runtime Environment paket (JRE), neophodno je instalirati i JDK, poto on sadri kompajlere i alate za rad sa izvornim kodom, koji nisu prisutni u JRE paketu. Java Development Kit je mogue besplatno preuzeti sa sajta kompanije Oracle (http://www.oracle.com/technetwork/java/javase/downloads/index.html). Izgled stranice za preuzimanje JDK paketa prikazan je na slici 2.1.

Slika 2.1 Strana za preuzimanje JDK

Klikom na taster Download JDK, otvorie se stranica gde je mogue izabrati platformu za koju se preuzima paket (Slika 2.2).

Slika 2.2 Izbor platforme

Nakon izbora platforme, potrebno je kliknuti na checkbox I agree i taster Continue. Sada e se otvoriti strana na kojoj je prikazan naziv fajla za preuzimanje (Slika 2.3).

Slika 2.3 Izbor fajla za preuzimanjeKlikom na naziv fajla, zapoee sesa procesom preuzimanja. Po zavretku preuzimanja i startovanju fajla, krenue proces instalacije JDK-a (Slika 2.4). Potrebno je pratiti instrukcije sa ekrana.

Slika 2.4 Instalacija JDKSledei korak jeste instalacija Eclipse Integrated Development Environment-a (razvojno okruenje). Njega je mogue besplatno preuzeti sa adrese http://www.eclipse.org/downloads/. Eclipse razvojno okruenje podrava Windows, Linux i MacOS X operativne sisteme, kao i itav niz programskih jezika. Mogue je koristiti bilo koju verziju Eclipse-a koja podrava Java programski jezik. Poto na sajtu za preuzimanje Eclipse razvojnog okruenja postoji veliki broj razliitih verzija, odluiemo se za najjednostavniju verziju koja podrava Java programski jezik. To je Eclipse IDE for Java Developers (Slika 2.5).

Slika 2.5 Sajt za preuzimanje Eclipse razvojnog okruenjaNakon izbora verzije Eclipse-a, treba izabrati i mirror sajt sa koga e se preuzimanje izviti. Od izabranog naina preuzimanja jedino zavisi brzina samog download-a, te ovaj izbor nije od presudne vanosti. Moete izabrati prvi preporueni sajt (Slika 2.6).

Slika 2.6 Izbor mirror sajta sa koga e se preuzeti Eclipse IDEEclipse IDE nema sopstveni program za instalaciju. On se jednostavno nalazi zapakovan u okviru jedne ZIP arhive. Nakon uspenog preuzimanja, dovoljno je raspakovati tu arhivu u eljeni folder (npr. C:\, tako da e konana putanja Eclipse IDE-a biti C:\eclipse), to je prikazano na slici 2.7.

Slika 2.7 Raspakivanje Eclipse razvojnog okruenja

Poto Eclipse IDE nije instaliran na uobiajeni nain, raspakivanjem nisu postavljene preice izvrnog fajla na radnu povrinu i u Start meni. To je mogue uraditi runo. Najpre treba otii u folder C:\eclipse (odnosno u folder gde je Eclipse raspakovan) i kliknuti na fajl eclipse.exe desnim tasterom mia, a zatim izabrati opciju Copy. Potom treba kliknuti na prazan deo radne povrine desnim tasterom mia i izabrati opciju Paste shortcut.Sledei korak jeste instalacija Android Software Development Kit-a (SDK). Njega je mogue besplatno preuzeti sa sajta http://developer.android.com/sdk/index.html . Na navedenom sajtu je potrebno izabrati verziju za eljeni operativni sistem. U sluaju Windows-a, preporuljivo je preuzeti exe datoteku, poto je to verzija SDK sa ugraenim programom za instalaciju (Slika 2.8). Kod drugih operativnih sistema, dovoljno je otpakovati datoteku u eljeni folder.

Slika 2.8 Izbor verzije Android SDK za preuzimanje

Sada je mogue startovati instalaciju, gde je potrebno pratiti instrukcije sa ekrana (Slika 2.9).

Slika 2.9 Instalacija Android SDK

Po zavretku instalacije, startovae se SDK Manager. Ovde je mogue izabrati verzije Android API-a koje se mogu preuzeti.

Slika 2.10 SDK Manager

Izbor verzije Android API-a veoma je vaan, zato to od toga direktno zavisi da li e aplikacija raditi na odreenom mobilnom telefonu ili tablet ureaju. Na primer, ako se izabere verzija 3.0 API-a, aplikacija svakako nee raditi na starijim Android telefonima. Nove verzije API-a imaju naravno vie funcionalnosti, ali manju kompatibilnost sa starijim ureajima.

Izborom opcije Accept All (Slika 2.10) i klikom na taster Install zapoee se preuzimanje i instalacija svih verzija API-a, pratee dokumentacije i primera. Verzija API-a za koju e se kreirati aplikacija bira se naknadno.

Nakon zavrenog preuzimanja potrebnih fajlova, instalirane komponente je mogue videti u odeljku Installed Packages. Naknadno je mogue instalirati novu verziju API-a izborom opcije Available Packages (Slika 2.11).

Slika 2.11 Opcija Available Packages

Ovde bi trebalo izabrati Google Inc. add-ons, zato to ovi paketi ukljuuju dodatne biblioteke za rad sa Google servisima. Nakon izbora, treba kliknuti na dugme Install Selected i zatim prihvatiti licencu, ime e se potrebne datoteke preuzeti.

U okviru SDK Manager-a mogue je kreirati i podesiti virtuelne Android mobilne ureaje, koji se koriste prilikom testiranja aplikacije. Potrebno je izabrati opciju Virtual Devices. Ovde se prikazuje spisak podeenih virtuelnih Android ureaja. Klikom na taster New mogue je kreirati novi ureaj (Slika 2.12).

Slika 2.12 Virtuelni ureaji

U novootvorenom prozoru mogue je podesiti parametre virtuelnog ureaja. U pitanju su sledei parametri: Name proizvoljan naziv virtuelnog ureaja. Target verzija Android API-a koju koristi ureaj.

SD Card podeavanja virtuelne memorijske kartice. Ukoliko se izabere opcija Size, mogue je zadati veliinu nove virtuelne memorijske kartice. Ukoliko se izabere opcija File, mogue je uitati sadraj image fajla kao virtuelnu memorijsku karticu.

Snapshot ukoliko se izabere opcija Enabled, omoguie se pamenje stanja virtuelnog ureaja i kasnije uitavanje tog stanja prilikom ponovnog ukljuivanja virtuelnog ureaja. Opcija Snapshot je slina opciji Hibernate u Windows operativnom sistemu.

Skin predstavlja rezoluciju ekrana virtuelnog ureaja. Moe se izabrati neka od predefinisanih standardnih rezolucija (Built-in) ili se moe zadati proizvoljna vrednost rezolucije (Resolution).

Hardware prilikom kreiranja virtuelnog ureaja, moe se izabrati virtuelni hardver koji ureaj sadri (na primer GPS prijemnik, memorijska kartica, kamera i drugo).

Na primer, kreiraemo novi virtuelni ureaj sa parametrima kao na slici 2.13. Nakon unosa vrednosti parametara, kliknuemo na taster Create AVD, ime e novi Android virtuelni ureaj biti sauvan.

Slika 2.13 Kreiranje novog Android virtuelnog ureaja

Sada treba izai iz SDK Manager-a i pokrenuti Eclipse razvojno okruenje. Prilikom prvog startovanja ovog okruenja, potrebno je izabrati lokaciju workspace-a. Workspace u stvari predstavlja folder u kome e se nalaziti projekti raeni u Eclipse razvojnom okruenju. Workspace se obino nalazi u okviru linog foldera operativnog sistema (Slika 2.14). Ukoliko opcija Use this as the default and do not ask again nije izabrana, korisnik e lokaciju workspace-a birati prilikom svakog pokretanja Eclipse razvojnog okruenja. Nakon ovog podeavanja treba kliknuti na taster OK.

Slika 2.14 Izbor lokacije workspace-a

Sada je neophodno instalirati dodatak koji omoguava integraciju Eclipse IDE-a i Android SDK-a. Potrebno je izabrati meni Help, a zatim opciju Install New Software (Slika 2.15).

Slika 2.15 Izbor opcije Install New Software

Otvorie se novi prozor, u kome treba kliknuti na dugme Add (Slika 2.16).

Slika 2.16 Dijalog Install New SoftwareU novootvorenom prozoru u polje Name treba uneti Android, a u polje Location treba upisati https://dl-ssl.google.com/android/eclipse/, kao to je prikazano na slici 2.17. Zatim treba izabrati opciju OK.

Slika 2.17 Dodavanje repozitorijuma

Posle nekoliko trenutaka, trebalo bi da se pojavi prozor kao na slici 2.18. Potrebno je selektovati Developer Tools, ime e biti izabrane i sve podopcije, a zatim kliknuti na taster Next.

Slika 2.18 Izbor opcija

Zatim je potrebno potvrditi izbor ponovnim klikom na Next (Slika 2.19), prihvatiti licence (Slika 2.20) i na kraju kliknuti na taster Finish.

Slika 2.19 Potvrda izbora

Slika 2.20 Prihvatanje licenci

Ovim je zapoeo proces instalacije dodataka za Eclipse. Ukoliko se pojavi prozor koji obavetava korisnika da sadraj koji se preuzima nema digitalni potpis, potrebno je kliknuti na taster OK, ime se omoguava instalacija (Slika 2.21).

Slika 2.21 Obavetenje o nepotpisanom sadraju

Nakon zavretka instalacije, potrebno je ponovo pokrenuti Eclipse razvojno okruenje (Slika 2.22).

Slika 2.22 Obavetenje o restartovanju Eclipse IDE-a

Sada je neophodno podesiti dodatak za Android SDK. Treba izabrati opciju Window -> Preferences, a zatim opciju Android. U polje SDK Location treba uneti putanju do instaliranog Android SDK. Podrazumevana vrednost je C:\Program Files\Android\android-sdk-windows (Slika 2.23).

Slika 2.23 Podeavanje dodatka za Eclipse IDEOvime je zavren proces podeavanja Android razvojnog okruenja i sada je mogue kreirati aplikacije za Android platformu!2.1. Kreiranje nove Android aplikacije

Kreiranje nove Android aplikacije korienjem Eclipse razvojnog okruenja dosta je jednostavno. Nakon startovanja okruenja, potrebno je izabrati opciju New -> Other -> Android -> Android Project (Slika 2.24), a zatim kliknuti na taster Next.

Slika 2.24 Kreiranje novog Android projekta

U sledeem koraku, pojavie se novi ekran gde programer moe da unese odgovarajue parametre vezane za Android projekat (Slika 2.25).

Navedeni parametri su:

Project Name Proizvoljan naziv novog Eclipse projekta.

Contents Sadraj projekta. Postoji tri razliite opcije parametra Contents:

Create new project in workspace kreiranje potpuno novog projekta.

Create project from existing source uvoz postojeeg koda u novokreirani projekat.

Create project from existing sample korienje gotovih primera u okviru novog projekta.

Build Target Izbor verzije Android API-a koja e se koristiti u novom projektu.

Properties Dodatni parametri novog Android projekta. To su:

Application Name Naziv aplikacije koji e biti vidljiv na ureaju. Package Name Naziv Java paketa u okviru koga e se pisati klase projekta. Create Activity Ukoliko je opcija izabrana, kreirae se nova prazna aktivnost u okviru projekta. U tom sluaju, neophodno je uneti i naziv te aktivnosti. Vie o aktivnostima moete proitati u poglavlju 4. Min SDK Version minimalna verzija Android API-a na kojoj e raditi aplikacija.Dakle, potrebno je podesiti parametre kao na slici. Za poetak, neemo kreirati Android aktivnost. O tome e vie rei biti u poglavlju 3.2.

Slika 2.25 Parametri novog Android projektaNakon uspeno podeenih parametara, potrebno je kliknuti na taster Finish. Ovime je kreiran novi Android projekat. Kreiranjem novog Android projekta, generiu se odreeni fajlovi koji su organizovani po folderima. Svaki Android projekat ima svoj XML manifest fajl (AndroidManifest.xml) koji opisuje prirodu aplikacije i svake njene komponente. O ovom fajlu bie vie rei u narednom poglavlju.U sledeoj tabeli prikazana je organizacija strukture Android projekta po folderima:

FolderOpis

src/Sadri fajlove sa izvornim kodom. U ovom folderu se nalaze sve kreirane aktivnosti (u okviru odgovarajueg paketa).

bin/Ovde se nalaze kompajlovani fajlovi projekta, kao to su konani apk fajlovi (varijanta jar fajla za instalaciju na Android ureaju).

jni/Sadri izvorni kod razvijen korienjem alata Android NDK (Native Development Kit). Ukoliko se ne koristi NDK, ovaj folder ne postoji.

gen/Sadri generisane fajlove, iji sadraj ne treba runo menjati.

assets/Ovde se nalaze dodatni materijali koji se koriste u projektu. Na primer, to mogu da budu podaci koje koristi aplikacija. Na poetku je ovaj folder prazan.

res/U ovom folderu se nalaze dodatni resursi koji se koriste u aplikaciji. Oni su organizovani po podfolderima. To mogu da budu slike, animacije, raspored elemenata korisnikog interfejsa i sl.

libs/

Tabela 2.1 Organizacija strukture Android projektaU korenom folderu projekta, osim fajla AndroidManifest.xml nalazi se i fajl default.properties, koji sadri opta podeavanja projekta, kao to je verzija Android API-a koju aplikacija koristi. 2.2. Fajl AndroidManifest.xmlSvaka aplikacija mora da poseduje svoj AndroidManifest.xml fajl u korenom folderu projekta. Naziv manifest fajla mora da bude AndroidManifest.xml. Manifest sadri neophodne informacije o aplikaciji i o Android sistemu. Ove informacije sistem mora da poseduje pre poetka izvravanja aplikacije. Neke od funkcija manifest fajla su: Sadri naziv Java paketa u okviru kojeg je napisan izvorni kod aplikacije. Naziv paketa predstavlja jedinstveni identifikator aplikacije.

Opisuje komponente aplikacije aktivnosti, servise, primaoce poruka i provajdere sadraja. Dakle, manifest fajl sadri nazive klasa u kojima su opisane komponente aplikacije. Na primer, aplikacija se nee startovati ukoliko u manifest fajlu nije navedena njena poetna aktivnost, ak ni u sluaju da fajl sa Java izvornim kodom te aktivnosti postoji.

Odreuje koji procesi e biti domaini komponentama aplikacije. Definie koje privilegije (permissions) aplikacija mora da poseduje da bi mogla nesmetano da funkcionie.

Takoe definie koje privilegije moraju druge aplikacije da poseduju da bi mogle da koriste komponente aplikacije.

Definie minimalnu verziju Android API-a koji zahteva aplikacija.

Definie listu biblioteka koje aplikacija koristi

Izuzetno je bitno pravilno konfigurisati manifest fajl, zato to u protivnom aplikacija nee dobro funkcionisati. U primeru 2.1 prikazan je izgled jednog manifest fajla.

. . .

. . .

. . .

Primer 2.1 Struktura Android Manifest fajla

U primeru 2.1 prikazani su osnovni elementi datoteke AndroidManifest.xml, a to su:

opisuje akciju dodeljenu elementu. Obavezan deo polja. Ukoliko se ne definie, Intent objekti ne prolaze kroz filter.

obavezni deklariuci element za svaku aktivnost aplikacije.Podrava podelemente kojima se specificiraju pojedine namere aktivnosti. Pokretanje aktivnosti koja nije definisana u AndroidManifest.xml datoteci rezultuje pojavom greke pri izvoenju (eng. runtime error).

zamenska aktivnost. Ciljanu aktivnost predstavlja kao nezavisni entitet sa sopstvenim skupom filtera namera koji umesto definisanja namera za direktno pokretanje ciljane aktivnosti odreuju namere koji je pokrecu preko zamenske aktivnosti.

koreni element sa opisom dubine stabla koga ine komponente paketa. Takoe moe da sadri globalne i/ili unapred zadate atribute aplikacije, kao to su tema, ikona, dozvole itd. Manifest fajl moe da sadri samo jedan element ove vrste.

vrsta kategorije Intent filtera. Sadran u bloku .

odreuje vrstu podatka Intent filtera. To mogu biti opcioni, ali meusobno zavisni atributi MIME ili URI. Sadran u bloku .

odreuje garantovane dozvole podskupova podataka pruaoca sadraja. Sadran u bloku .

deklarie koje su instrumentacione komponente raspoloive za testiranje funkcionalnosti paketa. Sadran u bloku .

odreuje vrstu namere na koju reaguju aktivnost, usluga iliBroadcast Receiver. Sadran u blokovima , , i .

definie komponente, bezbednosne postavke i klase za testiranje koje ine aplikaciju. Ovo je osnovni element AndroidManifest.xml fajla.

par ime-vrednost dodatnih metapodataka koji mogu biti isporueni roditeljskoj komponenti. Sadran u blokovima , , i .

deklarie bezbednosne dozvole nad komponentama kojima pristupaju druge aplikacije.

odreuje grupu povezanih dozvola.

odreuje stablo dozvola.

definie pruaoca sadraja. Sadran u .

definie Broadcast Reciever koji omogucava prihvatanje namera i u sluaju kada aplikacija i njene komponente nisu pokrenute.

definie usluge. Sadran u bloku, a moe da sadri i .

definie biblioteku sa kojom aplikacija mora biti povezana.Sadran u bloku.

deo bezbednosnog modela koji sadri bezbednosne dozvole dodeljene od strane korisnika, a odnose se na funkcije aplikacije. Dozvole se definiu prilikom instaliranja aplikacije.

definie nivo Android API-ja na kojima se moe izvravati aplikacija.

Dozvole se definiu zbog hardverski ogranienog pristupa memoriji jednog procesa od strane drugog, te zato to je svakoj aplikaciji dodeljen specifini ID korisnika. Neke od najece koricenih dozvola su:

INTERNET pristup Internetu. READ_CONTACTSdozvola za itanje podataka kontakata. WRITE_CONTACTS dozvola za pisanje podataka kontakata. RECEIVE_SMS nadzor pristigle SMS poruke. ACCESS_COARSE_LOCATION grubo beino lociranje ili lociranje preko bazne stanice. ACCESS_FINE_LOCATION finije lociranje koricenjem npr GPS-a.

FajlAndroidManifest.xmlmoe runo da se ureuje, pisanjem XML koda ili moe da se koristi ugraeni ureiva koji dolazi kao deo ADT-a.3. Aktivnosti i klasa Activity

Aktivnost (Activity) predstavlja komponentu aplikacije koja se uglavnom moe poistovetiti s jednim konkretnim prozorom aplikacije u kojem je korisnik u mogucnosti da izvri odreenu radnju. Na primer, aktivnost slui da bi korisniku mobilnog telefona omoguila pozivanje odreenog broja, slikanje fotografije korienjem ugraene kamere, slanje e-mail poruke, pregled mape i dr. Aplikacija moe da sadri jednu ili vie definisanih aktivnosti, pri emu je jedna od aktivnosti uvek definisana kao primarna aktivnost. Prelaz izmeu aktivnosti odvija se tako to aktuelna aktivnost poziva novu. Iako vie aktivnosti ini jedan kompaktan korisniki interfejs, treba imati na umu da su one meusobno nezavisne. Svaka aktivnost implementira se kao zasebna klasa koja nasleuje klasu Activity, pa je sama odgovorna za uvanje svog stanja u ivotnom ciklusu aplikacije.

Klasa aktivnosti je glavni deo svake Android aplikacije. Programer vei deo vremena provodi na definisanju i implementaciji aktivnosti za svaki ekran u aplikaciji.

Svakoj Android aplikaciji mora biti dodeljena aktivnost unutar Android manifest fajla. Druge klase aktivnosti mogu biti oznaene u manifest fajlu da se pokrenu pri odreenim okolnostima. Ovim sekundarnim ulaznim takama se upravlja pomou Android manifest fajla odreenim filterima.

Aplikacije mogu biti prekinute zbog raznih dogaaja vieg prioriteta, kao to je telefonski poziv. U jednom trenutku moe postojati samo jedna aktivna aplikacija. Android aplikacije su odgovorne za upravljanje njihovim stanjem, kao i njihovom memorijom, resursima i podacima. Android operativni sistem moe iskljuiti aktivnost koja je na pauzi, stopirana ili unitena kada je memorija slaba. Ovo znai da svaka aktivnost koja nije u prvom planu mora biti iskljuena. Drugim reima, Android aplikacija mora odravati stanje i biti spremna da bude prekinuta ili ak iskljuena u svakom trenutku.

3.1. ivotni ciklus aktivnosti

ivotnim ciklusom aktivnosti jedne Android aplikacije upravlja se implementacijom odgovarajuih metoda. Svaka aktivnost ima tri osnovna stanja:

Resumed (Running)

Aktivnost je pokrenuta i fokusirana.

Paused

Druga aktivnost je pokrenuta i fokusirana (u prvom planu), ali je tekua aktivnost i dalje pokrenuta i vidljiva. Na primer, druga aktivnost je u prvom planu, dok je tekua aktivnost vidljiva, ali ne zauzima ceo ekran. Aktivnost ije je stanje paused je potpuno iva (objekat klase Activity se nalazi u memoriji, zadrava sva stanja i ostaje u window manager-u), meutim ova aktivnost moe da bude ubijena u sluaju niske slobodne memorije.

Stopped

Aktivnost ije je stanje stopped je i dalje iva, ali radi u pozadini. Objekat klase Activity i dalje se nalazi u memoriji, uva sva stanja, ali se vie ne nalazi u okviru window manager-a. Ovu aktivnost vie ne vidi korisnik i u sluaju potrebe za memorijom sistem moe da je ubije.

ivotni ciklus jedne aktivnosti prikazan je na slici 4.1. Dakle, kao to je napomenuto na poetku ovog poglavlja, fazama ivotnog ciklusa aktivnosti upravljaju metode onCreate(), onRestart(), onStart(),onResume(), onPause(), onStop() i onDestroy().

ivotni ciklus aktivnosti zapoinje metodom onCreate(), a zavrava se zajedno sa metodom onDestroy(). U okviru metode onCreate(), programer bi trebalo da definie izgled i globalno stanje aktivnosti, kao to je raspored elemenata korisnikog interfejsa. Implementacijom metode onDestroy() trebalo bi osloboditi koriene resurse. Na primer, ukoliko vaa aktivnost koristi pozadinsku nit koja preuzima podatke sa Interneta, nit bi trebalo kreirati u okviru metode onCreate(), a zaustaviti je u okviru metode onDestroy().

Aktivnost je vidljiva (visible) izmeu poziva metoda onStart() i onStop(). Dok je aktivnost vidljiva, korisnik je vidi na ekranu i moe da vri interakciju sa njom (npr. da unosi podatke). Metoda onStop() se poziva kada se startuje nova aktivnost, a tekua aktivnost vie nije vidljiva.

Aktivnost je fokusirana (u prvom planu) izmeu poziva metoda onResume() i onPause(). Tada se ta aktivnost nalazi ispred svih ostalih aktivnosti. Aktivnost moe esto da prelazi iz prvog plana u pozadinu i obrnuto. Na primer, metoda onPause() se poziva kada ureaj pree u stanje mirovanja (sleep).

Slika 3.1 ivotni ciklus aktivnosti

U tabeli 4.1 prikazane su fundamentalne metode za upravljanje ivotnog ciklusa i njihov opis.

MetodaOpisMoe da se ubije posle?Sledea metoda

onCreate()Poziva se kada se aktivnost prvi put kreira. Ovde bi trebalo kreirati poglede (views), povezati (bind) podatke sa listama i sl. Ovoj metodi prosleuje se objekat tipa Bundle koji sadri prethodno stanje aktivnosti.NeonStart()

onRestart()Poziva se posle stopiranja aktivnosti, ali neposredno pre njenog ponovnog startovanja.NeonStart()

onStart()Poziva se neposredno pre nego to aktivnost postane vidljiva korisniku. Metoda koja se poziva posle ove moe da bude onResume() u sluaju da aktivnost prelazi u prvi plan, ili onStop() u sluaju da postaje sakrivena.NeonResume()

ili

onStop()

onResume()Poziva se neposredno pre nego to aktivnost zapone interakciju sa korisnikom.NeonPause()

onPause()Poziva se neposredno pre nego to sistem nastavi izvravanje druge aktivnosti. Ova metoda se obino koristi da sauva podatke, zaustavi animacije i prekine sa izvravanjem procesa koji koriste procesorsko vreme. Ova metoda se mora izvriti to je bre mogue, zato to sledea aktivnost nee biti nastavljena dok se ova metoda zavri. Metoda koja se poziva posle ove moe da bude onResume() u sluaju da aktivnost prelazi u prvi plan, ili onStop() u sluaju da postaje sakrivena.DaonResume()

ili

onStop()

onStop()Poziva se kada korisnik vie ne vidi aktivnost. Ovo se moe dogoditi kada je u toku unitavanje aktivnosti ili zbog nastavljanja izvravanja neke druge aktivnosti. Metoda koja se poziva posle ove moe da bude onRestart() ukoliko je potrebna ponovna interakcija aktivnosti i korisnika ili onDestroy() u sluaju da aktivnost vie nije potrebna.DaonRestart()

ili

onDestroy()

onDestroy()Poziva se neposredno pre unitavanja aktivnosti. Ovo je poslednji poziv koji e aktivnost da primi. Metoda onDestroy() moe biti pozvana kada se zavrava sa izvravanjem aktivnosti (neko je pozvao metodu finish()) ili zato to sistem privremeno unitava instancu aktivnosti da bi oslobodio prostor. Pomou metode isFinishing() moe se napraviti razlika izmeu ova dva scenarija.Danema

Tabela 24.1 Fundamentalne metode ivotnog ciklusa

Kolona Moe da se ubije posle? oznaava da li sistem sme da ubije proces koji omoguava pokretanje aktivnosti bilo kada nakon zavretka izvravanja date metode.

Da bi se bolje ilustrovalo kako jedna aktivnost izgleda, dat je primer 4.1, u kome su fundamentalne metode.public class MojaAktivnost extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Nova aktivnost se kreira.

}

@Override

protected void onStart() {

super.onStart();

// Kreirana aktivnost postaje vidljiva.

}

@Override

protected void onResume() {

super.onResume();

// Aktivnost je postala vidljiva (sada je u stanju "resumed").

}

@Override

protected void onPause() {

super.onPause();

// Druga aktivnost uzima fokus (ova aktivnost je sada "paused"). }

@Override

protected void onStop() {

super.onStop();

// Aktivnost vie nije vidljiva (sada je u stanju "stopped"). }

@Override

protected void onDestroy() {

super.onDestroy();

// Aktivnost se unitava.

}

}

Primer 3.1 Primer aktivnosti sa metodama ivotnog ciklusa

3.2. Kreiranje aktivnosti

Da bi se kreirala nova aktivnost u okviru Android aplikacije, kreira se nova klasa koja nasleuje klasu Activity (ili njenu izvedenu klasu). U novokreiranoj klasi, neophodno je implementirati metode opisane u prethodnom poglavlju (vidiPrimer 3.1). Najvanije je implementiranje metoda onCreate() i onPause().

Dakle, u okviru ve kreiranog Android poglavlja (vidi Poglavlje 2.1) potrebno je kreirati novu klasu. U okviru Package Explorera koji se najee nalazi sa leve strane u Eclipse razvojnom okruenju najpre treba izabrati folder src, a zatim kliknuti desnim tasterom mia na paket koji je kreiran zajedno sa Android projektom. U naem sluaju, to je net.myelab.android.mojaaplikacija(Slika 3.2).

Slika 3.2 Izbor paketa u okviru projekta

Zatim treba izabrati opciju New, pa Other (Slika 3.3).

Slika 3.3 Izbor opcije za dodavanje novog fajla

Potom je potrebno izabrati opciju za dodavanje nove klase. To je opcija Java -> Class (Slika 4.4). Zatim treba kliknuti na taster Next.

Slika 3.4 Izbor opcije za kreiranje nove klase

Sada e se pojaviti ekran prikazan na slici 4.5. Ovde je neophodno uneti odgovarajua podeavanja, a to su:

Source folder folder u kome se uvaju izvorni fajlovi projekta. Obino je to src.

Package naziv paketa u kome se kreira klasa. Ovde bi trebalo da stoji naziv paketa koji je kreiran zajedno sa novim Android projektom. U ovom sluaju, to je net.myelab.android.mojaaplikacija.

Name naziv klase. Ovde unosimo eljeni naziv aktivnosti koju kreiramo. U naem sluaju, neka taj naziv bude Aktivnost.

Modifiers modifikatori pristupa. Za aktivnost, ova vrednost bi trebalo da bude public.

Superclass nadreena klasa. Za aktivnost, to bi trebalo da bude android.app.Activity.

Slika 3.5 Podeavanja nove klase

Nakon unetih vrednosti, potrebno je kliknuti na taster Finish. Sada je potrebno implementirati neke od ranije pomenutih metode. Aktivnost koju smo kreirali predstavljae Hello World primer.

Najpre emo implementirati metodu onCreate():

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv = new TextView(this);

tv.setText("Hello world");

setContentView(tv);

}Primer 3.2 Implementacija metode onCreate()

Jedini ulazni parametar ove metode je objekat tipa Bundle koji predstavlja neko prethodno stanje aktivnosti ukoliko je aktivnost bila ranije pokrenuta. Na poetku se poziva metoda onCreate() nadreene klase (klasa Activity), kojoj se prosleuje parametar tipa Bundle. Zatim se kreira novi pogled (View). Pogled u stvari predstavlja osnovnu jedinicu korisnikog interfejsa Android aplikacije. Android aktivnost moe da koristi vie razliitih pogleda, a o njima e biti rei u narednom poglavlju. Tekstualni sadraj se ubacuje korienjem metode setText().

Konaan izgled klase Aktivnost prikazan je u narednom primeru:

package net.myelab.android.mojaaplikacija;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class Aktivnost extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv = new TextView(this);

tv.setText("Hello world");

setContentView(tv);

}

}

Primer 3.3 Klasa Aktivnost

Da bi aplikacija bila funkcionalna, neophodno je ubaciti podatke o kreiranoj aktivnosti u Android manifest fajl. Nakon izmena, fajl AndroidManifest.xml treba da izgleda ovako:

Primer 3.4 Manifest fajl projekta

Tag omoguava android aplikaciji da zna da navedena klasa predstavlja aktivnost, s obzirom da je mogue koristiti i pomone klase. U okviru taga definisano je koja aktivnost predstavlja poetnu aktivnost u aplikaciji.

Sada je mogue startovati aplikaciju. Izborom opcije Run -> Run As -> Android Application startuje se aplikacija na odgovarajuem Android virtuelnom ureaju. Startovanje virtuelnog ureaja predstavlja dug proces koji moe potrajati i vie od 5 minuta.

Proces kreiranja Android virtuelnog ureaja opisan je u poglavlju 2. Ukoliko je napravljeno vie Android virtuelnih ureaja, eljeni ureaj je mogue izabrati pomou opcije Run -> Run Configurations, a zatim je potrebno izabrati opciju Android Application -> Naziv Projekta, pa karticu Target (Slika 4.6).

Slika 3.6 Izbor Android virtuelnog ureaja

Ukoliko je fiziki Android ureaj povezan sa raunarom korienjem USB porta, izborom opcije Run nee doi do startovanja virtuelnog ureaja, ve e se aplikacija instalirati na fiziki ureaj i potom automatski startovati na njemu.

Uspeno startovana aplikacija na virtuelnom ureaju prikazana je na sledeoj slici:

Slika 3.7 Aplikacija na virtuelnom ureaju

4. Resursi u Android aplikacijamaSve android aplikacije sastoje se iz dva segmenta:

funkcionalnost predstavlja kod kako se aplikacija ponaa na neki zahtev. Ovde spadaju svi algoritmi koji pokreu aplikaciju

resursi ili podaci obuhvataju tekstove, slike, audio i video fajlove, datoteke, ikone i druge podatke koje koristi aplikacija.

Resursi obuhvataju tekst u obliku stringa, slike i ikone, audio datoteke, video zapise i druge podatke koje koristi aplikacija.

Resursi se dele na dva tipa: resurse aplikacije i resurse sistema. Resurse aplikacije definie developer unutar fajlova Android projekta i tano su odreeni za neku aplikaciju. Resursi sistema su standardni resursi koje definie Android platforma i dostupni su svim aplikacijama kroz Android SDK.Resursi aplikacije se prave i uvaju unutar Android projekta u /res direktorijumu. Koristei ve definisanu ali fleksibilnu strukturu direktorijuma, resursi su organizovani, definisani i upakovani sa paketom aplikacije. Resursi aplikacije se ne dele sa ostatkom Anroid sistema.

Svi resursi aplikacije se uvaju u strukturi direktorijuma /res i sastavljeni su u projekat u trenutku pravljenja aplikacije. Resursi aplikacije se mogu koristiti programerski. Takoe na njih se mogu odnositi resursi drugih resursa aplikacija.

Svaki put kad se sauva fajl sa resursima u Eclipsu, R.java klasa fajl se ponovo sastavlja kako bi se ubacile nove izmene. Ako nije korien pravi direktorijum ili pravila o nazivu fajla, pojavie se greka u kompajleru u prozoru Eclipse Problems.

Resursima aplikacije se moe pristupiti programerski koristei generisu klasu koja se zove R.java. Kako bi se dodala referenca na resurs, mora se doi do objekta resursa aplikacije koristei klasu getResources() i tako napraviti odgovarajui poziv na komandu, koji je zasnovan na tipu resursa koji eli da se doda.Developeri mogu da pristupe resursima Android sistema (kao dodatak resursima aplikacije). Mogu se deliti mnogi resursi sistema kroz vie aplikacija zbog obinog izgleda i oseaja.Na primer, klasa resursa Android sistema (android.R.string) sadri stringove za rei kao to su OK, Cancel, Yes, No, Cut, Copy i Paste.

Sistemski resursi se uvaju u android paketu. Postoje klase za svaki od veih tipova resursa. Na primer, klasa android.R.string sadri string sistemskog resursa. Kako bi se dobio string sistemskog resursa za OK prvo se mora koristiti statikia komanda klase Resursa getSystem() kako bi se doveo globalni sistemski objekat Resource. Onda se poziva komanda getString() sa odgovarajuim string imenom resursa.4.1. Upravljanje i pristup resursima

U ovom poglavlju bie prikazano kako Android aplikacije skladite i pristupaju vanim resursima kao to su stringovi, grafika i ostali podaci. Takoe e biti prikazano kako da organizujete Android resurse u okviru projekta kako bi se na najlaki nain mogla izvriti lokalizacija i prilagoavanje aplikacija za razliite konfiguracione ureaje. Kako bi se omoguila kompatabilnost sa razliitim ureajima potrebno je resurse organizovati u folderima(direktorijumima) i podfolderima kako bi se svaki deo android aplikacije mogao odravati nezavisno od ostalih delova aplikacije.

Podrazumevani stil prikazivanja aplikacije uva se na putanji res/layout/ meutim moete podesiti u konfiguracionom fajlu da kada se aplikacija pokrene na neki ureaj koji ima drugaiju rezoluciju ekrana, npr koristi Landscape orijentaciju, da tada poziva funkcije za prikaz is foldera res/layout-land/ gde e na ovaj nain sama aplikacija zavisno od rezolucije ureaja prikazati adekvatan sadraj.

Slika 3.1. Razliit prikaz za raliitu rezoluciju ureaja

Korienje resursa koristei Eclipse razvojno okruenje sa dodatkom Android Asset Packaging Tool je veoma jednostavno, nije potrebno kompajlirati resurse, to e Eclipse sam uraditi, meutim ako koristite neko drugo razvojno okuenje potrebno je sve resurse komplajlirati iz komandne linije ili pak moete napisati skriptu koja e to uraditi, potom tu skriptu moete koristiti za sve vae aplikacije.

Definisanje podataka aplikacije kao resursa je dobra veba programiranja. Grupisanje resursa aplikacije i njihovo spajanje u paket aplikacije ima sledee koristi:

Kod je jasniji i laki za itanje, to dovodi do manje greaka.

Resursi su organizovani po tipovima i sigurno su jedinstveni

Resursi su dobro smeteni za prilagoavanje telefonima4.2. Tipovi resursa

Android aplikacije koriste veliki broj razliitih tipova resursa kao to je tekst, grafika, eme u boji za dizajn korisnikog interfejsa itd. Ovi resursi se nalaze u res/ direktorijumu vae android aplikacije.

Fajlovi resursa sauvani u /res direktorijumu moraju da potuju sledea pravila:

Imena fajlova resursa moraju biti napisani malim slovima

Imena fajlova resursa mogu sadrati samo slova, brojeve, donju crtu, i take

Imena fajlova resursa (i XML atributi imena) moraju biti jedinstveni.

U narednoj tabeli prikazano je kako se uvaju resursi koje podrava Andoird SDK.

Tip resursaPotreban direktorijumNazivXML tag

Strings/res/values/strings.xml

Niz stringova/res/values/strings.xml,

Boolenas/res/values/bools.xml

Colors/res/values/Colors.xml

Dimensions/res/values/Dimens.xml

Integers/res/values/integers.xml

Meovit niz/res/values/Arrays.xml,

Jednostavni elementi

(Drawables)/res/values/drawables.xml

Graphics

(slike)/res/drawable/Icon.png, logo,jpg itd

Meni/res/menu/Primer:

mainmenu.xml

helpmenu.xml

XML fajlovi/res/xml/

Izgled

(Layouts)/res/layout/main.xml

Stilovi i teme/res/values/styles.xml

themes.xml

Animacija/res/drawable/Primer.

sekvenca1.xml

sekvenca2.xml,

Tabela 3.1. Kako organizovati resurse u Android projektu

4.3. Rad sa resursima

U ovom delu bie prikazano kako moete upravljati resursima u vaoj Andoird aplikaciji, koji formati su podrani i u kom formatu se uvaju. Neke vrste resursa kao to su tekst, boja itd. su veoma dobro podrane od strane Eclipse editora i Andoird Plug-in Resource Editor, dok drugi kao to su animirane sekvence, nisu i sa njima je lake raditi direktno editovanjem u XML datotekama.

4.3.1. Rad sa stringovima

String resursi su najjednostavniji tip resursa sa kojima moe da radi Developer. Stringove moete promeniti ili dodati editovanjem xml datoteke strings.xml. String se cuva u okviru taga . U prilogu sledi primer kako izgleda strings.xml

Moja prva aplikacija

Test 1,2,3

Test 4,5,6Bold,Italic,Line

U narednoj liniji koda prikazano je kako moete odreenom stringu u xm fajlu pristupiti i koristiti u aplikaciji:

String nazivAplikacije = getResources().getString(R.string.naziv_aplikacije);4.3.2. Rad sa nizom stringova

Android podrava rad sa nizom stringova. Ovo je veoma pogodno kada elite da u nekoj padajuoj listi prikaete vie opcija. Niz stringova se u XML fajlu definie na putanji rez/values/ i kompajlira se u trenutku izvravanja aplikacije. Niz stringova u XML-u se uva u okviru tagova i tagom za predstavljanje elemenata niza . U nastavku moete videti kako se u xml fajlu na putanji rez/values/arrays.xml uva niz stringova:

Elektronsko poslovanje

Internet tehnologije

Mobilno poslovanje

Marijana Zrakic Despotovic

Bozidar Radenkovic

Pristup resursima je veoma jednostavno, u konkretnom primeru pristup resursu predmeti radimo na sledei nain:

String[] predmeti = getResources().getStringArray(R.array.predmeti);4.3.3. Rad sa Boolean i Integer resursimaBoolean vrednosti se uvaju na putanji rez/values/bools.xml. Ovako izgleda primer uvanja Bool vrednosti:

true

false

Kada se eli resursu pristupiti iz Android aplikacije to se radi na sledei nain:

boolean podrzanIzborJezika = getResources().getBoolean(R.bool.podrzanIzborJezika);

Na slian nain se radi i sa Integer resursima, jedina razlika jeste tagovi koji se koriste i putanja na kojoj se uvaju integer resursi rez/values/nums.xml.

25

3

Pristup integer resursima iz Android alikacije izgleda ovako:

int sabirakA = getResources().getInteger(R.integer.sabirakA);

4.3.4. Rad sa bojama

Android aplikacija u stanju je da skladiti vrednosti RGB boje, to automatski obezbeuje da se te boje primene i na druge elemente ekrana. Vrednosti koje se uvaju, mogu se iskoristiti za podeavanje boje teksta ili pozadine ekrana apliakcije. Vrednosti za boje uvaju se u XML fajlu na putanji rez/values/colors.xml.

Android podravaja rad sa sledeim formatima boja:

#RGB (primer, #F00 , 12-bit boja red)

#ARGB (primer, #8F00 , 12-bit boja, crvena sa transparetnosti do 50%)

#RRGGBB (primer, #FF00FF, 24-bit boja, purpurcrvena)

#AARRGGBB (primer, #80FF00FF , 24-bit boja, purpurcrvena sa transparetnosti do 50%)Primer skladitenja boja:

#006400

#FFE4C4

Sledea linija koda vraa vrednost odreene boje:

int mojaBoja = getResources().getColor(R.color.mojaBoja);4.3.5. Rad sa resursima koji se crtaju

Resursi koji se crtaju, kao to su slike, moraju se sauvati u /res/drawable direktorijumu projekta. Ovi tipovi resursa se onda sastavljaju u paket aplikacije i dostupne su aplikaciji.

Najei resursi koji se crtaju su bitmap slike, kao to su PNG i JPG fajlovi. Ovi fajlovi se esto koriste kao ikonice aplikacije i slike dugmia ali se mogu koristiti i za veliki broj komponenti korisnikog interfejsa.

Resursi slika su u klasi BitmapDrawable. Kako bi se pristupilo grafikom resursu koji se zove /res/drawable/logo.png, treba se koristiti komanda getDrawable(), po sledeem redosledu:

BitmapDrawable logoBitmap = (BitmapDrawable)getResources().getDrawable(R.drawable.logo);

Veinu vremena, meutim, grafika ne mora da se otvara direktno. Umesto toga, moe se koristiti identifikator resursa kao atribut za kontrolu kao to je kontrola ImageView.

Sledei kod, na primer, postavlja i otvara logo.png sliku u kontroli ImageView koja se zove LogoImageView, koja mora biti definisana unutar fajla za layout (main.xml):

ImageView logoView = (ImageView)findViewById(R.id.LogoImageView);

logoView.setImageResource(R.drawable.logo);Takoe se moe kreirati specijalni XML fajl kako bi se opisale druge Drawable podklase, kao to je ShapeDrawable. Moe se koristiti klasa ShapeDrawable da bi se definisali razni oblici, kao to je pravougaonik i krug.4.3.6. Rad sa menijima

Prilikom razvoja aplikacije, stalno se javlja potreba za kreiranjem menija funkcionalnosti. Andird podrava rad sa menijima, meni se kao i ostali resursi skladite u direktorijumu rez/menu/. Svaki resurs menija, koji predstavlja skup pojedinanih stavki menija, se skladipti kao posebno formatirana XML datoteka i kompajliraju se u vreme izvravanja aplikacije. U nastavku sledi prikaz jednostavnog menija koji je skladiten u rez/menu/speed.xml koji predstavlja meni jedne proste aplikacije :

Meni se moe kreirati i korienjem Eclipse dodatka koji moe pristupati konfiguracionim atributima za svaku stavku menija. U predhodnom primeru smo direktno u xml fali postavili naziv stavke menija, inae ti stringovi se takoe mogu izdvojiti iz tog fajla i kasnije lokalizovati na vie jezika. Primer menija gde su definisani samo nazivi resursa, gde se vrednost resursa uzima kasnije iz konkretnog xml fajla.

Da bi se koristio predhodno napisan meni potrebno je u aplkaciji pozvati resurs koji je skladiten na putanji rez/menu/speed.xml tako to se overajduje metoda nadreene klase onCreateOptionsMenu() u android aplikaciji.

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.speed, menu);

return true;

}

Ovim je meni kreiran i to je sve. Sada, ako se pokrene aplikacija i pritisne taster meni dobie se meni koji je gore definisan. Postoji veliki broj atributa koji se moe dodeliti nekoj stavki menija, spisak svih stavki moete pogledati u zvaninoj dokumentaciji za Andoird SDK http://d.android.com/guide/topics/resources/menu-resource.html.

4.3.7. Rad sa fajlovimaKao dodatak stringu, grafici i layout resursima, Android projekti mogu sadrati fajlove kao resurse. Ovi fajlovi mogu biti u bilo kom formatu. Meutim, neki formati su pogodniji nego drugi.XML fajl format je dobro podran na Android platformi. Proizvoljni XML fajlovi mogu biti ukljueni kao resursi. Ovi XML fajlovi se uvaju u /res/xml direktorijumu. XML fajlovi su preferirani format za bilo koje strukturisane podatke koje aplikacija trai. Kako se formatira XML fajl zavisi od developera. Razliiti XML alati su dostupni za Android platformu.

Primer xml fajla:

XML resursu iz aplikacije moe se pristupiti na sledei nain:

XmlResourceParser mojiPredmeti = getResources().getXml(R.xml.mojiPredmeti);Aplikacija moe sadrati .raw fajlove kao resurse. Raw fajlovi koje aplikacija moe koristiti sadri audio, video i druge fajlove. Svi raw fajlovi resursa bi trebali biti sauvani u /res/raw direktorijum.Nema pravila ili ogranienja pri kreiranju raw fajlova (osim pravila o nazivu fajla koji je ranije pomenut). Ako treba ubaciti multimedia fajlove, treba proveriti dokumentaciju Android platforme kako bi se odredili koji su media formati i kodeci podrani za traeni mobilni telefon. Isto vai i za bilo koji drugi format koji treba da se ubaci u resurse aplikacije.Ako format fajla koji treba da se koristi nije podran u poetnom Android sistemu, aplikacija e moda zatraiti da sama odradi proveru fajlova.Da bi se pristupilo raw fajlu programerski, jednostavno treba koristiti komandu openRawResource(). Na primer, sledei kod bi napravio InputStream objekat da bi pristupio resurs fajlu /res/raw/file1.txt:InputStream iFile = getResources().openRawResource(R.raw.file1);4.3.8. Rad sa rasporedom (Layout)

Veina korisnikih interfejsa Android aplikacija se definiu koristei specijalni XML fajl koji se zove layout. Resursi rasporeda su u /res/layout direktorijumu. Layout fajlovi se sastavljaju u aplikaciju kao i svaki drugi resurs. Oni esto definiu ceo ekran i povezani su sa odreenom aktivnou, ali i ne moraju da budu. Resursi rasporeda takoe mogu definisati deo ekrana i mogu biti deo nekog drugog rasporeda.

Ovo je obian raspored, koji se zove main.xml, koji se pravi sa svakom Android aplikacijom. Ovaj layout file opisuje korisniki interfejs jedine aktivnosti u aplikaciji. Sadri kontrolu LinearLayout koja se koristi kao skup za sve druge kontrole korisnikog interfejsa. U ovom sluaju to je kontrola TextView.Main.xml layout fajl sadri i druge resurse: string resurs @string/hello, koji je definisan u strings.xml resurs fajlu koji sadri tekst Moja prva Android aplikacija!Nakon pokretanja aplikacije, izgled ekrana je sledei:

Slika 3.2. Prikaz pokrenute Android aplikacije.

Postoje dva naina da se formiraju resursi rasporeda. Najjednostavniji nain je da se koristi Layout Resource Editor u Eclipsu da bi se dizajnirali layout fajlovi. Takoe se mogu direktno menjati XML layout fajlovi.4.3.9. Rad sa stilovima

Korisniki interfejs Andoird aplikacije, dizajneri mogu ureivati korienjem stilova. Kontrola rasporeda elemenata izvedena je iz View klase, koja ima veliki broj korisnih osobina.

Stilovi se oznaavaju tagom koji su smeteni u direktorijum rez/values/ . Stilovi se takoe definiu u XML fajlu a potom se kompajliraju u vreme izvravanja aplikacije. Stilovi se ne mogu pregledavati korienjem Eclipse Resource designer-a ali se ispravno prikazuju na emulatoru kao i na samom ureaju.

U nastavku sledi jednostavan primer kako se koriste stilovi koji su smeteni u fajlu rez/values/styles.xml. Definisana su dva stila, prvi stil je za obavezna polja u formularu, dok drugi je za neobavezna polja. Obavezna polja bie predstavljena crvenom bojom i veliinom slova 14p koja e biti boldovana, dok opciona plja bie predstavljena belom bojom, iskoena i veliina 12p.

#e4101a

14pt

bold

#FFFFFF

12pt

italic

4.3.10. Rad sa temama

Tema predstavlja skup stilova koji se primenjuju na sve elementu neke aktivnosti. Teme se definiu na isti nain kao i stilovi, koristi se tag koji se uva u rez/values/ direktorijumu. Jedina razlika to temu od stilova izdvaja jeste to to tema mora de se definie kao atribut aktivnosti u AndoirdManifest.xml fajlu.

4.4. Referenciranje sistemskih resursa

Sistemski resursi se koriste na isti nain kao i resursi same aplikacije. Android paket sadri sve vrste resursa, koje moete pretraivati u android.R podklasu.

U ovoj podklasi mogu se nai sledei sistemski resursi za:

Animiranje sekvence ka unutra ili ka spolja

Liste imejlova, telefona itd.

Standardni sistem boja,

Dimenzije i primenu slika i ikona,

Sistem stilova i tema,

Poruke o grekama,

Kreiranje rasporeda elemenata kao i crtanje jednostavnih elemenata.

Referncijaranje sistemskih resursa je na isti naina kao i kada se koriste spostveni resursi. Npr ako eli podesiti da boja teksta bude svetlo siva potrebno je podesiti atribut @android:color/darker_gray. Sistemskim resursima se pristupa na isti nain kako se pristupa resursima aplikacije.

android.R.string.ok5. Elementi korisnikog interfejsaPostoje dva naina dizajniranja korisnikog interfejsa: proceduralno i deklarativno.

Proceduralni dizajn odnosi se na pisanje Java koda, a deklarativni na pisanje XML (eng. Extensible Markup Language) koda. U praksi se za kreiranje grafikog korisnikog interfejsa uglavnom koristi XML.Primer 4.3 predstavlja primer proceduralnog dizajna.

Kreiranjem interfejsa aktivnosti dobijaju svoju funkcionalnost, tj. vidljivost na ekranu ureaja i na taj se nain omogucava interakciju sa korisnikom. Osnovne jedinice korisnikog interfejsa su objekti pogled (View) i grupe pogleda (ViewGroup):

pogled objekat ija prenos struktura u sebi nosi zapis izgleda i sadraja odreenog pravougaonog podruja na ekranu, upravlja iscrtavanjem elemenata, pomeranjem sadraja na ekranu (scrolling) i ostalim faktorima koji utiu na izgled definisanog dela ekrana. U hijerarhijskom stablu objekti pogled su listovi stabla. Android raspolae sa vec gotovim skupovima objekata ove vrste kao to su dugmad, kvadratici za odabir (eng. checkbok) i slino. Ovi objekti nasleuju klasu View;

grupe pogleda posebna vrsta objekta pogled koja sadri i upravlja grupom zavisnih objekata pogleda i grupe pogleda ime je omogucena kompleksnost prikaza korisnikog interfejsa. Objekti ove vrste su inastance klase ViewGroup.

Slika 5.1 Hijerarhijski prikaz elemenata korisnikog interfejsa

Iscrtavanje elemenata stabla zapoinje od korena stabla tako to aktivnost prvo poziva svoju setContentView() metodu i Android operativnom sistemu predaje referencu na koreni objekat. Svaki podvor iscrtava se sam pozivanjem draw() metode i to pod uslovom da vor sam postavlja zahtev za lokacijom i veliinom, ali roditeljski vor (grupa pogleda) donosi konanu odluku o veliini prostora za iscrtavanje podvora i njegovoj lokaciji na ekranu. Svaka grupa pogleda je odgovorna za renderovanje prikaza svojih podvorova.

5.1. XML layout

Naa prva Android aplikacija (Primer 4.3) koristila je najjednostavniji pogled TextView koji slui za prikaz teksta i bila je dizajnirana proceduralno, to znai da nije korien XML prilikom dizajniranja korisnikog interfejsa. S obzirom da je poeljno koristiti deklarativan dizajn prilikom kreiranja sloenijeg korisnikog interfejsa, u daljem tekstu bie opisan postupak kreiranja Hello world aplikacijekorienjem XML tehnologije za dizajn korisnikog in