android - verzija -final
DESCRIPTION
RAZVOJ APLIKACIJA ZA OPERATIVNI SISTEM ANDROIDOsnove Android platformeArhitektura Android sistemaTRANSCRIPT
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