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

Android Skripta Prvi Cas

  • Upload
    ra-sa

  • View
    90

  • Download
    4

Embed Size (px)

DESCRIPTION

and

Citation preview

Page 1: Android Skripta Prvi Cas

UNIVERZITET U BEOGRADUFAKULTET ORGANIZACIONIH NAUKA

LABORATORIJA ZA ELEKTRONSKO POSLOVANJE

RAZVOJ APLIKACIJA ZA OPERATIVNI SISTEM ANDROID

Beograd, oktobar 2014.

Page 2: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Sadržaj1. Osnove Android platforme.............................................................................................................7

1.1. Istorija razvoja Android sistema.............................................................................................8

1.1.1. Android 1.0/1.1...............................................................................................................8

1.1.2. Android 1.5 ("Cupcake”).................................................................................................9

1.1.3. Android 1.6 (“Donut”).....................................................................................................9

1.1.4. Android 2.0/2.1 (“Eclair”).............................................................................................10

1.1.5. Android 2.2 (“Froyo”)...................................................................................................11

1.1.6. Android 2.3 (“Gingerbread”).........................................................................................12

1.1.7. Android 3.0 (“Honeycomb”).........................................................................................13

1.1.8. Android 3.1...................................................................................................................13

1.1.9. Android 3.2...................................................................................................................13

1.1.10. Android 4 (“Ice Cream Sandwich”)...............................................................................14

1.1.11. Android 4.1 (Jelly Bean)................................................................................................14

1.1.12. Android 4.2, 4.3............................................................................................................14

1.1.13. Android 4.4 (KitKat)......................................................................................................14

1.2. Funkcionalnosti Android OS-a..............................................................................................15

1.3. Arhitektura Android sistema................................................................................................15

1.3.1. Linux jezgro...................................................................................................................16

1.3.2. Izvorne programske biblioteke.....................................................................................16

1.3.3. Radno okruženje Android Runtime (Dalvik Virtual Machine)........................................17

1.3.4. Application Framevork..................................................................................................17

1.3.5. Integrisani pretraživač..................................................................................................18

1.3.6. Optimizovana grafika....................................................................................................18

1.3.7. SQLite............................................................................................................................18

1.4. Razvoj Android aplikacija......................................................................................................19

1.4.1. Komponente aplikacija.................................................................................................19

2. Instalacija i postavljanje razvojnog okruženja...............................................................................21

2.1. Instalacija JRE i JDK...............................................................................................................21

2.1.1. Instalacija JRE-a.............................................................................................................21

2.1.2. Instalacija JDK-a............................................................................................................22

2.2. Postavljanje Eclipse razvojnog okruženja.............................................................................23

2.3. Instalacija Android Software Development Kit-a (SDK).........................................................25

2.4. Prvo pokretanje Eclipse-a i instalacija ADT plugina...............................................................27

2.5. Kreiranje Android virtuelnih uređaja....................................................................................31

2.6. Kreiranje nove Android aplikacije.........................................................................................33

2.7. Fajl AndroidManifest.xml.....................................................................................................37

3. Aktivnosti i klasa Activity..............................................................................................................40

2

Page 3: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

3.1. Životni ciklus aktivnosti.........................................................................................................40

3.2. Kreiranje aktivnosti...............................................................................................................43

4. Resursi u Android aplikacijama.....................................................................................................48

4.1. Upravljanje i pristup resursima.............................................................................................48

4.2. Tipovi resursa.......................................................................................................................49

4.3. Rad sa resursima...................................................................................................................50

4.3.1. Rad sa stringovima........................................................................................................50

4.3.2. Rad sa nizom stringova.................................................................................................50

4.3.3. Rad sa Boolean i Integer resursima...............................................................................51

4.3.4. Rad sa bojama...............................................................................................................52

4.3.5. Rad sa resursima koji se crtaju......................................................................................52

4.3.6. Rad sa menijima............................................................................................................53

4.3.7. Rad sa fajlovima............................................................................................................54

4.3.8. Rad sa rasporedom (Layout).........................................................................................55

4.3.9. Rad sa stilovima............................................................................................................56

4.3.10. Rad sa temama.............................................................................................................56

4.4. Referenciranje sistemskih resursa........................................................................................56

5. Elementi korisničkog interfejsa....................................................................................................58

5.1. XML layout............................................................................................................................58

5.2. Layouts.................................................................................................................................60

5.2.1. LinearLayout.................................................................................................................60

5.2.2. RelativeLayout..............................................................................................................62

5.2.3. TableLayout..................................................................................................................64

5.3. Događaji u okviru korisničkog interfejsa...............................................................................65

5.3.1. Event listeners..............................................................................................................66

5.3.2. Upravljanje fokusom.....................................................................................................70

5.4. Meniji....................................................................................................................................70

5.4.1. Meni opcija...................................................................................................................71

5.4.2. Kreiranje kontekstualnih menija...................................................................................73

5.4.3. Kreiranje kretajućeg kontekstualnog menija................................................................73

5.4.4. Iskačući meni................................................................................................................74

5.4.5. Kreiranje meni grupa....................................................................................................75

5.5. Rad sa obaveštenjima – Notifications...................................................................................77

5.5.1. Toast notifikacije...........................................................................................................78

5.5.2. Status bar notifikacije...................................................................................................78

5.5.3. Dialog notifikacije.........................................................................................................81

6. Intents..........................................................................................................................................83

6.1. Vrste Intent-a........................................................................................................................85

3

Page 4: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

6.1.1. Intent filteri...................................................................................................................86

6.1.2. Primer beležnice...........................................................................................................90

6.2. Prosleđivanje podataka pomoću Intentova..........................................................................94

6.2.1. Slanje podataka novoj aktivnosti..................................................................................94

6.2.2. Vraćanje podataka iz aktivnosti....................................................................................95

7. Skladištenje podataka...................................................................................................................97

7.1. Zajednička podešavanja........................................................................................................97

7.2. Interna memorija..................................................................................................................98

7.3. Skladištenje podataka na spoljašnoj memoriji......................................................................99

7.4. Skladištenje podataka u lokalnoj SQLite bazi podataka......................................................100

7.4.1. Kreiranje SQLite baze podataka..................................................................................100

7.4.2. Kreiranje tabela..........................................................................................................102

7.4.3. Unos podataka – insert()............................................................................................102

7.4.4. Promena podataka – update()....................................................................................102

7.4.5. Brisanje podataka – delete().......................................................................................103

7.4.6. Rad sa transakcijama..................................................................................................103

7.4.7. Upiti nad SQLite bazom podataka...............................................................................104

7.4.8. Brisanje tabela i ostalih SQLite objekata.....................................................................105

7.5. Primer 1. Direktan rad sa bazom podataka........................................................................105

7.6. Primer 2. Rad sa bazom preko pomoćnih klasa..................................................................107

7.6.1. Kreiranje DBAdapter klase za rad sa bazom................................................................107

7.6.2. Korišćenje baze u Android aplikaciji............................................................................109

7.6.3. Prikaz kontakata.........................................................................................................110

7.6.4. Ažuriranje zapisa.........................................................................................................112

7.6.5. Brisanje zapisa............................................................................................................112

7.6.6. Pregled SQlite baze podataka korišćenjem grafičkog alata.........................................114

8. Fragmenti...................................................................................................................................116

8.1. Kreiranje fragmenata..........................................................................................................117

8.1.1. Preuzimanje referenci na elemente interfejsa fragmenta..........................................118

8.2. Dodavanje fragmenta u aktivnost.......................................................................................119

8.2.1. Deklarisanje fragmenata u okviru layouta aktivnosti..................................................119

8.2.2. Dinamičko dodavanje fragmenata u interfejs.............................................................119

8.3. FragmentManager i FragmentTransaction.........................................................................120

8.4. Komunikacija fragmenta sa aktivnošću...............................................................................121

8.5. Primer upotrebe fragmenata..............................................................................................123

9. Tabovi.........................................................................................................................................130

9.1. Stari tabovi (Android < 3.0).................................................................................................130

9.2. Fiksni tabovi........................................................................................................................132

4

Page 5: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

9.3. Skrolabilni tabovi................................................................................................................138

10. Dijalozi....................................................................................................................................140

10.1. Dizajn i upotreba dijaloga...............................................................................................140

10.2. Kreiranje dijaloga - DialogFragment...............................................................................141

10.3. AlertDialog......................................................................................................................144

10.4. Klasa Dialog - kreiranje Dialoga sa sopstvenim layout-om..............................................145

10.5. Dijalozi na starijim verzijama Androida...........................................................................146

11. Liste i adapteri........................................................................................................................148

11.1. ListView - osnove............................................................................................................148

11.2. Adapteri - ListAdapter i klase koje ga implementiraju....................................................150

11.3. ArrayAdapter..................................................................................................................151

11.4. SimpleAdapter................................................................................................................152

11.5. Izrada custom adaptera..................................................................................................157

12. Funkcionalnosti telefona i drugi Android sistemi...................................................................159

12.1. BroadcastReceiver-i i sistemski događaji........................................................................159

12.2. PowerManager...............................................................................................................161

12.3. AlarmManager................................................................................................................162

12.4. AudioManager, Vibrator.................................................................................................163

12.5. SmsManager, slanje i prijem SMS poruka.......................................................................164

12.5.1. SmsManager...............................................................................................................164

12.5.2. Slanje SMS-a uz pomoć Android aplikacije.................................................................166

12.5.3. Reagovanje na prijem SMS-a......................................................................................166

12.5.4. SMS na emulatoru......................................................................................................167

12.6. Slanje mail-a...................................................................................................................168

12.7. TelephonyManager, slanje i prijem telefonskih poziva...................................................169

12.7.1. TelephonyManager.....................................................................................................169

12.7.2. PhoneStateListener.....................................................................................................170

12.7.3. Pozivanje telefona i prijem poziva..............................................................................171

13. Lokacije i mape.......................................................................................................................172

13.1. Android.location paket i LocationManager klasa............................................................172

13.2. Podešavanje emulatora i telefona za rad sa lokacijom...................................................176

13.3. Google mape API v2........................................................................................................177

13.3.1. Dodavanje Google Play Services biblioteke................................................................177

13.3.2. Dobavljanje API ključa.................................................................................................180

13.3.3. Podešavanje Android Manifesta.................................................................................183

13.4. Genymotion emulator....................................................................................................184

13.4.1. Rad sa mapom............................................................................................................188

14. Rad sa servisima – Services.....................................................................................................191

5

Page 6: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

14.1. Životni ciklus Servisa.......................................................................................................191

14.2. Kreiranje servisa.............................................................................................................192

15. Internet...................................................................................................................................197

15.1. Obavljanje asinhronih poslova - AsyncTask....................................................................197

15.2. HttpURLConnection........................................................................................................199

15.3. Apache HTTP biblioteka..................................................................................................202

15.4. Obrada JSON-a i rad sa REST web servisima...................................................................203

15.4.1. REST i JSON.................................................................................................................203

15.4.2. Parsiranje JSON-a........................................................................................................204

15.4.3. Primer 1 - GET zahtev bez parametara i obrada JSON niza.........................................204

15.4.4. Primer 2 - POST zahtev bez parametara i obrada JSON objekta.................................206

15.4.5. Primer 3 –POST zahtev sa parametrima i obrada JSON objekta.................................207

16. Rad sa kamerom.....................................................................................................................209

16.1. Korišćenje ugrađenih aplikacija za rad sa kamerom.......................................................209

6

Page 7: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

1. Osnove Android platforme

Android je mobilni operativni sistem prvobitno razvijen od strane Android kompanije, koju je kupio Gugl 2005. godine. Nakon kupovine, Gugl je zatražio stvaranje Open Handset Alliance (OHA) udruženja, koja je sada angažovana u pružanju podrške i u daljem razvoju sistema. Android je zasnovan na izmenjenoj verziji Linux jezgra. Po izveštaju Gartnera za drugi kvartal 2013. Godine, Android operativni sistem je u značajnom vođstvu u odnosu na ostale platforme (iOS, Windows Phone, Blackberry) (Slika 1).

Slika 1. Tržišno učešće mobilnih OS (Gartner, Q2 2013.)

U Avgustu 2012. Na tržištu mobilnih telefona Android je dostigao tržišni udeo od 79% u drugom kvartalu 2013. Podaci iz maja 2013 navode da se u opticaju nalazi 900 miliona Android mobilnih uređaja. Po podacima iz časopisa The Guardian, postoji 11,868 različitih Android uređaja (uključujući telefone, tablete, televizore i druge vrste uređaja). Među proizvođačima koji proizvode telefone zasnovane na ovoj platformi se nalaze HTC, LG, Motorola, Samsung, Sony i drugi. Android OS se sastoji od 12 miliona linija koda, uključujući 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 uključuje operativni sistem, posrednički softver kao i ključne aplikacije za normalno funkcionisanje. Android SDK obezbeđuje alatke i API koji su neophodni za dalji razvoj aplikacija na Android platformi koristeći JAVA programski jezik.

Prvobitno razvijen od strane Android kompanije. Prva zvanična verzija Android OS, razvijena u saradnji Google i OHA, lansirana je 2007 zajedno sa osnivanjem Open Handset Alliance, udruženja 78 kompanija posvećene unapređenju otvorenih standarda za mobilne uređaje. Gugl je veći deo Android koda objavio pod Apache licencom, licencom slobodnog softvera i licencom otvorenog koda.

Shodno svojoj politici OHA ističe sledeće karakteristike Android programskog okruženja:

7

Page 8: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

• otvorenost - programeru omogućava potpunu slobodu u razvoju novih i već postojećih aplikacija, a proizvođaču uređaja slobodno korišćenje i prilagođavanje platforme bez plaćanja autorskih prava;

• sve aplikacije su ravnopravne - što znači da ne postoji razlika između osnovnih jezgarnih aplikacija uređaja i dodatnih aplikacija. Svim aplikacijama omogućen je ravnopravni pristup resursima pokretnog uređaja što daje mogućnost prilagođavanja uređaja specifičnim potrebama individualnog korisnika;

• automatsko upravljanje životnim ciklusom aplikacije - omogućava nadzor pokretanja i izvršavanja aplikacija na sistemskom nivou optimizovanim korišćenjem memorije i snage uređaja. Krajnji korisnik više ne brine o gašenju određenih aplikacija pre pokretanja drugih;

• uklanjanje granica "klasičnih" aplikacija - mogućnost razvoja novih i inovativnih aplikacija zasnovanih na međusobnoj kolaboraciji tehnologija;

• brz i jednostavan razvoj aplikacija - omogućen je bogatom bazom korisnih programskih biblioteka (eng. libraries) i alata za izradu aplikacija;

• visokokvalitetni grafički prikaz i zvuk - podržana 2D vektorska i 3D OpenGL (engl. Open Graphics Librari) grafika, te ugrađeni kodeci svih često korišćenih audio i video formata;

• kompatibilnost sa većinom sadašnjeg i budućeg hardvera - uključuje prenosivost Androidovih aplikacija na ARM, k86 i ostale arhitekture, te prilagodljivost sistema ulaznim i izlaznim komponentama.

1.1. Istorija razvoja Android sistema

Jula 2005, Gugl kupuje malu kompaniju “Android Inc.” sa sedištem 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 uđe na tržište mobilnih telefona.

Sve do 5. Novembra 2007. razvoj novog operativnog sistema za mobilne uređaje od strane Gugl korporacije svodilo se na špekulacije i nagađanja šta su prave namere Gugl korporacije, mada se sa izvesnom dozom sigurnosti znalo da Gugl priprema novi operativni sistem za ulazak na mobilno tržište. Tog dana svetu je predstavljena “Open Handset Alliance” (OHA) koja je predstavljala konzorcijum više kompanija koje su predstavljale značajne “igrače” na tržištu 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 doživeo na telefonu kompanije HTC, koja je u sradnji sa kompanijom Gugl razvila telefon koji će uspešno realizovati početne 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 dečjih bolesti, te je Gugl šest meseci kasnije izbacio novu verziju sistema koja je ispravila par “kritičnih problema”, podršku za glasovnu pretragu, mogućnost plaćenih

8

Page 9: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

aplikacija u onlajn prodavnici (“Market”), ispravljene probleme u vezi sa servisom “Gmail” i još nekoliko sitnih prepravki. Ova ažurirana 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 inženjerima zaduženim za razvoj sistema, a i korisničkih aplikacija.

1.1.2. Android 1.5 ("Cupcake”)

Samo tri meseca kasnije, u Maju 2009. Gugl predstavlja novu verziju svog operativnog sistema za mobilne uređaje, Android 1.5 koji je imao kodni naziv “Cupcake” (mala torta). Od ove verzije Gugl je svakoj novijoj verziji dodeljivao naziv nekog slatkiša, a skoriji dolazak nove verzije bio bi najavljivan postavljanjem skulpture sledeće “poslastice” ispred sedišta firme.

Nova verzija donela je značajna poboljšanja sistema u vidu novih mogućnosti kao što su: snimanje video sadržaja, podrška za stereo blutut slušalice, podesiva tastatura, prepoznavanje glasa i mogućnost koja je pružena programerima da kreiraju sopstvene aplikacije za početni ekran (“Home Screen”), koje se nazivaju Vidžeti (“Widgets”).

Nova verzija sistema koja se prvobitno pojavila kao nadogradnja za postojeći HTC Dream, privukla je i druge proizvođače, 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 proizvođača mobilnih uređaja, koje je izazvala pojava verzije 1.5 bilo je neophodno održati korak sa konkurencijom koja je napredovala na svakom polju. Gugl je bio svestan stanja na tržištu mobilnih uređaja i nastavio strategiju konstantnog poboljšanja i uvođenja novih mogućnosti svog sistema.

Nova verzija nazvana “Krofna” (“Donut”), donela je brojna poboljšanja već široko prihvaćenog operativnog sistema. Promene u verziji 1.6 predstavljale su jasan znak da je Gugl ceo projekat shvatio veoma ozbiljno.

Najznačajnija poboljšanja u verziji 1.6 su: Novi izgled Onlajn Prodavnice (“Market”) koji je omogućio korisnicima lakši pristup i bržu

pretragu željenih aplikacija Kameru i video kameru integrisanu u Galeriju, koja je sada omogućavala izbor više datoteka

za istovremeno brisanje Podršku za nove tehnologije kao što su: CDMA/EVDO, 802.1x i “text-to-speech” Podršku za navigacione aplikacije Razna poboljšanja po pitanju brzine, pretrage grafičkog interfejsa, itd.

Pored svih pozitivnih strana nove verzije sistema, polako je do izražaja dolazio problem koji će pratiti Android operativni sistem sve do današnjih verzija. Kako je Gugl za telefon za razvoj sistema izabrao HTC Dream i sistem razvijao na osnovu mogućnosti koje je taj telefon posedovao, prvi u redu za ažuriranje sistema bio je upravo HTC Dream. Međutim, problem se javio pošto je veliki broj saradnika izbacio na tržište svoje telefone sa do tada aktuelnom verzijom sistema 1.5. Kako je svaki proizvođač prilagodio Android okruženje svojim potrebama, odnosno izmenio okruženje tako da odgovara

9

Page 10: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

mogućnostima svojih modela, lako ažuriranje nije bilo moguće, jer nova verzija sistema nije mogla da se primeni bez dodatne manipulacije od strane proizvođača.

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 vremešni HTC Dream je polako zaostajao za konkurencijom po pitanju tehničkih mogućnosti, naime imao je preslab hardver za vreme koje je dolazilo. Imajući u vidu dinamiku razvoja tržišta Gugl u saradnji sa HTC korporacijom započinje razvoj novog telefona koji će služiti za razvoj operativnog sistema i aplikacija.

Prvi telefon koji u oktobru dobija novu verziju operativnog sistema Android, bio je uređaj 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 značajne promene kako po pitanju izgleda grafičkog interfejsa, tako i po pitanju brojnih novih mogućnosti koje je nova verzija uključivala.

Promene koje je nova verzija donela su mnogobrojne, ali kao najbitnije se mogu istaći: Podrška za “Microsoft Exchange” koji omogućava povezivanje mobilnog telefona sa serverom

koji kroz ovaj protokol omogućava lakšu komunikaciju između npr. firme i zaposlenog (mail, calendar, outlook...)

Podrška za “Facebook” koja integriše ovu socijalnu mrežu u kontakte telefona Poboljšanja veb pretraživača Potpuno nova aplikacija za pretraživanje mapa (“Google Maps”), po prvi put ova aplikacija

omogućava pregled satelitskis snimaka na mobilnom telefonu Novi Jutjub (“Youtube”) vidžet koji omogućava brzo postavljanje svojih snimaka na servere

Jutjuba Novi način upravljanja kontaktima koji omogućava znatno lakši pristup opcijama nego do

tada...

Motorola Droid koja je imala procesor tek prosečne snage, imala je zavidan grafički procesor, tako da su značajne firme na polju 3D igara polako počele da svoje naslove prilagođavaju sve jačim Android uređajima.

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 omogući razvojnom timu kompanije Gugl, ali i ostalim programerima da dalje unapređuje 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, podržavao je microSD kartice veličine do 32GB, a što je najbitnije, dolazio je sa najnovijom verzijom Android operativnog sistema – Android 2.1. Novi telefon se nazivao Google Nexus One.

10

Page 11: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Novi operativni sistem koji se pojavio sa pojavom novog Guglovog telefona, nosio je oznaku 2.1, a kodni naziv je ipak zadržan 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 sledećem periodu. Ova verzija sistema je masovno prihvaćena od svih proizvođača telefona koji su bili uključeni u Android projekat i predstavlja prvu sledeću “masovnu” verziju nakon verzije 1.5.

I ako mnogi proizvođači nisu vršili nadogradnju 1.5 verzije na 1.6 ili pak 2.0 verziju operativnog sistema Android, ovog puta pripremali su nadogradnju za već realizovane mobilne uređaje na verziju 2.1.

Poboljšanja koja su razdvajala Andorid 2.0 od verzije 2.1 su sledeća: Poboljšana ukupna brzina sistema Podrška za nove veličine ekrana i rezolucije istih Novi grafički interfejs web pretraživača i podrška za HTML5 Podrška za blic za kameru Digitalni zum Podršku za registrovanje pokreta više prstiju od jednom, tzv. “Multi-touch” Poboljšana tastatura Podrška za blutut verzije 2.1 (blutut transfer datoteka) “Live Wallpapers”... Nakon pojavljivanja “Google Nexus One” telefona, nastala je prava bujica novih modela gde

je vodeću ulogu imala kompanija HTC.

Ponovo do izražaja dolazi nemogućnost centralizovanog ažuriranja sistema od strane Gugla, već je nova verzija ponovo morala da prođe proces prilagođavanaj od strane drugih proizvođača. Ovaj nedostak uslovio je da i do danas mnogi modeli nisu doživeli svoju premijeru na novom operativnom sistemu, koji je sada ciljao mnogo moćnije telefone nego što je do tada bio slučaj.

Nova verzija operativnog sistema donela je značajna poboljšanja po pitanju 3D tehnologije, odnosno aplikacija. Pojavljivanje Android 2.0 koji je pokrenuo razvoj kompleksnih 3D aplikacija za mobilne uređaje, bio je dodatno ubrzan pojavom Android 2.1 sistema.

Po prvi put se ispred sedišta firme jedna skulptura zadržava duže od par meseci, po prvi put prošlo je 7 meseci pre nego što je Gugl predstavio novu verziju, što je značilo samo jedno – veliko poboljšanje sistema.

1.1.5. Android 2.2 (“Froyo”)

Nakon dužeg perioda bez ikakvih vesti o novoj reviziji operativnog sistema Android, ispred sedišta firme, zvanično je postavljena skulptura smrznutog jogurta (“Froyo”) što je značilo da je nova verzija sistema spremna i da je Guglov uređaj (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 tržištu mobilnih telefona.

Android 2.2 predstavljen na Gugl samitu u Maju 2010. godine, sadržao je najveću listu poboljšanja koja je neka verzija sa svojom pojavom donela, ali možda najzačajniju od svih, ono poboljšanje koje je

11

Page 12: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Android distanciralo od konkurentskih operativnih sistema jese podrška za fles animacije (“Flash animation”) koja je implementirana u saradnji sa kompanijom Adobe.

Poboljšanja koja su uključena u novoj verziji su: Veliko povećanje ukupne brzine sistema, optimizacija korišćenja memorije Dodatno povećanje procesiranja aplikacija koja je ostvarena primenom “JIT” (“Just in Time”)

skripte Integracija “Chrome” V8 JavaScript u veb pretraživač Poboljšana podrška za “Microsoft Exchange” Mogućnost deljenja internet konekcije sa drugim uređajima putem USB ili WiFi konekcije

(“Tethering”) Opcija za brzo isključivanje mobilne mreže Nova onlajn prodavnica (“Market”) sa mogućnošću automatske nadogradnje aplikacija Podrška za “upload” preko veb pretraživača Podrška za instaliranje aplikacija na proširivu memoriju (microSD) Podrška za Adobe Flash 10.1 Podrška za snimanje i prikazivanje videa u visokoj rezoluciji 720p...

Kao što je već navedeno, pojavu nove verzije je svakako označila pojava Adobe Flash playera na mobilnim uređajima, koja je bila pokretana od strane grafičkog procesora. Ova podrška je izazvala burne reakcije od strane konkurenata, pre svega američke kompanije Apple, koja nije želela da u svoje uređaje implementira podršku za flash. Tada je nastao svojevrsni medijski rati na relaciji Apple-Adobe i Apple-Google.

Proces koji je započet verzijom 2.1, nastavljen je proces migracije starih verzija na aktuelnu. Ovog puta Gugl je imao nešto drugačiji pristup, u saradnji sa ostalim proizvođačima pronađen je način da se beže vrši nadogradnja postojećih 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 omogućio prodaju telefona isključivo programerima koji su radili na razvoju aplikacija za njihov operativni sistem.

Konačno, Android je bio dovoljno konkurentan operativnom sistemu kompanije Epl (“Apple”), tako da je velikom brzinom počeo da grabi tržišno učeće. Da bi krajem iste godine došao na lidersku poziciju i trenutno zauzima najveći procenat aktivnih verzija Android mobilne platforme, a Android lidersku poziciju na tržištu mobilnih operativnih sistema uopšte.

1.1.6. Android 2.3 (“Gingerbread”)

Ponovo se Gugl povlači i primiruje narednih 6 meseci, pre nego što se skulptura izložena krajem Maja 2010. godine, ne zameni. 6. Decembra 2010. godine osvanula je nova maskota ispred prostorija firme, nova verzija je bila spremna.

Uzmajući u obzir sve veće zahteva mobilnog tržišta i dolaska u prvi plan želje korisnika koje su nekad bile marginalne (poput 3D igrica), Gugl u saradnji sa južno korejskom kompanijom Samsung razvija novi telefon u svrhe razvoja

sistema i aplikacija. “Google Nexus S” je rođen. Iako je prethodne verzije tzv. Gugl telefona razvijao tajvanski HTC, Gugl je ovaj put izabrao Samsung kako ne bi favorizovao nijednog od postojećih poslovnih partnera koji učestvuju u konzorcijumu “OHA”.

12

Page 13: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Poboljšanja koja su došla sa novom verzijom, u odnosu na prethodnu su brojna, najznačajnija su sledeća:

Redizajniran grafički interfejs (“UI”) Podrška za ekrane rezolucije veće od 800x480 VOIP podrška Podrška za WebM/VP8 video Podrška za NFC (“Near Field Communication “) Unapređena “copy/paste” funkcija Nova “multitouch” tastatura Audio, video i grafička unapređenja namenjena za programere i razvojne timove video igara Dodata podrška za nove senzore poput žiroskopa Poboljšana kontrola energije i aplikacija Podrška za više kamera Zamena “YAFFS” “EXT4” sistemom datoteka

Poslednja verzija 2.3 grane Android platformi, kao i cele 2.X verzije je verzija 2.3.7. Dodatna poboljšanja uvedena do poslednje verzije obuhvataju podršku za video chat pomoću Google Talk-a, podršku za Open Acessory Libraryza konektovanje na periferijske USB uređaje, bolje mrežne performanse, manja poboljšanja aplikacija, kamere i baterije, kao i podršku za Google Wallet za Nexus S4G.

1.1.7. Android 3.0 (“Honeycomb”)

26. Januara 2011. Premijerno je prikazan potpuno novi operativni sistem – Android verzije 3.0 koj nosi kodni naziv Saće (“Honeycomb”) . Promene koje donosi novi operativni sistem se odnose pre svega na prilagođenost većim ekranima i sanžnijim konfiguracijama tablet uređaja:

Novi grafički interfejs namenjen tablet uređajima Radna površina u tri dimenzije (3D) sa novim, redizajniranim vidžetima Novi način simultanog izvršavanja aplikacija (“Multitasking”) Veb pretraživač napravljen posebno za potrebe tablet uređaja Podrška za video ćaskanje (“Chat”) koristeći Gugl aplikaciju “Google Chat”) Interfejs koji se izvršava na nivou grafičkog procesora (“Hardware Acceleration”) Podrška za proceore sa više jezgara...

1.1.8. Android 3.1

Objavljen u Maju 2011., podržava dodatne tipove ulaznih uređaja, USB host mode direktno sa kamera i drugih uređaja, Google Movies, Books apps i sl.

1.1.9. Android 3.2

Objavljen u Julu 2011. Dodatna optimizacija za različite veličine ekrana, bolji pristup SD kartici, mod kompatibilnosti za aplikacije koje nisu namenjene većim ekranima, veća kontrola nad displejom, unapređen Flash, itd.

13

Page 14: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

1.1.10. Android 4 (“Ice Cream Sandwich”)

4.0 Ice Cream Sandwich, objavljen u Oktobru 2011. Vizuelno i funkcionalno predstavlja nadogradju verzije 3, ali je za razliku od nje namenjena da objedini i manje uređaje (telefone) i tablete. Softverski dugmići iz verzije 3 se sada primenjuju i na telefonima, vidžeti su izdvojeni na posebnu stranicu u meniju, otključavanje telefona pomoću snimka lica, upravljanje komunikacijom preko mreže, mogućnost gašenja pozadinskih aplikacija,

upravljanje aktivnostima na društvenim mrežama na jednom mestu, poboljšano upravljanje fotografijama, pretraga mailova offline, app folder, NFC podrška i Android Beam za razmenu podataka između Android uređaja, snimanje u 1080p rezoluciji.

1.1.11. Android 4.1 (Jelly Bean)

Verzija Android 4.1 pod nazivom Jelly Bean postaje dostupna od jula 2012. Unapređena je manipulacija interfejsom uvođenjem trostrukog baferinga i prepuštanjem kompletne manipulacije svim grafičkim elementima na ekranu Android Framework-u. Poboljšava upotrebljivost za korisnike sa specijalnim potrebama, pojačava podršku za svestke jezike, omogućava izmenu tastatura. Poboljšane su aduio/video mogućnosti, a ugrađeni pretraživač je zamenjen Google Chrome-om.

1.1.12. Android 4.2, 4.3

U verziji 4.2 su poboljšana tastatura, bolji sistem za zaključavanje telefona, podrška za više korisničkih naloga na tabletima, podrška za bežičan prenos video snimka, SELinux, i druga poboljšanja. Verzija 4.3 donosi uglavnom manja unapređenja i podršku za OpenGL ES 3.0 i 4K ekrane.

1.1.13. Android 4.4 (KitKat)

Verzija KitKat je najavljena početkom septembra 2013. Ova verzija je prvenstveno očekivana da se pojavi kao verzija 5, pod kodnim imenom „Key Lime Pie“. KitKat može da radi i na relativno slabijim uređajima, sa samo 512MB rama, a čitav sistem je naštelovan tako da štedi memoriju i agresivnije kontroliše aplikcije koje zauzimaju veće količine memorije. Aplikacije sada mogu da obave proveru dostupne memorije na telefonu i u skladu sa time prilagode svoje aktivnosti. Ugrađena je podrška za bezbedne NFC transakcije pomoću Host Card Emulation-a. Omogućeno je štampanje preko Wi-Fi-ja, pristup uskladištenim fajlovima na

telefonu i u onlajn servisima kroz standardni interfejs, energetski efikasniji senzori, senzor (brojač) koraka, novi SMS/MSS API, razna unapređenja korisničkog interfejsa, WebView zasnovan na Chrome-u, alati za snimanje ekrana, poboljšan audio/video streaming, sistemska podešavanja za titlove, dodatni alati za analizu iskorišćenja memorije, itd.

1.2. Funkcionalnosti Android OS-a

Osnovne funkcionalnosti Android OS-a:

Prikaz na uređajima – OS prilagođava izgled različitim tipovima uređaja i kompatibilian je sa 2D, 3D grafičkim bibliotekama

14

Page 15: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Skladištenje podataka – SQL lite relaciona baza podataka za upravljanje podacima

Konektivnost – Android podržava 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 pišu u Java programskom jeziku, Dalvik virtuelna mašina

Podrška 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 <video> tag), Adobe Flash Streaming (RTMP), HTTP Dynamic Streaming

Dodatna harderska podrška - kamera, touchscreen, GPS, brzinometar, žiroskop, magnetometar, senzori udaljenosti i pritiska, termometri

Okruženje za razvoj – Android Development Plugin

Tržište – GooglePlay je online katalog aplikacija koje se mogu preuzeti i instalirati na Android uređaje, bez potrebe za računarom.

Multi-touch – mogućnost uređaja da prepozna tri različite pozicije „ulaznih dodira“

Bluetooth

Video poziv

Multitasking – multitasking aplikacija

Funkcionalnosti zasnovane na glasu – Pozivanje, pretraga, navigacija pomoću glasa

Tethering – Android telefon može da se iskoristi kao wireless hotspot

1.3. Arhitektura Android sistema

Arhitektura Android sistema bazira se na Linux 2.6 jezgru (eng. kernel) koje se koristi kao sloj apstrakcije hardvera (HAL, eng. Hardvare Abstraction Laier). Razlog za korišćenje jezgra operativnog sistema Linux je dokazana pogonska podrška (eng. driver model), mogućnost upravljanja memorijom i procesima, sigurnosni model, mrežni sistem, te dokazana robusnost, konstantni razvoj i unapređivanje sistema. Slika 2 prikazuje arhitekturu Android sistema.

15

Page 16: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 2. Arhitektura Android platforme

1.3.1. Linux jezgro

Najvažniji elementi jezgra su: pogonski program za međuprocesnu komunikaciju između 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 sledeći sloj u arhitekturi sistema. Neke od značajnijih su:

UI - program za upravljanje grafičkim interfejsom (eng. Surface Manager) - biblioteka odgovorna za pravilno iscrtavanje različitih aplikacionih komponenti u vremenu i prostoru;

16

Page 17: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

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

SGL (eng. Scalable Graphics Librari) - predstavlja 2D biblioteke na kojima je zasnovana većina aplikacija. Spomenimo još da se 2D i 3D elementi mogu kombinovano prikazivati u jednom korisničkom interfejsu;

Media Framework - grupa kodeka za snimanje i reprodukciju audio formata, video formata i nepomičnih slika. Omogućena je od strane PacketVidea;

FreeType - biblioteka koja služi za vektorsku rasterizaciju oblika pisma (eng. font); SSL (eng. Secure Socket Layer) - omogućava rezervnu komunikaciju preko Interneta; SQLite - programska biblioteka koja implementira bazu podataka (eng. database engine); WebKit - Jezgro pretraživača koji podržava JavaScript i ostale standarde na malom uređaju; Sistem C library - implementacija standardne C-ove sistemske biblioteke (libc) izvedene iz

operativnog sistema BSD.

1.3.3. Radno okruženje Android Runtime (Dalvik Virtual Machine)

Naredni sloj u arhitekturi Androida je radno okruženje (eng. Android runtime) kojeg čine virtuelni mašina Dalvik (DVM, eng. Dalvik Virtual Machine) i jezgrene biblioteke (eng. core library).DVM je registarski bazirana virtuelna mašina, dok je klasična Javina virtuelna mašina (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 slično. 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 uređajima, Google je razvio sopstvenu virtuelnu mašina za Android. DVM Je najverovatnije razvijen kako bi se zaobišla problematika s dozvolama korišćenjem Sunovog J2ME. Svaki pokretni uređaj koji u sebi sadrži J2ME mora kod Suna licencirati bilo kakvu promenu izvornog koda J2ME-a.

Virtuelna mašina Dalvik dobila je ime po istoimenom Islandskom gradu u kojem su živeli preci glavnog developera DVM-a Dan Bornstein.

Osnovna razlika između Sun Java virtuelnih mašina i DVM-a je u tome što su prvo spomenuti virtualni uređaju bazirani na steku, dok je DVM registarski baziran virtuelni mašina. Međukod (eng. bitecode) Dalvik virtuelne mašine transformiše se pomoću 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. Međukod koji izvršava DVM nije Javin međukod, nego upravo spomenuti .dex oblik. Transformacija formata omogućava bolju prilagođenost za rad na manjim procesorima boljim iskorišćavanjem raspoložive memorije i procesorske snage. Rezultat svega je mogućnost višestrukog instanciranja same virtuelne mašine što znači da se svaka Android aplikacija pokreće kao zasebni proces, s vlastitom instancom virtuelne mašine Dalvik.

1.3.4. Application Framevork

Sloj aplikativnih okvira (eng. Application Framevork) napisan je u programskom jeziku Java i sadrži proširiv skup programskih komponenti kojeg koriste sve aplikacije uređaja. Framework podržava mnogobrojne open source jezike kao što su openssl, sqlite i libc. Takođe podržava i jezik Android jezgra. Sa gledišta sigurnosti, framework se bazira na UNIX file system ovlašćenjima koja osiguravaju da aplikacije poseduju samo one mogućnosti koje im je vlasnik telefona dao pri instalaciji aplikacije.

17

Page 18: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Neki od važnijih elemenata su: upravljanje aktivnostima (eng. Activiti Manager) - upravljanje životnim ciklusom aplikacije, upravljanje programskim paketima (eng. Package Manager) - sadrži informaciju o

aplikacijama instaliranim na sistemu upravljanje prozorima (eng. Window Manager) - upravljanje aplikacionim prozorima, upravljanje pozivima (eng. Telephone Manager) - sadrži API-je koji se koriste pri izradi

aplikacija za upravljanje pozivima, pružaoci sadržaja (eng. Content Providers) - omogućavaju zajedničko korišćenje podataka

od strane više aplikacija, upravljanje resursima (eng. Resource Manager) - služi za skladištenje delova aplikacije koji

nisu kod (npr. slike), sistem grafičkog prikaza (eng. Viev Sistem) - sadrži bazu gotovih grafičkih prikaza i alata

(eng. vidget), upravljanje lokacijski zasnovanim uslugama (eng. Location Manager) i upravljanje notifikacijama (eng. Notification Manager) - upravljanje notifikacijama i

događajima (npr. dospeće poruke, nadolazeći sastanak).

Aplikativni sloj je poslednji sloj u arhitekturi sistema Android i čine ga korisničke aplikacije uređaja. Predstavlja sloj vidljiv krajnjem korisniku. Uključuje neke od standardnih sistemskih aplikaciJa kao što su Veb pretraživač, lista kontakata, telefon, itd.

1.3.5. Integrisani pretraživač

Google je napravio pravi potez izborom WebKit kao open source web pretraživača. Ubacili su dva veoma bitna poboljšanja, two pass layout i frame flattening. Two pass layout otvara stranicu bez čekanja na blokirajuće elemente, kao što su eksterni CSS ili eksterni JavaScript, ali posle kraćeg perioda ponovo otvara stranicu sa svim podacima na strani. Frame flattening konvertuje postojeće okvire stranice u jedan okvir i taj okvir pokazuje na ekranu. Ova poboljšanja pospešuju 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 moguće da ćemo videti Google Earth i spektakularne igre kao što je Second Life, koje dolaze na Linux sistemima. U ovom trenutku, legendarna 3D pucačka 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 više nego pogodan za platformu kao što je Android. Postoji veliki broj karakteristika koje zavise od hardvera, kao što su velika količina multimedijalnih fajlova, podrška konekcija, GPS, unapređena podrška 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

18

Page 19: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

koji se nalazi u okviru .apk fajla predstavlja Android aplikaciju. Kada se aplikacija jednom instalira na uređaj, 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 podešava dozvole za sve fajlove u

okviru aplikacije, tako da samo aplikacija sa određenim user id može da im pristupi Svaki proces poseduje sopstvenu virtualnu mašinu, tako da jedna aplikacija može da se

izvršava nezavisno od drugih Svaka aplikacija se izvršava u okviru svog Linux procesa Aplikacija može zahtevati pristup podacima na urešaju kao što su: skladište podataka,

korisnički kontakti, SMS poruke, Bluetooth, itd.

1.4.1. Komponente aplikacija

Osnovni elementi svake Android aplikacije su njene komponente, koje određuju ponašanje i karakteristike aplikacije. Sistem može da pristupi i komunicira sa aplikacijom preko njenih komponenata. Postoji četiri tipa komponenata aplikacije:

AktivnostAktivnost predstavlja jedan ekran sa korisničkim interfejsom. Na primer email aplikacija može imati jednu aktivnost koja prikazuje listu novih mejlova, druga aktivnost omogućava pisanje mejla, a treća aktivnost služi za čitanje mejlova. Iako su aktivnosti u okviru jedne aplikacije komponovane i koordinirane tako da predstavljaju logičku celinu, svaka od njih je nezavisna. U skladu sa tim, različite aplikacije mogu da startuju akitvnosti iz drugih aplikacija. Na primer aplikacija za rad kamere, može startovati aktivnost iz email aplikacije kako bi omogućila deljenje fotografija na društvenoj mreži. Svaka aktivnost se implementira kao podklasa klase Activity.

Servisi (Services)Servis je komponenta koja se izvršava u pozadini kako bi se omogućila realizacija dugotrajnih operacija, kao i izvršavanje udaljenih procesa. Servis ne pruža korisnički interfejs. Na primer, servis može da pušta muziku u pozadini dok se korisnik nalazi u nekoj drugoj aplikacija. Aktivnost može da pokrene servis

Provajderi sadržaja (Content providers)Provajder sadržaja upravlja deljenim setom podataka aplikacije. Podaci se mogu skladištiti u fajl sistemu, bazi, na vebu ili bilo kojoj perzistentnoj lokaciji kojoj aplikacije može da pristupi. Preko provajdera sadržaja aplikacija može da vrši upit nada podacima. Na primer, Android pruža provajdera sadržaja koji upravlja informacijama o imeniku na telefonu. Svaka aplikacija sa odgovarajućim permisijama, preko provajdera sadržaja može da pristupi kontaktima u imeniku.

Broadcast receiversOva komponenta aplikacije je vezana za prenos sistemskih objava i notifikacija. Većina broadcast receiver-a potiče iz sistema – obaveštenje da je baterija slaba, ili da je slika napravljena i sl. Ova komponenta ne učestvuje u korisničkom interfejsu, ali može da se pojavi kao notifikacija lampice i sl. Jedinstvena karakteristika Android OS je u tome što svaka aplikacija može startovati komponente iz neke druge aplikacije. Komponente aplikacije se aktiviraju preko asinhrone poruke – intenta. Sve komponente jedne aplikacije se definišu u okviru AndroidManifest.xml fajla. Svaka Android aplikacija osim koda sadrži i odgovarajuće resurse, kao što su slike, audio fajlovi, stilovi, itd.

19

Page 20: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

2. Instalacija i postavljanje razvojnog okruženja

Za razvoj aplikacija za Android operativni sistem potrebno je instalirati sledeće programe navedenim redosledom:

Java SDK Eclipse IDE Android SDK Android Development Tools Plugin za Eclipse Potrebne verzije Android platformi za Android SDK

Android SDK podržava Windows, Linux i Mac OS operativne sisteme. Za pisanje Android aplikacija koristi se programski jezik Java. Programer može da izabere proizvoljno razvojno okruženje. Potrebno je napomenuti da je najjednostavnije razvijati Android aplikacije u Eclipse razvojnom okruženju, pošto je Google za njega obezbedio najbolju podršku u vidu dodataka (plugins). Rad u ostalim okruženjima je komplikovaniji, zato što nisu integrisana sa Android SDK-om, te je neophodno pokretati odgovarajuće alate iz konzole (komandne linije).

U daljem tekstu biće opisan postupak postavljanja Android razvojnog okruženja za operativni sistem Windows. Navedeni postupak se neznatno razlikuje za Linux i MacOS operativne sisteme.

2.1. Instalacija JRE i JDK

Prvi korak pri postavljanju razvojnog okruženja jeste instalacija Jave na računar. Dva glavna Java softverska paketa su Java Runtime Environment (JRE) koji se koristi za pokretanje Java aplikacija i Java Development Kit (JDK) koji se koristi za njihov razvoj i koji zahteva prisustvo JRE-a. Ukoliko se koristi Eclipse za razvoj, dovoljno je da na računaru bude instaliran samo JRE, dok je JDK paket već integrisan u okruženje. U slučaju eventualnih alternativnih razvojnih okruženja može biti neophodno da se skinu i instaliraju oba paketa. JRE je tipično dostupan na računarima običnih korisnika radi pokretanja Java aplikacija, dok je JDK neophodan za razvoj pošto on sadrži kompajlere i alate za rad sa izvornim kodom, koji nisu prisutni u JRE paketu.

2.1.1. Instalacija JRE-a

Java Runtime Environment se može preuzeti sa adrese www.java.com/en/download/index.jsp.

20

Page 21: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 3. Stranica za download JRE-a

2.1.2. Instalacija JDK-a

Java Development Kit je moguće 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.2.

Slika 4. Strana za preuzimanje JDK

Biramo opciju „Java Platform (JDK) *“. Na stranici koja će se otvoriti treba prihvatiti License Agreement i zatim izabrati odgovarajuću platformu za koju se preuzima paket (Slika 5), po čemu će biti pokrenut download.

21

Page 22: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 5. Izbor platforme

Klikom na naziv fajla, započeće sesa procesom preuzimanja. Po završetku preuzimanja i startovanju fajla, krenuće proces instalacije JDK-a (Slika 6). Potrebno je pratiti instrukcije sa ekrana.

Slika 6. Instalacija JDK

2.2. Postavljanje Eclipse razvojnog okruženja

Sledeći korak jeste instalacija Eclipse Integrated Development Environment-a (razvojno okruženje). Njega je moguće besplatno preuzeti sa adrese http://www.eclipse.org/downloads/. Eclipse razvojno okruženje podržava Windows, Linux i MacOS X operativne sisteme, kao i čitav niz programskih jezika.

22

Page 23: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Moguće je koristiti bilo koju verziju Eclipse-a koja podržava Java programski jezik. Pošto na sajtu za preuzimanje Eclipse razvojnog okruženja postoji veliki broj različitih verzija, odlučićemo se za najjednostavniju verziju koja podržava Java programski jezik. To je Eclipse IDE for Java Developers (Slika 7).

Slika 7. Sajt za preuzimanje Eclipse razvojnog okruženja

Nakon izbora verzije Eclipse-a, treba izabrati i mirror sajt sa koga će se preuzimanje izvšiti. Od izabranog načina preuzimanja jedino zavisi brzina samog download-a, te ovaj izbor nije od presudne važnosti. Možete izabrati prvi preporučeni sajt (Slika 8).

Slika 8. Izbor mirror sajta sa koga će se preuzeti Eclipse IDE

Eclipse IDE nema sopstveni program za instalaciju. On se jednostavno nalazi zapakovan u okviru jedne ZIP arhive. Nakon uspešnog preuzimanja, dovoljno je raspakovati tu arhivu u željeni folder (npr. C:\, tako da će konačna putanja Eclipse IDE-a biti C:\eclipse), što je prikazano na slici 9.

23

Page 24: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 9. Raspakivanje Eclipse razvojnog okruženja

Pošto Eclipse IDE nije instaliran na uobičajeni način, raspakivanjem nisu postavljene prečice izvršnog fajla na radnu površinu i u Start meni. To je moguće uraditi ručno. Najpre treba otići u folder C:\eclipse (odnosno u folder gde je Eclipse raspakovan) i kliknuti na fajl eclipse.exe desnim tasterom miša, a zatim izabrati opciju Copy. Potom treba kliknuti na prazan deo radne površine desnim tasterom miša i izabrati opciju Paste shortcut.

2.3. Instalacija Android Software Development Kit-a (SDK)

Sledeći korak jeste instalacija Android Software Development Kit-a (SDK). Njega je moguće besplatno preuzeti sa sajta http://developer.android.com/sdk/index.html . Na navedenom sajtu je potrebno izabrati verziju za željeni operativni sistem. U slučaju Windows-a, preporučljivo je preuzeti exe datoteku, pošto je to verzija SDK sa ugrađenim programom za instalaciju (Slika 10). Kod drugih operativnih sistema, dovoljno je otpakovati datoteku u željeni folder.

Slika 10. Izbor verzije Android SDK za preuzimanje

Sada je moguće startovati instalaciju, gde je potrebno pratiti instrukcije sa ekrana (Slika 11).

24

Page 25: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 11. Instalacija Android SDK

Po završetku instalacije, startovaće se SDK Manager. Ovde je moguće izabrati verzije Android API-a koje se mogu preuzeti, dokumentaciju, primere, kao i druge alate i dodatne biblioteke. Izbor verzije Android API-a veoma je važan, zato što od toga direktno zavisi da li će aplikacija raditi na određenom mobilnom telefonu ili tablet uređaju. Na primer, ako se izabere verzija 3.0 API-a, aplikacija potencijalno neće raditi na starijim Android telefonima, ukoliko programer ne primeni odgovarajuće pomoćne pakete za obezbeđivanje kompatibilnosti. Nove verzije API-a imaju naravno više funcionalnosti, ali zahtevaju više posla kako bi se ostvarila kompatibilnost sa starijim uređajima.

Slika 12. SDK Manager

25

Page 26: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Po izboru platformi i drugih paketa za skidanje, korisniku se prikazuju dodatni detalji i zahteva čitanje licence i konačna potvrda kako bi se započelo skidanje.

Slika 13. SDK Manager

Izborom opcije Accept All na prethodnoj slici i klikom na taster Install započeće se preuzimanje i instalacija svih verzija API-a, prateće dokumentacije i primera. Verzija API-a za koju će se kreirati aplikacija bira se naknadno.

2.4. Prvo pokretanje Eclipse-a i instalacija ADT plugina

Prilikom prvog startovanja Eclipse razvojnog okruženja, potrebno je izabrati lokaciju workspace-a. Workspace u stvari predstavlja folder u kome će se nalaziti projekti rađeni u Eclipse razvojnom okruženju. Workspace se obično nalazi u okviru ličnog foldera operativnog sistema (Slika 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 okruženja. Nakon ovog podešavanja treba kliknuti na taster OK.

Slika 14. Izbor lokacije workspace-a

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

26

Page 27: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 15. Izbor opcije Install New Software

Otvoriće se novi prozor, u kome treba kliknuti na dugme Add (Slika 16).

Slika 16. Dijalog Install New Software

U 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 17. Zatim treba izabrati opciju OK.

Slika 17. Dodavanje repozitorijuma

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

27

Page 28: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 18. Izbor opcija

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

Slika 19. Potvrda izbora

28

Page 29: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 20. Prihvatanje licenci

Ovim je započeo proces instalacije dodataka za Eclipse. Ukoliko se pojavi prozor koji obaveštava korisnika da sadržaj koji se preuzima nema digitalni potpis, potrebno je kliknuti na taster OK, čime se omogućava instalacija (Slika 21).

Slika 21. Obaveštenje o nepotpisanom sadržaju

Nakon završetka instalacije, potrebno je ponovo pokrenuti Eclipse razvojno okruženje (Slika 22).

Slika 22. Obaveštenje 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 23).

29

Page 30: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 23. Podešavanje dodatka za Eclipse IDE

Ovime je završen proces podešavanja Android razvojnog okruženja i sada je moguće kreirati aplikacije za Android platformu!

2.5. Kreiranje Android virtuelnih uređaja

Moguće je kreirati Android virtuelne uređaje u cilju testiranja aplikacije. Ovi uređaji se onda mogu pokrenuti na emulatoru koji dolazi kao deo SDK paketa. Iako je rad sa pravim telefonom tipično dosta brži, komotniji i omogućava neke opcije koje nisu moguće (ili su teško ostvarive) na emulatoru, emulator omogućava testiranje većine neophodnih opcija na bilo kakvoj vrsti uređaja, uključujući tu različite verzije Android platforme, varijante procesorske arhitekture, količine memorije, veličine ekrana itd.

Kreiranje i pokretanje virtuelnih uređaja se obavlja kroz Android Virtual Device (AVD) Manager. On se može pokrenuti iz SDK menadžera (tools -> manage AVDs) ili nezavisno od njega kroz nalaženjem izvršnog fajla ili klikom na ikonicu koja će se pojaviti u Eclipse-u posle instalacije ADT plugina.

30

Page 31: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 24. Virtuelni uređaji

Klikom na dumge new se može kreirati novi uređaj. U novootvorenom prozoru moguće je podesiti parametre virtuelnog uređaja. U pitanju su sledeći parametri:

AVD Name – proizvoljan naziv virtuelnog uređaja. Device – tip ekrana uređaja koji se kreira. Prvenstveno određuje rezoluciju ekrana, ali u

slučaju nekih uređaja i orijentaciju. Može se izabrati neka od veličina koja odgovara standardnim uređajima (npr. Nexus One)

Target – verzija Android API-a koju će koristiti uređaj. CPU/ABI – arhitektura procesora koja će se koristiti. Izbor će zavisiti od toga koje sistemske

slike su skinute za izabranu platformu korišćenjem SDK menadžera. Keyboard – ukoliko je ova opcija čekirana, tokom rada u emulatoru će moći da se koristi

tastatura računara na kom se izvršava emulator. U suprotnom se mora koristiti miš da se klikće na softverskoj tastaturi na ekranu emulatora.

Skin – kontroliše prikaz specijalnih hardverskih dugmića pored emulatora; ukoliko je ova opcija izabrana, na raspolaganju će biti dugmići za napajanje, jačinu zvuka, jog dial, za prijem i otkaz poziva, itd.

Front camera – da li emulator poseduje prednju kameru. Back camera – da li emulator poseduje zadnju kameru. Može se koristiti emulacija (lažni

snimak šahovske table i kugle koja se kreće po njoj) ili uzimati snimak sa web kamere zakačene na računar.

Memory options - količina RAM memorije koju će uređaj imati Internal storage - količina interne memorije koju će uređaj imati SD Card – podešavanja virtuelne memorijske kartice. Ukoliko se izabere opcija Size, moguće

je zadati veličinu nove virtuelne memorijske kartice. Ukoliko se izabere opcija File, moguće je učitati sadržaj image fajla kao virtuelnu memorijsku karticu.

Snapshot – ukoliko se izabere opcija Enabled, omogućiće se pamćenje stanja virtuelnog uređaja i kasnije učitavanje tog stanja prilikom ponovnog uključivanja virtuelnog uređaja. Opcija Snapshot je slična opciji Hibernate u Windows operativnom sistemu.

Na primer, kreiraćemo novi virtuelni uređaj sa parametrima kao na slici 25. Nakon unosa vrednosti parametara, kliknućemo na taster Create AVD, čime će novi Android virtuelni uređaj biti sačuvan.

31

Page 32: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 25. Kreiranje novog Android virtuelnog uređaja

2.6. Kreiranje nove Android aplikacije

Kreiranje nove Android aplikacije korišćenjem Eclipse razvojnog okruženja dosta je jednostavno. Nakon startovanja okruženja, potrebno je izabrati opciju New -> Other -> Android -> Android Application Project (Error: Reference source not foundSlika 26), a zatim kliknuti na taster Next.

32

Page 33: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 26. Kreiranje novog Android projekta

U narednih nekoliko koraka, od programera će se zahtevati unos odgovarajućih parametara vezanih za Android projekat.

Slika 27. Izbor imena projekta i platforme

Navedeni parametri su: Application Name – Proizvoljno ime aplikacije koju razvijamo. Project Name – Proizvoljan naziv novog Eclipse projekta. Package Name – Ime osnovnog Java paketa. Ukoliko se u sledećim koracima izabere

automatsko kreiranje nekih klasa, one će biti smeštene u ovom paketu. Minimum Required SDK – minimalna podržana verzija platforme. Što se izabere niža verzija,

aplikaciju će moći da koristi veći broj korisnika ali će manje naprednih opcija biti dostupno u razvoju aplikacije.

33

Page 34: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Target SDK – najviša podržana verzija platforme. Tipično se bira najveća dostupna verzija. Pošto stalno izlaze nove verzije platforme, aplikacija će raditi i na novijim verzijama, a ovaj izbor služi da se naglasi od koje verzije tek platforme mogu da primene eventualnu podršku za starije verzije (npr. ako izaberemo verziju 15, na njoj će aplikacija raditi u standardnom režimu, a ako poteramo istu aplikaciju na verziji 18 startovaće se podrška za verziju 15, ukoliko takva podrška postoji, tj. ako postoji značajna razlika između tih verzija)

Compile with – sa kojom verzijom platforme se vrši kompajliranje koda; tipično se bira ista kao u Target SDK ili barem prva verzija koja podržava sve željene funkcionalnosti.

Theme – Globalna tema koja će biti korišćena u aplikaciji.

Sledeći korak daje opcije u vezi sa automatskim generisanjem koda i njegovim pozicioniranjem u workspace-u.

Slika 28. . Generisanje koda i lokacija projekta

Ako je opcija Create custom launcher icon čekirana, na sledećem ekranu će biti ponuđen izbor ikonice za pokretanje aplikacije. Opcija Create activity će kreirati početnu aktivnost (ekran) aplikacije.

Slika 29. Izbor ikonice aplikacije

34

Page 35: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Na sledećem ekranu se bira početni izgled generisane aktivnosti. Za početak biramo opciju Blank Activity kako bismo dobili praznu aktivnost sa tekstom “Hello World”.

Slika 30. Izbor početnog izgleda generisane aktivnosti

Poslednji korak je podešavanje kreirane početne aktivnosti. Ovde se bira ime klase aktivnosti, ime njenog standardnog layot fajla (fajla koji određuje raspored elemenata), i evenutalni metod navigacije koji treba primeniti. Ovde ostavljamo ponuđene vrednosti i klikćemo na finish.

Slika 31. Podešavanje početne aktivnosti

Ovime je kreiran novi Android projekat. Kreiranjem novog Android projekta, generišu se određeni 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 biće više reči u narednom poglavlju.

35

Page 36: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

U sledećoj tabeli prikazana je organizacija strukture Android projekta po folderima:

Folder Opis

src/ Sadrži fajlove sa izvornim kodom. U ovom folderu se nalaze sve kreirane aktivnosti (u okviru odgovarajućeg paketa).

bin/ Ovde se nalaze kompajlovani fajlovi projekta, kao što su konačni apk fajlovi (varijanta jar fajla za instalaciju na Android uređaju).

jni/ Sadrži izvorni kod razvijen korišćenjem alata Android NDK (Native Development Kit). Ukoliko se ne koristi NDK, ovaj folder ne postoji.

gen/ Sadrži generisane fajlove, čiji sadržaj ne treba ručno menjati.

assets/ Ovde se nalaze dodatni materijali koji se koriste u projektu. Na primer, to mogu da budu podaci koje koristi aplikacija. Na početku 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 korisničkog interfejsa i sl.

libs/ Ovde se čuvaju dodatne biblioteke koje se koriste u projektu.Tabela 1. Organizacija strukture Android projekta

U korenom folderu projekta, osim fajla AndroidManifest.xml nalazi se i fajl default.properties, koji sadrži opšta podešavanja projekta, kao što je verzija Android API-a koju aplikacija koristi.

2.7. Fajl AndroidManifest.xml

Svaka aplikacija mora da poseduje svoj AndroidManifest.xml fajl u korenom folderu projekta. Naziv manifest fajla mora da bude AndroidManifest.xml. Manifest sadrži neophodne informacije o aplikaciji i o Android sistemu. Ove informacije sistem mora da poseduje pre početka izvršavanja aplikacije. Neke od funkcija manifest fajla su:

Sadrži 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 sadržaja. Dakle, manifest fajl sadrži nazive klasa u kojima su opisane komponente aplikacije. Na primer, aplikacija se neće startovati ukoliko u manifest fajlu nije navedena njena početna aktivnost, čak ni u slučaju da fajl sa Java izvornim kodom te aktivnosti postoji.

Određuje koji procesi će biti domaćini komponentama aplikacije. Definiše koje privilegije (permissions) aplikacija mora da poseduje da bi mogla nesmetano da

funkcioniše. Takođe definiše koje privilegije moraju druge aplikacije da poseduju da bi mogle da koriste

komponente aplikacije. Definiše minimalnu verziju Android API-a koji zahteva aplikacija. Definiše listu biblioteka koje aplikacija koristi

Izuzetno je bitno pravilno konfigurisati manifest fajl, zato što u protivnom aplikacija neće dobro funkcionisati. Ispod je prikazan izgled jednog manifest fajla.

AndroidManifest.xml - primer<?xml version="1.0" encoding="utf-8"?>

<manifest>

<uses-permission /><permission />

36

Page 37: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

<permission-tree /><permission-group /><instrumentation /><uses-sdk /><uses-configuration /><uses-feature /><supports-screens /><compatible-screens /><supports-gl-texture />

<application>

<activity><intent-filter><action /><category /><data /></intent-filter><meta-data /></activity>

<activity-alias><intent-filter> . . . </intent-filter><meta-data /></activity-alias>

<service><intent-filter> . . . </intent-filter><meta-data/></service>

<receiver><intent-filter> . . . </intent-filter><meta-data /></receiver>

<provider><grant-uri-permission /><meta-data /></provider>

<uses-library />

</application>

</manifest>

U primeru 2.1 prikazani su osnovni elementi datoteke AndroidManifest.xml, a to su: <action> – opisuje akciju dodeljenu <intent-filter> elementu. Obavezan deo

<intent-filter> polja. Ukoliko se ne definiše, Intent objekti ne prolaze kroz filter. <activity> – obavezni deklarišući element za svaku aktivnost aplikacije.Podržava

podelemente<intent-filter> kojima se specificiraju pojedine namere aktivnosti. Pokretanje aktivnosti koja nije definisana u AndroidManifest.xml datoteci rezultuje pojavom greške pri izvođenju (eng. runtime error).

<activity-alias> – zamenska aktivnost. Ciljanu aktivnost predstavlja kao nezavisni entitet sa sopstvenim skupom filtera namera koji umesto definisanja namera za direktno pokretanje ciljane aktivnosti određuju namere koji je pokreću preko zamenske aktivnosti.

37

Page 38: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

<application>– koreni element sa opisom dubine stabla koga čine komponente paketa. Takođe može da sadrži globalne i/ili unapred zadate atribute aplikacije, kao što su tema, ikona, dozvole itd. Manifest fajl može da sadrži samo jedan element ove vrste.

<category>– vrsta kategorije Intent filtera. Sadržan u bloku <intent-filter>. <data>– određuje vrstu podatka Intent filtera. To mogu biti opcioni, ali međusobno zavisni

atributi MIME ili URI. Sadržan u bloku <intent-filter>. <grant-uri-permission>– određuje garantovane dozvole podskupova podataka

pružaoca sadržaja. Sadržan u bloku <provider>. <instrumentation>– deklariše koje su instrumentacione komponente raspoložive za

testiranje funkcionalnosti paketa. Sadržan u bloku <manifest>. <intent-filter>– određuje vrstu namere na koju reaguju aktivnost, usluga iliBroadcast

Receiver. Sadržan u blokovima <activity>, <activity-alias>,<service> i <receiver>.

<manifest>– definiše komponente, bezbednosne postavke i klase za testiranje koje čine aplikaciju. Ovo je osnovni element AndroidManifest.xml fajla.

<meta-data>– par ime-vrednost dodatnih metapodataka koji mogu biti isporučeni roditeljskoj komponenti. Sadržan u blokovima <activity>, <activity-alias>, <service> i <receiver>.

<permission>– deklariše bezbednosne dozvole nad komponentama kojima pristupaju druge aplikacije.

<permission-group>– određuje grupu povezanih dozvola. <permission-tree>– određuje stablo dozvola. <provider>– definiše pružaoca sadržaja. Sadržan u <application>. <receiver>– definiše Broadcast Reciever koji omogućava prihvatanje namera i u slučaju

kada aplikacija i njene komponente nisu pokrenute. <service>– definiše usluge. Sadržan u <application> bloku, a može da sadrži<intent-

filter> i <meta-data>. <uses-library>– definiše biblioteku sa kojom aplikacija mora biti povezana.Sadržan u

<application> bloku. <uses-permission>– deo bezbednosnog modela koji sadrži bezbednosne dozvole

dodeljene od strane korisnika, a odnose se na funkcije aplikacije. Dozvole se definišu prilikom instaliranja aplikacije.

<uses-sdk>– definiše nivo Android API-ja na kojima se može izvršavati aplikacija.

Dozvole se definišu zbog hardverski ograničenog pristupa memoriji jednog procesa od strane drugog, te zato što je svakoj aplikaciji dodeljen specifični ID korisnika. Neke od najčešće korišćenih dozvola su:

INTERNET– pristup Internetu. READ_CONTACTS–dozvola za čitanje podataka kontakata. WRITE_CONTACTS– dozvola za pisanje podataka kontakata. RECEIVE_SMS– nadzor pristigle SMS poruke. ACCESS_COARSE_LOCATION– grubo bežično lociranje ili lociranje preko bazne stanice. ACCESS_FINE_LOCATION– finije lociranje korišćenjem npr GPS-a.

FajlAndroidManifest.xmlmože ručno da se uređuje, pisanjem XML koda ili može da se koristi ugrađeni uređivač koji dolazi kao deo ADT-a.

38

Page 39: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

3. Aktivnosti i klasa Activity

Aktivnost (Activity) predstavlja komponentu aplikacije koja se uglavnom može poistovetiti s jednim konkretnim prozorom aplikacije u kojem je korisnik u mogućnosti da izvrši određenu radnju. Na primer, aktivnost služi da bi korisniku mobilnog telefona omogućila pozivanje određenog broja, slikanje fotografije korišćenjem ugrađene kamere, slanje e-mail poruke, pregled mape i dr. Aplikacija može da sadrži jednu ili više definisanih aktivnosti, pri čemu je jedna od aktivnosti uvek definisana kao primarna aktivnost. Prelaz između aktivnosti odvija se tako što aktuelna aktivnost poziva novu. Iako više aktivnosti čini jedan kompaktan korisnički interfejs, treba imati na umu da su one međusobno nezavisne. Svaka aktivnost implementira se kao zasebna klasa koja nasleđuje klasu Activity, pa je sama odgovorna za čuvanje svog stanja u životnom ciklusu aplikacije.

Klasa aktivnosti je glavni deo svake Android aplikacije. Programer veći 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 označene u manifest fajlu da se pokrenu pri određenim okolnostima. Ovim sekundarnim ulaznim tačkama se upravlja pomoću Android manifest fajla određenim filterima.

Aplikacije mogu biti prekinute zbog raznih događaja višeg prioriteta, kao što je telefonski poziv. U jednom trenutku može postojati samo jedna aktivna aplikacija. Android aplikacije su odgovorne za upravljanje njihovim stanjem, kao i njihovom memorijom, resursima i podacima. Android operativni sistem može isključiti aktivnost koja je na pauzi, stopirana ili uništena kada je memorija slaba. Ovo znači da svaka aktivnost koja nije u prvom planu mora biti isključena. Drugim rečima, Android aplikacija mora održavati stanje i biti spremna da bude prekinuta ili čak isključena u svakom trenutku.

3.1. Životni ciklus aktivnosti

Životnim ciklusom aktivnosti jedne Android aplikacije upravlja se implementacijom odgovarajućih metoda. Svaka aktivnost ima tri osnovna stanja:

Resumed (Running)o Aktivnost je pokrenuta i fokusirana.

Pausedo Druga aktivnost je pokrenuta i fokusirana (u prvom planu), ali je tekuća aktivnost i

dalje pokrenuta i vidljiva. Na primer, druga aktivnost je u prvom planu, dok je tekuća aktivnost vidljiva, ali ne zauzima ceo ekran. Aktivnost čije je stanje paused je potpuno „živa“ (objekat klase Activity se nalazi u memoriji, zadržava sva stanja i ostaje u window manager-u), međutim ova aktivnost može da bude „ubijena“ u slučaju niske slobodne memorije.

Stoppedo 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 više ne nalazi u okviru window manager-a. Ovu aktivnost više ne vidi korisnik i u slučaju potrebe za memorijom sistem može da je „ubije“.

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

39

Page 40: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Životni ciklus aktivnosti započinje metodom onCreate(), a završava se zajedno sa metodom onDestroy(). U okviru metode onCreate(), programer bi trebalo da definiše izgled i globalno stanje aktivnosti, kao što je raspored elemenata korisničkog interfejsa. Implementacijom metode onDestroy() trebalo bi osloboditi korišćene resurse. Na primer, ukoliko vaša 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) između poziva metoda onStart() i onStop(). Dok je aktivnost vidljiva, korisnik je vidi na ekranu i može da vrši interakciju sa njom (npr. da unosi podatke). Metoda onStop() se poziva kada se startuje nova aktivnost, a tekuća aktivnost više nije vidljiva.

Aktivnost je fokusirana (u prvom planu) između poziva metoda onResume() i onPause(). Tada se ta aktivnost nalazi ispred svih ostalih aktivnosti. Aktivnost može često da prelazi iz prvog plana u pozadinu i obrnuto. Na primer, metoda onPause() se poziva kada uređaj pređe u stanje mirovanja (sleep).

40

Page 41: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 32. Životni ciklus aktivnosti

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

Metoda OpisMože da se

„ubije“ posle?

Sledeća 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 prosleđuje se objekat tipa Bundle koji sadrži prethodno stanje aktivnosti.

Ne onStart()

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

onStart() Poziva se neposredno pre nego što aktivnost postane vidljiva korisniku. Metoda koja se poziva posle ove može da bude onResume() u slučaju da aktivnost prelazi u prvi plan, ili onStop() u slučaju da postaje

Ne onResume()ilionStop()

41

Page 42: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

sakrivena.

onResume()Poziva se neposredno pre nego što aktivnost započne interakciju sa korisnikom. Ne onPause()

onPause()

Poziva se neposredno pre nego što sistem nastavi izvršavanje druge aktivnosti. Ova metoda se obično koristi da sačuva podatke, zaustavi animacije i prekine sa izvršavanjem procesa koji koriste procesorsko vreme. Ova metoda se mora izvršiti što je brže moguće, zato što sledeća aktivnost neće biti nastavljena dok se ova metoda završi. Metoda koja se poziva posle ove može da bude onResume() u slučaju da aktivnost prelazi u prvi plan, ili onStop() u slučaju da postaje sakrivena.

DaonResume()ilionStop()

onStop()

Poziva se kada korisnik više ne vidi aktivnost. Ovo se može dogoditi kada je u toku uništavanje aktivnosti ili zbog nastavljanja izvršavanja neke druge aktivnosti. Metoda koja se poziva posle ove može da bude onRestart() ukoliko je potrebna ponovna interakcija aktivnosti i korisnika ili onDestroy() u slučaju da aktivnost više nije potrebna.

DaonRestart()ilionDestroy()

onDestroy()

Poziva se neposredno pre uništavanja aktivnosti. Ovo je poslednji poziv koji će aktivnost da primi. Metoda onDestroy() može biti pozvana kada se završava sa izvršavanjem aktivnosti (neko je pozvao metodu finish()) ili zato što sistem privremeno uništava instancu aktivnosti da bi oslobodio prostor. Pomoću metode isFinishing() može se napraviti razlika između ova dva scenarija.

Da nema

Tabela 2. Fundamentalne metode životnog ciklusa

Kolona „Može da se „ubije“ posle?“ označava da li sistem sme da „ubije“ proces koji omogućava pokretanje aktivnosti bilo kada nakon završetka izvršavanja date metode. Naredni primer ilustruje korišćenje navedenih metoda:

MojaAktivnost.javapublic 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

42

Page 43: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

protected void onStop() { super.onStop(); // Aktivnost više nije vidljiva (sada je u stanju "stopped"). } @Override protected void onDestroy() { super.onDestroy(); // Aktivnost se uništava. }}

3.2. Kreiranje aktivnosti

Da bi se kreirala nova aktivnost u okviru Android aplikacije, kreira se nova klasa koja nasleđuje klasu Activity (ili njenu izvedenu klasu). U novokreiranoj klasi, neophodno je implementirati metode opisane u prethodnom poglavlju. Najvažnije je implementiranje metoda onCreate() i onPause().

Dakle, u okviru već kreiranog Android poglavlja potrebno je kreirati novu klasu. U okviru Package Explorera koji se najčešće nalazi sa leve strane u Eclipse razvojnom okruženju najpre treba izabrati folder src, a zatim kliknuti desnim tasterom miša na paket koji je kreiran zajedno sa Android projektom. U našem slučaju, to je net.myelab.android.mojaaplikacija (Slika 33).

Slika 33. Izbor paketa u okviru projekta

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

Slika 34. Izbor opcije za dodavanje novog fajla

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

43

Page 44: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 35. Izbor opcije za kreiranje nove klase

Sada će se pojaviti ekran prikazan na slici 36. Ovde je neophodno uneti odgovarajuća podešavanja, a to su:

Source folder – folder u kome se čuvaju izvorni fajlovi projekta. Obično 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 slučaju, to je net.myelab.android.mojaaplikacija.

Name – naziv klase. Ovde unosimo željeni naziv aktivnosti koju kreiramo. U našem slučaju, neka taj naziv bude Aktivnost.

Modifiers – modifikatori pristupa. Za aktivnost, ova vrednost bi trebalo da bude public. Superclass – nadređena klasa. Za aktivnost, to bi trebalo da bude android.app.Activity.

Slika 36. Podešavanja nove klase

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

44

Page 45: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

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); }

Jedini ulazni parametar ove metode je objekat tipa Bundle koji predstavlja neko prethodno stanje aktivnosti ukoliko je aktivnost bila ranije pokrenuta. Na početku se poziva metoda onCreate() nadređene klase (klasa Activity), kojoj se prosleđuje parametar tipa Bundle. Zatim se kreira novi pogled (View). Pogled u stvari predstavlja osnovnu jedinicu korisničkog interfejsa Android aplikacije. Android aktivnost može da koristi više različitih pogleda, a o njima će biti reči u narednom poglavlju. Tekstualni sadržaj se ubacuje korišćenjem metode setText().

Konačan izgled klase Aktivnost prikazan je u narednom primeru:

Aktivnost.javapackage 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); }

}

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:

AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="net.myelab.android.mojaaplikacija"android:versionCode="1"android:versionName="1.0">

<application android:icon="@drawable/icon"android:label="@string/app_name"><activity android:name=".Aktivnost"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>

</manifest>

45

Page 46: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Tag <activity>omogućava android aplikaciji da „zna“ da navedena klasa predstavlja aktivnost, s obzirom da je moguće koristiti i pomoćne klase. U okviru taga <intent-filter> definisano je koja aktivnost predstavlja početnu aktivnost u aplikaciji.

Sada je moguće startovati aplikaciju. Izborom opcije Run -> Run As -> Android Application startuje se aplikacija na odgovarajućem Android virtuelnom uređaju. Startovanje virtuelnog uređaja predstavlja dug proces koji može potrajati i više od 5 minuta.

Proces kreiranja Android virtuelnog uređaja opisan je u poglavlju 1.4. Ukoliko je napravljeno više Android virtuelnih uređaja, željeni uređaj je moguće izabrati pomoću opcije Run -> Run Configurations, a zatim je potrebno izabrati opciju Android Application -> Naziv Projekta, pa karticu Target (Error: Reference source not found 37).

Slika 37. Izbor Android virtuelnog uređaja

Ukoliko je fizički Android uređaj povezan sa računarom korišćenjem USB porta, izborom opcije Run neće doći do startovanja virtuelnog uređaja, već će se aplikacija instalirati na fizički uređaj i potom automatski startovati na njemu.

Uspešno startovana aplikacija na virtuelnom uređaju prikazana je na sledećoj slici:

46

Page 47: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Slika 38. Aplikacija na virtuelnom uređaju

47

Page 48: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

4. Resursi u Android aplikacijama

Sve android aplikacije sastoje se iz dva segmenta: funkcionalnost – predstavlja kod kako se aplikacija ponaša na neki zahtev. Ovde spadaju svi

algoritmi koji pokreću 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 definiše developer unutar fajlova Android projekta i tačno su određeni za neku aplikaciju. Resursi sistema su standardni resursi koje definiše Android platforma i dostupni su svim aplikacijama kroz Android SDK.

Resursi aplikacije se prave i čuvaju unutar Android projekta u /res direktorijumu. Koristeći 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. Takođe na njih se mogu odnositi resursi drugih resursa aplikacija.

Svaki put kad se sačuva fajl sa resursima u Eclipsu, R.java klasa fajl se ponovo sastavlja kako bi se ubacile nove izmene. Ako nije korišćen pravi direktorijum ili pravila o nazivu fajla, pojaviće se greška u kompajleru u prozoru Eclipse Problems.

Resursima aplikacije se može pristupiti programerski koristeći generisu klasu koja se zove R.java. Kako bi se dodala referenca na resurs, mora se doći do objekta resursa aplikacije koristeći klasu getResources() i tako napraviti odgovarajući 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 više aplikacija zbog običnog izgleda i osećaja.Na primer, klasa resursa Android sistema (android.R.string) sadrži stringove za reči kao što su OK, Cancel, Yes, No, Cut, Copy i Paste.

Sistemski resursi se čuvaju u android paketu. Postoje klase za svaki od većih tipova resursa. Na primer, klasa android.R.string sadrži string sistemskog resursa. Kako bi se dobio string sistemskog resursa za OK prvo se mora koristiti statičkia komanda klase Resursa getSystem() kako bi se doveo globalni sistemski objekat Resource. Onda se poziva komanda getString() sa odgovarajućim string imenom resursa.

4.1. Upravljanje i pristup resursima

U ovom poglavlju biće prikazano kako Android aplikacije skladište i pristupaju važnim resursima kao što su stringovi, grafika i ostali podaci. Takođe će biti prikazano kako da organizujete Android resurse u okviru projekta kako bi se na najlakši način mogla izvršiti lokalizacija i prilagođavanje aplikacija za različite konfiguracione uređaje. Kako bi se omogućila kompatabilnost sa različitim uređajima

48

Page 49: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

potrebno je resurse organizovati u folderima(direktorijumima) i podfolderima kako bi se svaki deo android aplikacije mogao održavati nezavisno od ostalih delova aplikacije.

Podrazumevani stil prikazivanja aplikacije čuva se na putanji res/layout/ međutim možete podesiti u konfiguracionom fajlu da kada se aplikacija pokrene na neki uređaj koji ima drugačiju rezoluciju ekrana, npr koristi Landscape orijentaciju, da tada poziva funkcije za prikaz is foldera res/layout-land/ gde će na ovaj način sama aplikacija zavisno od rezolucije uređaja prikazati adekvatan sadržaj.

Slika 39. Različit prikaz za raličitu orijentaciju uređaja

Korišćenje resursa koristeći Eclipse razvojno okruženje sa dodatkom Android Asset Packaging Tool je veoma jednostavno, nije potrebno kompajlirati resurse, to će Eclipse sam uraditi, međutim ako koristite neko drugo razvojno okuženje potrebno je sve resurse komplajlirati iz komandne linije ili pak možete napisati skriptu koja će to uraditi, potom tu skriptu možete koristiti za sve vaše aplikacije.Definisanje podataka aplikacije kao resursa je dobra vežba programiranja. Grupisanje resursa aplikacije i njihovo spajanje u paket aplikacije ima sledeće koristi:

Kod je jasniji i lakši za čitanje, što dovodi do manje grešaka. Resursi su organizovani po tipovima i sigurno su jedinstveni Resursi su dobro smešteni za prilagođavanje telefonima

4.2. Tipovi resursa

Android aplikacije koriste veliki broj različitih tipova resursa kao što je tekst, grafika, šeme u boji za dizajn korisničkog interfejsa itd. Ovi resursi se nalaze u res/ direktorijumu vaše android aplikacije. Fajlovi resursa sačuvani u /res direktorijumu moraju da poštuju sledeća pravila:

Imena fajlova resursa moraju biti napisani malim slovima Imena fajlova resursa mogu sadržati samo slova, brojeve, donju crtu, i tačke Imena fajlova resursa (i XML atributi imena) moraju biti jedinstveni.

U narednoj tabeli prikazano je kako se čuvaju resursi koje podržava Android SDK.

Tip resursa Potreban direktorijum Naziv XML tagStrings /res/values/ strings.xml <string>Niz stringova /res/values/ strings.xml <string-array>, <item>Boolenas /res/values/ bools.xml <bool>Colors /res/values/ Colors.xml <color>Dimensions /res/values/ Dimens.xml <dimen>Integers /res/values/ integers.xml <integer>Mešovit niz /res/values/ Arrays.xml <array>, <item>Jednostavni elementi(Drawables)

/res/values/ drawables.xml <drawable>

Graphics(slike)

/res/drawable/ Icon.png, logo,jpg itd

Meni /res/menu/ Primer: <menu>

49

Page 50: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

mainmenu.xmlhelpmenu.xml

XML fajlovi /res/xml/Izgled(Layouts)

/res/layout/ main.xml

Stilovi i teme /res/values/ styles.xmlthemes.xml

<style>

Animacija /res/drawable/ Primer.sekvenca1.xmlsekvenca2.xml

<animation-list>, <item>

Tabela 3. Kako organizovati resurse u Android projektu

4.3. Rad sa resursima

U ovom delu biće prikazano kako možete upravljati resursima u vašoj Android aplikaciji, koji formati su podržani i u kom formatu se čuvaju. Neke vrste resursa kao što su tekst, boja itd. su veoma dobro podržane od strane Eclipse editora i Android Plug-in Resource Editor, dok drugi kao što su animirane sekvence, nisu i sa njima je lakše raditi direktno editovanjem u XML datotekama.

4.3.1. Rad sa stringovima

String resursi su najjednostavniji tip resursa sa kojima može da radi Developer. Stringove možete promeniti ili dodati editovanjem xml datoteke strings.xml. String se cuva u okviru taga <string>. U prilogu sledi primer kako izgleda strings.xml

strings.xml<resources><string name=”naziv_aplikacije”>Moja prva aplikacija</string><string name=”test_string”>Test 1,2,3</string><string name=”test_string2”>Test 4,5,6</string><string name=”formatiran_text”><b>Bold</b>,<i>Italic</i>,<u>Line</u></string></resources>

U narednoj liniji koda prikazano je kako možete određenom 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 podržava rad sa nizom stringova. Ovo je veoma pogodno kada želite da u nekoj padajućoj listi prikažete više opcija. Niz stringova se u XML fajlu definiše na putanji rez/values/ i kompajlira se u trenutku izvršavanja aplikacije. Niz stringova u XML-u se čuva u okviru tagova <string-array> i tagom za predstavljanje elemenata niza <item>. U nastavku možete videti kako se u xml fajlu na putanji res/values/arrays.xml čuva niz stringova:

arrays.xml<?xml version=”1.0” encoding=”utf-8”?><resources><string-array name=”predmeti”>

50

Page 51: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

<item>Elektronsko poslovanje</item> <item>Internet tehnologije</item> <item>Mobilno poslovanje</item></string-array><string-array name=”Predavaci”> <item>Marijana Zrakic Despotovic</item> <item>Bozidar Radenkovic</item></string-array></resources>

Pristup resursima je veoma jednostavno, u konkretnom primeru pristup resursu predmeti radimo na sledeći način:

String[] predmeti = getResources().getStringArray(R.array.predmeti);

4.3.3. Rad sa Boolean i Integer resursima

Boolean vrednosti se čuvaju na putanji rez/values/bools.xml. Ovako izgleda primer čuvanja Bool vrednosti:

bools.xml<resources><bool name=”podrzanSrpskiJezik”>true</bool><bool name=”podrzanIzborJezika”>false</bool></resources>

Kada se želi resursu pristupiti iz Android aplikacije to se radi na sledeći način:

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

Na sličan način 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.

nums.xml<resources><integer name=”sabirakA”>25</integer><integer name=”sabirakB”>3</integer></resources>

Pristup integer resursima iz Android alikacije izgleda ovako:

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

51

Page 52: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

4.3.4. Rad sa bojama

Android aplikacija u stanju je da skladišti vrednosti RGB boje, što automatski obezbeđuje da se te boje primene i na druge elemente ekrana. Vrednosti koje se čuvaju, mogu se iskoristiti za podešavanje boje teksta ili pozadine ekrana apliakcije. Vrednosti za boje čuvaju se u XML fajlu na putanji rez/values/colors.xml.

Android podržavaja rad sa sledećim 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 skladištenja boja:

colors.xml<resources><color name=”background_color”>#006400</color><color name=”text_color”>#FFE4C4</color></resources>

Sledeća linija koda vraća vrednost određene boje:

colors.xmlint 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 sačuvati u /res/drawable direktorijumu projekta. Ovi tipovi resursa se onda sastavljaju u paket aplikacije i dostupne su aplikaciji. Najčešći resursi koji se crtaju su bitmap slike, kao što su PNG i JPG fajlovi. Ovi fajlovi se često koriste kao ikonice aplikacije i slike dugmića ali se mogu koristiti i za veliki broj komponenti korisničkog interfejsa.

Resursi slika su u klasi BitmapDrawable. Kako bi se pristupilo grafičkom resursu koji se zove /res/drawable/logo.png, treba se koristiti komanda getDrawable(), po sledećem redosledu:

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

Većinu vremena, međutim, grafika ne mora da se otvara direktno. Umesto toga, može se koristiti identifikator resursa kao atribut za kontrolu kao što je kontrola ImageView.

<ImageView android:id="@+id/LogoImageView " android:src="@drawable/logo" android:layout_width="wrap_content" android:layout_height="wrap_content" />

52

Page 53: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Sledeći 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);

Takođe se može kreirati specijalni XML fajl kako bi se opisale druge Drawable podklase, kao što je ShapeDrawable. Može 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 podržava rad sa menijima, meni se kao i ostali resursi skladište u direktorijumu rez/menu/. Svaki resurs menija, koji predstavlja skup pojedinačnih stavki menija, se skladipti kao posebno formatirana XML datoteka i kompajliraju se u vreme izvršavanja aplikacije. U nastavku sledi prikaz jednostavnog menija koji je skladišten u rez/menu/speed.xml koji predstavlja meni jedne proste aplikacije :

speed.xml<menu xmlns:android = ”http://schemas.android.com/apk/res/android”><itemandroid:id=”@+id/start”android:title=”Startuj aplikaciju!”android:orderInCategory=”1”></item><itemandroid:id=”@+id/stop”android:title=”Stopiraj aplikaciju!”android:orderInCategory=”4”></item><itemandroid:id=”@+id/ubrzaj”android:title=”Ubrzaj aplikaciju!”android:orderInCategory=”2”></item><itemandroid:id=”@+id/uspori”android:title=”Uspori aplikaciju!”android:orderInCategory=”3”></item></menu>

Meni se može kreirati i korišćenjem Eclipse dodatka koji može pristupati konfiguracionim atributima za svaku stavku menija. U predhodnom primeru smo direktno u xml fali postavili naziv stavke menija, inače ti stringovi se takođe mogu izdvojiti iz tog fajla i kasnije lokalizovati na više jezika. Primer menija gde su definisani samo nazivi resursa, gde se vrednost resursa uzima kasnije iz konkretnog xml fajla.

meni.xml<menu xmlns:android=“http://schemas.android.com/apk/res/android”><itemandroid:id=”@+id/start”android:title=”@string/start”android:orderInCategory=”1”></item><itemandroid:id=”@+id/stop”android:title=”@string/stop”android:orderInCategory=”2”></item></menu>

53

Page 54: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Da bi se koristio predhodno napisan meni potrebno je u aplkaciji pozvati resurs koji je skladišten na putanji rez/menu/speed.xml tako što se overajduje metoda nadređene 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 dobiće se meni koji je gore definisan. Postoji veliki broj atributa koji se može dodeliti nekoj stavki menija, spisak svih stavki možete pogledati u zvaničnoj dokumentaciji za Android SDK http://d.android.com/guide/topics/resources/menu-resource.html.

4.3.7. Rad sa fajlovima

Kao dodatak stringu, grafici i layout resursima, Android projekti mogu sadržati fajlove kao resurse. Ovi fajlovi mogu biti u bilo kom formatu. Međutim, neki formati su pogodniji nego drugi.

XML fajl format je dobro podržan na Android platformi. Proizvoljni XML fajlovi mogu biti uključeni kao resursi. Ovi XML fajlovi se čuvaju u /res/xml direktorijumu. XML fajlovi su preferirani format za bilo koje strukturisane podatke koje aplikacija traži. Kako se formatira XML fajl zavisi od developera. Različiti XML alati su dostupni za Android platformu.

Primer xml fajla:

<?xml version=”1.0” encoding=”utf-8”?><predmeti><predmet name=”Mobilno poslovanje” type=”izborni” /><predmet name=”Elektronsko poslovanje” type=”obavezan” /><predmet name=”ITEH” type=”izborni” /></predmeti>

XML resursu iz aplikacije može se pristupiti na sledeći način:

XmlResourceParser mojiPredmeti = getResources().getXml(R.xml.mojiPredmeti);

Aplikacija može sadržati .raw fajlove kao resurse. Raw fajlovi koje aplikacija može koristiti sadrži audio, video i druge fajlove. Svi raw fajlovi resursa bi trebali biti sačuvani u /res/raw direktorijum.

Nema pravila ili ograničenja 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 podržani za traženi mobilni telefon. Isto važi i za bilo koji drugi format koji treba da se ubaci u resurse aplikacije.Ako format fajla koji treba da se koristi nije podržan u početnom Android sistemu, aplikacija će možda zatražiti da sama odradi proveru fajlova.

Da bi se pristupilo raw fajlu programerski, jednostavno treba koristiti komandu openRawResource(). Na primer, sledeći kod bi napravio InputStream objekat da bi pristupio resurs fajlu /res/raw/file1.txt:

InputStream iFile = getResources().openRawResource(R.raw.file1);

54

Page 55: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

4.3.8. Rad sa rasporedom (Layout)

Većina korisničkih interfejsa Android aplikacija se definišu koristeći 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 definišu ceo ekran i povezani su sa određenom aktivnošću, ali i ne moraju da budu. Resursi rasporeda takođe mogu definisati deo ekrana i mogu biti deo nekog drugog rasporeda.

layout_main.xml<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”android:orientation=”vertical”android:layout_width=”fill_parent”android:layout_height=”fill_parent”><TextViewandroid:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”@string/hello” /></LinearLayout>

Ovo je običan raspored, koji se zove main.xml, koji se pravi sa svakom Android aplikacijom. Ovaj layout file opisuje korisnički interfejs jedine aktivnosti u aplikaciji. Sadrži kontrolu LinearLayout koja se koristi kao skup za sve druge kontrole korisničkog interfejsa. U ovom slučaju to je kontrola TextView.

Main.xml layout fajl sadrži i druge resurse: string resurs @string/hello, koji je definisan u strings.xml resurs fajlu koji sadrži tekst Moja prva Android aplikacija!

Nakon pokretanja aplikacije, izgled ekrana je sledeći:

Slika 40. Prikaz pokrenute Android aplikacije

55

Page 56: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Postoje dva načina da se formiraju resursi rasporeda. Najjednostavniji način je da se koristi Layout Resource Editor u Eclipsu da bi se dizajnirali layout fajlovi. Takođe se mogu direktno menjati XML layout fajlovi.

4.3.9. Rad sa stilovima

Korisnički interfejs Android aplikacije, dizajneri mogu uređivati korišćenjem stilova. Kontrola rasporeda elemenata izvedena je iz View klase, koja ima veliki broj korisnih osobina.

Stilovi se označavaju tagom <style> koji su smešteni u direktorijum rez/values/ . Stilovi se takođe definišu u XML fajlu a potom se kompajliraju u vreme izvršavanja aplikacije. Stilovi se ne mogu pregledavati korišćenjem Eclipse Resource designer-a ali se ispravno prikazuju na emulatoru kao i na samom uređaju.

U nastavku sledi jednostavan primer kako se koriste stilovi koji su smešteni 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 biće predstavljena crvenom bojom i veličinom slova 14p koja će biti boldovana, dok opciona plja biće predstavljena belom bojom, iskošena i veličina 12p.

styles.xml<resources><style name=”obavezna_polja_style”><item name=”android:textColor”>#e4101a</item><item name=”android:textSize”>14pt</item><item name=”android:textStyle”>bold</item></style><style name=”opciona_polja_style”><item name=”android:textColor”>#FFFFFF</item><item name=”android:textSize”>12pt</item><item name=”android:textStyle”>italic</item></style></resources>

4.3.10. Rad sa temama

Tema predstavlja skup stilova koji se primenjuju na sve elementu neke aktivnosti. Teme se definišu na isti način kao i stilovi, koristi se tag <style> koji se čuva u rez/values/ direktorijumu. Jedina razlika što temu od stilova izdvaja jeste to što tema mora de se definiše kao atribut aktivnosti u AndroidManifest.xml fajlu.

<application android:theme="@style/CustomTheme"><activity android:theme="@style/CustomTheme">

4.4. Referenciranje sistemskih resursa

Sistemski resursi se koriste na isti način kao i resursi same aplikacije. Android paket sadrži sve vrste resursa, koje možete pretraživati u android.R podklasu.

U ovoj podklasi mogu se naći sledeći sistemski resursi za: Animiranje sekvence ka unutra ili ka spolja Liste imejlova, telefona itd.

56

Page 57: Android Skripta Prvi Cas

Razvoj aplikacija za operativni sistem Android

Standardni sistem boja, Dimenzije i primenu slika i ikona, Sistem stilova i tema, Poruke o greškama, Kreiranje rasporeda elemenata kao i crtanje jednostavnih elemenata.

Referncijaranje sistemskih resursa je na isti načina 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 način kako se pristupa resursima aplikacije.

57