SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 929 RAZVOJ PROGRAMA ZA DOHVAT I PREZENTACIJU INFORMACIJA NA POKRETNOM UREĐAJU S OPERACIJSKIM SUSTAVOM ANDROID Matko Kuna Zagreb, lipanj 2009.
SVEUILITE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAUNARSTVA
ZAVRNI RAD br. 929
RAZVOJ PROGRAMA ZA DOHVAT I
PREZENTACIJU INFORMACIJA NA
POKRETNOM UREAJU S OPERACIJSKIM
SUSTAVOM ANDROID
Matko Kuna
Zagreb, lipanj 2009.
Sadraj
Uvod ....................................................................................................................................... 1
1. Operacijski sustav Android ............................................................................................ 2
1.1. Osnovne znaajke .................................................................................................. 2
1.1.1. Arhitektura ..................................................................................................... 3
1.2. Struktura aplikacije u Androidu ............................................................................. 5
1.2.1. Activity .......................................................................................................... 6
1.2.2. Service ........................................................................................................... 6
1.2.3. Broadcast receiver .......................................................................................... 7
1.2.4. Content provider ............................................................................................ 7
1.2.5. Datoteka manifest .......................................................................................... 8
1.2.6. Aktivacijska komponenta Intent ................................................................. 8
1.2.7. ivotni ciklus activityja ................................................................................. 9
1.3. Razvoj aplikacije u Androidu .............................................................................. 11
1.3.1. Openito o korisnikom suelju .................................................................. 12
1.3.2. Izgledi .......................................................................................................... 13
1.3.3. Izbornici ....................................................................................................... 14
1.3.4. Dijalozi ......................................................................................................... 15
1.3.5. Obavjetavanje korisnika ............................................................................. 16
2. Sportska prognoza za Android ..................................................................................... 18
2.1. Opis sustava ......................................................................................................... 19
2.1.1. Dijagram sluajeva uporabe ......................................................................... 20
2.1.2. Komunikacija meu komponentama ........................................................... 21
2.1.3. Programska izvedba posluiteljske aplikacije ............................................. 22
2.1.4. Baza podataka .............................................................................................. 24
2.1.5. Aplikacija za rukovanje bazom podataka .................................................... 25
2.2. Sportska prognoza LIVE ..................................................................................... 26
2.2.1. Korisniko suelje ........................................................................................ 29
2.2.2. Programska izvedba ..................................................................................... 32
Zakljuak ............................................................................................................................. 34
Literatura .............................................................................................................................. 35
Saetak ................................................................................................................................. 36
Kljuni pojmovi ................................................................................................................... 36
1
Uvod
Operacijski sustav Android je jo uvijek novost u svijetu pokretnih ureaja. Konkurencija
je drugim operacijskim sustavima za pametne pokretne ureaje kao to su Appleov iPhone
OS te razne izvedenice Windows Mobilea i Symbiana. Android karakterizira otvorena
arhitektura sa specifinim odnosom izmeu aplikacija i prikaza na ekranu te mogunost da
se promijeni i svaka uobiajena aplikacija koja dolazi s operacijskim sustavom, to govori
dovoljno o fleksibilnosti koju prua.
Praktini dio ovog zavrnog rada je aplikacija za Android, no prije svega treba se dobro
upoznati s njegovim nainom funkcioniranja i strukturom aplikacije kako bi se mogle
demonstrirati njegove mogunosti.
Aplikacija predstavlja nadogradnju Java aplikacije za pokretne ureaje izraene na
studentskom projektu, no s njom, osim u osnovnom konceptu, nema mnogo dodirnih
toaka. Radi se o sustavu koji omoguuje sudjelovanje u igrama na sreu putem pokretnog
ureaja, s tim da se sva komunikacija odvija putem beinog internetskog prijenosa
podataka. Korisniku aplikacije omoguena je uplata kladionikog listia sa svog osobnog
pokretnog ureaja, kreiranje nedovrenog listia, pregled starih uplata, definiranje postavki
praenja pojedinih dogaaja koje ukljuuju slanje obavijesti korisniku o novim dogaajima
ili ishodima zavrenih dogaaja i prikaz ponuenih dogaaja razvrstanih po sportovima i
zemljama odigravanja na zahtjev, pri emu se vodi briga o korisnikovoj privatnosti i
sigurnosti.
Sve navedeno prilagoeno je operacijskom sustavu Android posebnostima vezanim uz
prikaz dijelova aplikacija te njihovu komunikaciju i pokretanje. Cilj svega ovoga je
predstaviti Android kao platformu koja podrava kreativnost i inovativnost programera i
koja e biti laka za koritenje i zabavna kako za programera tako i za korisnika.
Rad se bavi prouavanjem operacijskog sustava Android i naina izrade aplikacija za njega
te izradom sustava za sudjelovanje u igrama na sreu ukljuujui i korisniku aplikaciju za
Android.
Prvo poglavlje opisuje posebnosti ovog operacijskog sustava, dok su u drugom opisani
izraeni sustav i aplikacija.
2
1. Operacijski sustav Android
Tvrtka Google izradila je operacijski sustav Android, a Open Handset Alliance izdao je
Android alat za izradu softvera (engl. Software Development Kit, skraeno SDK) 12.
studenog 2007. i zanimanje za njega neprestano raste. To je programski sloaj koji
ukljuuje operacijski sustav, middleware i kljune aplikacije. SDK sadri alate i suelja za
programiranje aplikacija (engl. Application Programming Interface, skraeno API) koji su
potrebni za razvoj aplikacija na Android platformi koristei programski jezik Java.
1.1. Osnovne znaajke
Android je zamiljen kao operacijski sustav koji e u potpunosti i na najefikasniji nain
iskoristit sve resurse i mogunosti koje mu prua ureaj na kojemu je instaliran. Dizajniran
je otvoreno, pa tako svaka aplikacija moe koristiti sve osnovne funkcionalnosti ureaja
kao to su ostvarivanje poziva, slanje tekstualnih poruka ili, primjerice, koritenje
ugraenog fotoaparata. Programer aplikacija moe izmijeniti cijeli operacijski sustav u
tolikoj mjeri da isti vie nema veze s uobiajenim.
Osnova mu je Linux jezgra (engl. kernel) koja koristi specifini virtualni stroj dizajniran
kako bi optimizirao koritenje memorije i hardverskih resursa ureaja koji ga pokree.
Prednosti toga to je programeru sve dostupno je i to to se nove nadolazee tehnologije
mogu lako implementirati.
Virtualni stroj sustava zove se Dalvik Virtual Machine i temeljen je na registru, za razliku
od Java Virtual Machinea (skraeno JVM) koji je temeljen na stogu. DalvikVM je
interpreter, a radi s Dalvik Executable (*.dex) podacima. Pokree klase kompilirane Java
kompilatorom koje se pretvaraju alatom dx u njemu potreban format. Sve to je
napravljeno s ciljem istovremenog izvoenja vie virtualnih strojeva koji koriste malo
memorije kako bi ouvali stabilnost sustava meusobno se tite kako aplikacija koja se
rui ne bi za sobom povukla druge. DalvikVM je temeljen na registru jer su procesori za
pokretne ureaje prilagoeni za registarski rad koji omoguava bre izvoenje aplikacija
po cijenu veliine programa koji su vei nakon kompilacije.
3
Sve aplikacije imaju jednaku vanost operacijski sustav ne pravi razliku izmeu
temeljnih aplikacija i onih instaliranih naknadno. Ta znaajka pogoduje korisniku jer moe
organizirati sustav po vlastitim eljama. Komunikacija u sustavu temelji se na takozvanim
intentima, porukama na koje se reagira odreenom radnjom. Za svaku aplikaciju ili njen
dio, moe se definirati na koje poruke treba reagirati. Vie aplikacija moe reagirati na istu
poruku. U tom sluaju sustav pita korisnika koju aplikaciju eli da obradi dolazei intent.
Kako je svuda naglasak na jednostavnosti, ni izrada aplikacija za Android nije iznimka.
Programer moe jednostavno pristupiti svemu to treba, pa se multimedijske aplikacije
mogu napraviti lake nego za neke druge operacijske sustave. Aplikacije mogu dohvaati
podatke s Interneta te ih, primjerice, kombinirati s nekim podacima koje se nalaze na
pokretnom ureaju. Lako se moe pristupiti GPS prijemniku, kameri ili vanjskoj memoriji
za pohranu podataka, to e u skoroj budunosti biti olakavajua okolnost za razvoj
usluga temeljenih na lokaciji. Takoer je vana i podrka za razne video i audio formate te
formate slika koje dolaze s Androidom.
Sustav sadri jo i integrirani open source web preglednik, 2D i 3D grafike biblioteke s
podrkom za hardversku akceleraciju, SQLite sustav za upravljanje i pohranu relacijskih
baza podataka. Upravlja GSM telefonijom, Bluetooth, EDGE, 3G i WiFi tehnologijama,
ugraenim fotoaparatom, GPS prijemnikom, akcelerometrom za automatsku rotaciju slike
sve ovisno o ureaju na kojem je instaliran.
1.1.1. Arhitektura
Komponente operacijskog sustava Android dijele se u pet cjelina, kao to je prikazano na
slici 1.1:
aplikacije,
aplikacijski okvir (engl. application framework),
biblioteke,
Android runtime,
Linux jezgra.
4
Sl. 1.1 Arhitektura operacijskog sustava Android
Aplikacije ini skup osnovnih aplikacija kao to su e-mail klijet, SMS program, kalendar,
Internet preglednik i druge. Sve aplikacije napisane su u programskom jeziku Java.
Arhitektura aplikacije je napravljena na nain da pojednostavi ponovnu upotrebu
komponenti. U aplikacijski okvir spadaju skup elemenata prikaza (engl. Views) koji se
koriste pri izradi aplikacije kao to su liste, gumbi, polja za unos teksta itd., zatim
pruatelji sadraja (engl. Content Providers) koji omoguuju aplikacijama pristup
podacima drugih aplikacija, upravitelj resursa (engl. Resource Manager) koji omoguuje
pristup ostalim resursima kao to su slike ili dokumenti koji odreuju izgled, upravitelj
obavijesti (engl. Notification Manager) koji prua aplikacijama mogunost prikaza
obavijesti u traci stanja, upravitelj aktivnosti (engl. Activity Manager) koji upravlja
ivotnim ciklusom aplikacije i brine se o navigacijskom stogu i drugi.
Biblioteke sadre skup C/C++ biblioteka koje koriste razne komponente operacijskog
sustava meu kojima su System C biblioteka, 3D biblioteke, SQLite i ostale.
U Android Runtime pripadaju osnovne biblioteke koje omoguuju veinu funkcionalnosti
osnovnih biblioteka programskog jezika Java. Svaka aplikacija se odvija u vlastitom
procesu i ima vlastitu instancu Dalvik virtualnog stroja koji se oslanja na Linux jezgru.
5
Android koristi Linux verziju 2.6 za osnovne usluge sustava kao to su sigurnost,
upravljanje memorijom i procesima, mreni stog i upravljaki programi. Jezgra ima i ulogu
apstraktnog sloja izmeu hardvera i softverskog stoga.
1.2. Struktura aplikacije u Androidu
Aplikacije za Android piu se u programskom jeziku Java. Kompilirani kd se arhivira u
Android package, oznaen .apk sufiksom, zajedno sa svim podacima i datotekama nunim
za aplikaciju. U takvom obliku se aplikacija distribuira i instalira na pokretne ureaje.
Svaka aplikacija radi u vlastitom Linux procesu koji Android pokree kada se treba izvriti
bilo koji dio koda aplikacije, a gasi ga kada vie nije potreban. Aplikacije se izvravaju
neovisno jedna o drugoj jer svaka koristi vlastiti virtualni stroj. Takoer, svaka ima svoj
Linux identifikator (ID). Ope postavke su takve da podatke iz aplikacije vidi jedino sama
aplikacija i korisnik koji je trenutno koristi. Mogue je promijeniti postavke tako da dvije
aplikacije dijele identifikator te tako mogu vidjeti i podatke druge aplikacije. U tom sluaju
moe se definirati da obje aplikacije rade u istom procesu kako bi se utedjeli resursi
sustava.
Vana znaajka Androida je da aplikacija moe koristiti elemente druge aplikacije (ako se
definiraju dozvole od strane prve aplikacije). Time se smanjuje potreba za pisanjem istih
dijelova u razliitim aplikacijama, jer je mogue pokrenuti samo dio aplikacije koji je
potreban drugoj. Android to omoguava na nain da ne postoji samo jedna toka ulaska za
svaku komponentu aplikacije ne postoji main() metoda, ve je svaka aplikacija
napravljena od osnovnih komponenti koje sustav moe instancirati i pokrenuti po potrebi.
Postoje etiri vrste takvih komponenti, to su:
Activity,
Service,
BroadcastReceiver,
ContentProvider.
Svaku aplikaciju koja se dizajnira za Android potrebno je razloiti na ove osnovne
elemente i definirati kada i kako se pojedini element pokree.
6
1.2.1. Activity
Activity predstavlja grafiko korisniko suelje, ekran koji korisnik u tom trenutku vidi. To
moe biti, primjerice, lista s koje korisnik neto treba odabrati, prikaz slika u albumu ili
ekran u kojem se namjetaju postavke neke aplikacije. Aplikacija za pisanje tekstualnih
poruka mogla bi imati jedan activity u kojem se pie poruka, drugi u kojem se prikazuju
kontakti iz imenika i trei za pregled poslanih poruka. Svaki od njih je nezavisan dio
aplikacije iako rade zajedno i dio su iste aplikacije. Svaki od njih je podklasa osnovne
klase Activity.
Koliko e aplikacija imati activityja ili bilo kojih drugih osnovnih komponenti i kako e
one suraivati, stvar je dizajna i namjene aplikacije. Obino aplikacija ima poetni activity
koji se prikazuje korisniku kada pokrene aplikaciju. Prelazak s jednog na drugi izvodi se
tako da trenutni activity pokrene onaj koji je potreban.
Pri izradi activityja svakom je dodijeljen njegov vlastiti prozor, koji je inicijalno postavljen
da pokrije cijeli ekran, no to se, naravno, moe promijeniti. Svaki activity moe koristiti
dodatne elemente prikaza kao to su primjerice pop-up prozori koji zahtijevaju korisnikovu
interakciju ili prozor u koje se prikau detaljnije informacije o elementu koji je korisnik
trenutno odabrao.
Vizualni sadraj prozora ima hijerarhijski organiziran sadraj elemenata prikaza koji su svi
izvedeni iz osnovne klase View. Svaki element pripada odreenom prostoru pravokutnog
oblika unutar prozora. Pojam hijerarhijski odnosi se na elemente prikaza, pa tako element
prikaza roditelj organizira i sadri izgled i raspored elemenata prikaza djece. Postoji skup
gotovih elemenata prikaza sadranih u Androidu kao to su gumbi, polja za unos teksta,
izbornici, check-boxovi i drugi. Hijerarhija tih elemenata organizira se metodom
Activity.setContentView().
1.2.2. Service
Komponenta service nema grafiko suelje nego radi u pozadini. Njen ivotni ciklus nije
ogranien trenutnim prikazom suelja na ekranu kao kod activityja, ona radi u
neodreenom vremenskom razdoblju. Koristi se za zadatke koji se mogu izvoditi u
pozadini, kao na primjer sviranje glazbe u pozadini dok korisnik radi neto drugo. Moe se
koristiti za dohvat podataka preko mree ili za izraun nekih podataka koje moe isporuiti
activityju koji ih treba. Svaki service je podklasa osnovne klase Service.
7
Dobar primjer je media player aplikacija, koja reproducira pjesme poredane u listu.
Aplikacija bi imala nekoliko activityja u kojima bi se mogle praviti liste, pokretati
reprodukcija i mijenjati postavke, no samu reprodukciju ne bi bilo pametno izvesti unutar
activityja jer se pretpostavlja da ih korisnik esto mijenja, a od takve aplikacije se oekuje
da se glazba moe nastaviti reproducirati i kada korisnik promijeni activity ili pokrene
neku drugu aplikaciju. To se moe izvesti tako da activity aplikacije pokrene service koji
se izvodi u pozadini. Kada korisnik napusti activity u kojemu je pokrenuo reprodukciju,
ona se nastavlja i dalje jer service jo uvijek radi. Mogue je povezati se s ve pokrenutim
serviceom. Za vrijeme te veze moe se s njime komunicirati putem suelja koje prua. U
tom suelju bi se, primjerice, moglo omoguiti da korisnik pauzira, zaustavi ili zapone
reprodukciju ispoetka.
Kao i activity i ostale komponente, i service se izvodi u glavnoj dretvi procesa aplikacije.
Kako u ovakvim sluajevima ne bi blokirali druge komponente korisnikog suelja, mogu
stvoriti novu dretvu za radnje za koje se zna da zahtijevaju vie vremena.
1.2.3. Broadcast receiver
Zadatak komponenti ovog tipa je da primaju obavijesti o vieodredinom razailjanju
(engl. broadcast) i reagiraju na njih. U radu aplikacija i sustava pojavljuje se mnogo takvih
obavijesti, npr. obavijest da ponestaje napona u bateriji, da se promijenila vremenska zona,
da su, aplikacijama koje ih trebaju, dostupni podaci prikupljeni s Interneta. Aplikacija
moe imati bilo koji broj broadcast receivera koji mogu odgovarati na sve informacije
koje se smatraju vanima. Osnovna klasa svakog od njih je BroadcastReceiver.
Ove komponente takoer nemaju grafiko suelje, ali mogu pokrenuti odreeni activity
kao odgovor na informaciju koju su dobili ili umjesto toga mogu koristiti upravitelja
obavijesti. Takve obavijesti mogu se prikazati na razliite naine kao treperenje
pozadinskog svjetla, vibracija pokretnog ureaja, reprodukcija odreenog zvuka. Na traci
stanja pojavi se ikona koju korisnik moe odabrati kako bi proitao obavijest.
1.2.4. Content provider
Ova komponenta se koristi za isporuku skupa podataka aplikacije drugim aplikacijama. Ti
podaci mogu se pohraniti u datoteni sustav kao datoteka ili u obliku SQLite baze
podataka. Osnovna klasa je ContentProvider koja sadri standardni skup metoda koje
8
omoguuju aplikacijama preuzimanje ili pohranu tipova podataka s kojima rade. Aplikacije
ne pozivaju te metode izravno, nego pomou objekta ContentResolver. Taj objekt
moe komunicirati sa svakim content providerom na nain da on upravlja komunikacijom.
Operacijski sustav se brine o tome je li proces pokrenut ili ga treba pokrenuti svaki puta
kada se pojavi zahtjev koji treba obraditi aplikacija koja trenutno nije aktivna. Takoer,
ako ne postoje instance koje su potrebne, a dio su aplikacije koja treba obraditi zahtjev,
Android ih sam stvara.
1.2.5. Datoteka manifest
Da bi se komponenta aplikacije mogla pokrenuti, Android mora znati da ta komponenta
postoji. To je izvedeno na nain da aplikacija deklarira svoje komponente u manifest
datoteci koja je povezana s paketom Android aplikacije .apk. Ta datoteka je strukturirana
XML datoteka i uvijek se zove AndroidManifest.xml, za sve aplikacije. U njoj je
definirano jo mnogo drugih stvari kao to su imena biblioteka s kojima aplikacija treba
biti povezana i dozvole koje se dodjeljuju aplikaciji. Android ne vidi komponente koje nisu
deklarirane u manifest datoteci te se one stoga ne mogu izvoditi.
1.2.6. Aktivacijska komponenta Intent
Asinkrona poruka kojom se aktivira pojedina komponenta naziva se intent. To je objekt
klase Intent u kojemu je sadraj poruke. Za activity i service ta poruka, izmeu ostalog,
sadri ime radnje koja se zahtijeva i URI (engl. Uniform Resource Identifier) datoteke nad
kojom ta radnja treba biti obavljena, dok za broadcast receiver sadri ime radnje koja je
objavljena (npr. moe obavijestiti strane koje ga oslukuju da je pritisnut gumb za
pokretanje kamere).
Za aktivaciju svake od komponenti postoje razliite metode. Activity se pokree tako da se
intent objekt poalje metodi Context.startActivity() ili
Activity.startActivityForResult(). esta je situacija da jedan activity
pokree drugi. Ako oekuje neki rezultat od activityja kojeg poziva, koristi drugu
navedenu metodu. Rezultat se takoer vraa kao intent objekt. Activity koji reagira na
intent, moe provjeriti koji intent ga je pokrenuo metodom getIntent(). Service se
pokree metodom Context.startService(). Metodom
Context.bindService() moe se uspostaviti veza izmeu pozivajue komponente i
9
servicea. Vieodredino razailjanje pokree se tako da se intent objekt poalje metodi
Context.sendBroadcast(), Context.sendOrderedBroadcast() ili
Context.sendStickyBroadcast().
Intent objekt moe eksplicitno navesti ime ciljane komponente u tom sluaju Android
pronalazi tu komponentu na temelju deklaracija u datoteci manifest i aktivira je. U sluaju
da ciljana komponenta nije imenovana, Android pronalazi najbolju komponentu koja
odgovara tom intentu. To ini tako da intent objekt usporeuje s intent filtrom
potencijalnih ciljnih komponenti. Filtri obavjetavaju operacijski sustav o tome koje vrste
intenta mogu obraditi, to je zapisano u manifest datoteci.
Komponenta moe imati neogranien broj intent filtara. Ako nema nijedan, mogue ju je
aktivirati jedino intentom koji eksplicitno imenuje tu komponentu kao ciljnu.
1.2.7. ivotni ciklus activityja
Postoje tri stanja u kojima se activity moe nai:
aktivno stanje ili stanje izvoenja kada je prikazan na ekranu (to je stanje kada
korisnik koristi njegove mogunosti)
pauzirano stanje jo uvijek je vidljiv korisniku, no trenutno ga ne koristi. To je
sluaj kada je drugi activity iznad njega, koji je transparentan ili ne pokriva cijeli
ekran. U sluaju da operacijski sustav ima premalo slobodne memorije, moe
ubiti takav activity.
zaustavljeno stanje drugi activity ga je potpuno prekrio. Jo uvijek su sauvane
sve informacije o stanju. Ovakvi activityji se esto ubijaju kada sustavu treba
memorije.
Prelazak iz jednog stanja u drugo dogaa se pozivom jedne od ovih metoda:
void onCreate()
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
10
Kako activity moe prijei iz stanja u stanje prikazano je na slici 1.2.
Sl. 1.2 Dijagram stanja activityja
Sve prethodno navedene metode mogu se nadjaati (engl. override) te se tako moe
definirati to treba uiniti kada se promijeni stanje. Jedina nuna metoda je onCreate()
jer se u njoj definiraju poetne postavke.
11
Na dijagramu moemo vidjeti tri vana puta:
cijeli ivotni ciklus activityja odvija se izmeu prvog poziva onCreate()
metode do prvog poziva onDestroy() metode. Obuhvaeno je sve od
definiranja poetnih postavki na poetku do oslobaanja zauzetih resursa.
vidljivi ciklus activityja odvija se izmeu metoda onStart() i onStop().
Korisnik vidi activity na ekranu, to obuhvaa sluajeve kada je korisnik s njime u
interakciji i kada je activity vidljiv iako trenutno nije aktivan.
aktivni ciklus activityja odvija se izmeu poziva metoda onResume() i
onPause(). U ovom sluaju, korisnik je u neposrednoj interakciji s activityjem .
Activity se stvara metodom onCreate(), a pokree metodom onStart(). Tada
activity radi, tj. u aktivnom je stanju. Metodom onPause() prelazi u pauzirano stanje iz
kojega se u aktivno moe vratiti pozivom metode onResume(). Da bi se vratio u prvi
plan iz stanja kada se ne vidi na ekranu, mora se pozvati metoda onRestart(). Gasi se
metodom onDestroy().
Operacijski sustav se brine za pohranu stanja activityja ako ga treba sruiti kako bi
oslobodio memoriju. Da bi to bilo mogue, treba implementirati metodu
onSaveInstanceState(), koju Android poziva kada postoji mogunost da e
activity biti sruen dakle prije poziva onPause() metode. Stvara se Bundle objekt u
koji se pohranjuje trenutno stanje activityja u obliku parova ime-vrijednost. Kada se taj
activtiy ponovo pokree, Bundle objekt se predaje metodama onCreate() i
onRestoreInstanceState() (koja se izvrava nakon onStart() metode) kako bi
se moglo vratiti stanje u kojem je activity bio prije nego je sruen.
1.3. Razvoj aplikacije u Androidu
Svaka aplikacija mora imati korisniko suelje. Android stavlja na raspolaganje velik izbor
elemenata grafikog korisnikog suelja. U ovom poglavlju opisat e se veina elemenata
koritenih u praktinom dijelu ovog rada.
12
1.3.1. Openito o korisnikom suelju
U aplikaciji za Android korisniko suelje se sastoji od objekata tipa View i ViewGroup.
Tih elemenata ima mnogo, a zajedniko ime je da su svi podklase osnovne klase View.
Podklase se zovu widgeti i one su objekti korisnikog suelja koji se mogu implementirati
(primjerice polja za unos teksta ili gumbi). Klasa ViewGroup je osnova za podklase koje
se zovu izgledi (engl. layouts), a one nude razliite vrste arhitekture izgleda kao to su
linearna, tablina ili relativna.
View objekt je struktura podataka ija obiljeja pohranjuju parametre izgleda i sadraj za
specifini pravokutni dio ekrana. Kao objekt u korisnikom suelju, pojedini element
prikaza je takoer i toka interakcije za korisnika i primatelj dogaaja interakcije.
Korisniko suelje activityja definira se kao hijerarhija View i ViewGroup elemenata,
kao to je prikazano na slici 1.3. Gradi se od unaprijed definiranih widgeta i izgleda ili
vlastitih izraenih elemenata prikaza.
Sl. 1.3 Hijerarhija elemenata prikaza
Da bi se elementi prikazali na ekranu, unutar activityja se mora pozvati metoda
setContentView() i proslijediti referenca korijenskom objektu. Android pomou te
reference izmjeri i nacrta hijerarhijsko stablo, a korijenski vor zatim zahtijeva da vorovi
djeca nacrtaju sami sebe svaki ViewGroup vor poziva svaki svoj vor dijete da to
uini. Android parsira elemente izgleda po redu, instancira elemente prikaza i dodjeljuje ih
vorovima roditeljima. Kako se crtaju redom, ako postoji preklapanje izmeu elemenata
bit e vidljivi oni koji su na tom podruju posljednji nacrtani.
13
1.3.2. Izgledi
Uobiajeni i najjednostavniji nain definiranja izgleda i hijerarhije elemenata prikaza je
koritenje XML datoteke izgleda, koja prua dobar i lako itljiv pregled strukture. Svaki
element u toj datoteci je ili View ili ViewGroup objekt. Elementi prikaza se mogu
stvarati i izravno iz aplikacije i njima se moe upravljati u samom kodu.
Ime XML elementa je jednako Java klasi koju taj element predstavlja (npr.
element stvara TextView u korisnikom suelju), a imena atributa odgovaraju
metodama. Kada u komponentu aplikacije uitamo resurs izgleda, Android inicira te
runtime objekte koji odgovaraju elementima u datoteci izgleda. Prednost deklariranja
korisnikog suelja XML datotekom je u tome to se time odvaja prikaz aplikacije od koda
koji upravlja njenim ponaanjem. Takva datoteka izgleda ovako:
Elementi prikaza se mogu organizirati na vie razliitih naina koristei razliite grupe
elemenata prikaza, kao to su LinearLayout, RelativeLayout, TableLayout,
GridLayout i drugi. Svaki od njih prua jedinstven skup parametara izgleda koji
odreuju pozicije elemenata prikaza i strukturu izgleda.
Svaka datoteka izgleda ima tono jedan korijenski element koji je objekt tipa View ili
ViewGroup. Svi ostali objekti ili widgeti dodaju se kao elementi djeca te se tako
postupno gradi struktura stabla. Kada se aplikacija kompilira, svaka XML datoteka izgleda
se kompilira u resurs elemenata prikaza, koji se mora uitati u kodu aplikacije na ovaj
nain:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView.(R.layout.main_layout); }
14
U ovom sluaju, kao resurs se uitava XML datoteka main_layout.xml, to se dogaa
pri svakom pokretanju activityja (jer Android poziva metodu onCreate() pri svakom
pokretanju activityja).
Svaki View i ViewGroup objekt podrava skup raznih XML atributa. Neki od njih su
specifini za pojedine View objekte, no njih imaju i objekti koji nasljeuju tu klasu. Neke
atribute imaju svi objekti jer ih nasljeuju od korijenske klase. Svi ostali smatraju se
parametrima izgleda i opisuju orijentaciju View objekta. View objekt moe imati integer
ID koji je jedinstvena identifikacijska oznaka tog elementa prikaza u stablu kojemu
pripada. Pri kompiliranju aplikacije, ID se referencira kao integer, no u XML datoteci se
definira kao string.
1.3.3. Izbornici
Aplikacijski izbornici su esto koriten dio korisnikog suelja pomou kojeg se mogu
koristiti funkcije aplikacije i mijenjati njene postavke (Sl. 1.4). Struktura im se takoer
stvara pomou hijerarhije elemenata prikaza, no nju se tako ne definira. Umjesto toga,
definiraju se onCreateOptionsMenu() ili onCreateContextMenu() metode za
activity i deklariraju se elementi koje se ele ukljuiti u izbornik. Pri pokretanju e Android
automatski stvoriti hijerarhiju elemenata prikaza i nacrtati svaki element izbornika. Kao i
izgled aplikacije, elementi izbornika se takoer mogu definirati u XML datoteci.
Sl. 1.4 Primjer izbornika u Androidu
15
U Androidu postoje tri osnovne vrste aplikacijskih izbornika:
izbornik opcija osnovni skup elemenata izbornika za activity. Otvara se kada se
pritisne gumb MENU na ureaju koji ima operacijski sustav Android.
izbornik konteksta predstavlja listu elemenata izbornika koja se moe pojaviti
kada se due pritisne odreeni element prikaza.
pod-izbornik predstavlja listu elemenata izbornika koju prikae element izbornika
opcija ili izbornika konteksta. Ne podrava ugnijeene pod-izbornike.
1.3.4. Dijalozi
Dijalog je obino mali prozor koji se pojavi iznad trenutno aktivnog activityja, koji ode u
stanje pauze dok dijalog preuzme svu interakciju s korisnikom. Koriste se za obavijesti i
kratke aktivnosti koje su u neposrednom odnosu s aplikacijom koja se izvodi. Primjer se
moe vidjeti na slici 1.5.
Sl. 1.5 Primjer dijaloga u Androidu
Android API podrava sljedee vrste dijaloga:
AlertDialog dijalog koji moe upravljati s jednim, dva ili tri gumba i s listom
elemenata koji se mogu odabrati radio gumbom ili check-boxom. To je preporueni
tip dijaloga jer moe napraviti veinu korisnikih suelja tipa dijaloga.
16
ProgressDialog dijalog koji prikazuje indikator tijeka (engl. progress wheel,
progress bar). Kako on samo proiruje mogunosti AlertDialoga, moe koristiti i
gumbe.
DatePickerDialog dijalog koji omoguuje korisniku da odabere datum.
TimePickerDialog omoguuje korisniku da odabere vrijeme.
Ako se eli napraviti novi tip dijaloga, kao osnova se uzme osnovni objekt Dialog koji se
moe ureivati kao i bilo koji activity XML datotekom. Takav dijalog moe sadravati
bilo koji element prikaza, ukljuujui i gore navedene podklase.
Kada se dijalog eli prikazati, treba se pozvati metoda showDialog(int) iz activityja,
pri emu joj se predaje argument tipa integer koji je jedinstveni identifikator dijaloga koji
se eli prikazati, ali nije obavezan. Dijalog se zatvara pozivom metode dismiss().
1.3.5. Obavjetavanje korisnika
U radu aplikacije mogu se pojaviti situacije kada je potrebno korisnika obavijestiti o
dogaaju koji se upravo dogodio u aplikaciji. Neki dogaaji zahtijevaju korisnikov
odgovor dok drugi to ne trae.
Postoje tri vrste takvih poruka:
Toast obavijest kratka poruka koja dolazi iz pozadine. Koristi se za obavijesti o
uspjenosti neke radnje (primjerice, da je datoteka pohranjena).
Obavijest trake stanja stalni podsjetnici koji dolaze od aplikacija koje rade u
pozadini i oekuju da korisnik reagira na tu obavijest kada njemu to bude
prikladno.
Obavijest dijaloga obavijesti povezane s activityjem. Ako aplikacija obavlja neki
posao iji zavretak korisnik mora priekati (kao npr. uitavanje datoteke),
obavjetava ga o tome prozorom u kojemu je prikazan indikator tijeka.
Toast obavijest se samo kratko prikazuje ispred trenutnog activityja, zauzima malo
prostora i ne mijenja stanje activityja on se i dalje vidi i ostaje interaktivan. Moe ga
koristiti i service koji radi u pozadini i bit e prikazan i ako aplikacija nije aktivna. Ova
vrsta obavijesti ne podrava nikakav oblik interakcije, jer za tu namjenu postoji obavijest
trake stanja. Primjer toasta prikazan je na slici Sl. 1.61.6.
17
Sl. 1.6 Primjer toast obavijesti
Obavijesti trake stanja postavljaju ikonu na traku stanja operacijskog sustava (koja moe
sadravati kratki tekst) i proirenu obavijest u prozor Notifications. Kada korisnik
odabere proirenu poruku, Android alje intent koji se definira za tu vrstu obavijesti, a
najee je to pokretanje activityja.
18
2. Sportska prognoza za Android
Sportska prognoza je sustav koji omoguuje sudjelovanje u igrama na sreu koritenjem
osobnog pokretnog ureaja s operacijskim sustavom Android. Korisniku su na
raspolaganju dvije aplikacije za Android, koje mu omoguuju uplatu kladionikog listia
sa svog pokretnog ureaja te niz mogunosti vezanih uz ovu vrstu igara na sreu.
Kako bi se usluga mogla koristiti, potrebno je instalirati dvije aplikacije za Android na
osobni pokretni ureaj te se registrirati u kladionici kao korisnik usluge. Aplikacije vode
korisnika kroz cijeli proces uplate listia od prijave na sustav, pregleda dogaaja i
filtriranja po sportovima i kategorijama do realizacije uplate i praenja pojedinih rezultata.
Sve informacije koje su mu potrebne korisnik moe dobiti na svoj pokretni ureaj u bilo
koje vrijeme. Komunikacija s posluiteljskom aplikacijom kladionice se odvija beinim
internetskim pristupom (Wi-Fi, EDGE, UMTS).
Pojednostavljeni prikaz komponenti sustava moe se vidjeti na slici 2.1.
Sl. 2.1 Komponente sustava Sportska prognoza
19
2.1. Opis sustava
Sustav Sportska prognoza sastoji se od pet komponenti. Sredinja komponenta, koja
upravlja logikom, obrauje zahtjeve, alje potrebne podatke korisnikim aplikacijama i
upravlja svom ostalom komunikacijom je posluiteljska aplikacija i ona pripada sustavu
kladionice. Sva komunikacija s bazom podataka, ak i upis novih dogaaja u bazu, odvija
se preko ove aplikacije. Ona je i posluitelj i klijent, jer osim to eka i obrauje zahtjeve
korisnikih aplikacija, alje podatke o novim dogaajima (ako su za to namjetene
postavke) kada se oni unesu u bazu podataka.
Glavni dio praktinog dijela ovog rada je aplikacija za Android po imenu Sportska
prognoza LIVE. Ta korisnika aplikacija omoguuje namjetanje postavki praenja
pojedinih sportova. Postavke se alju posluiteljskoj aplikaciji koja ih sprema u bazu.
Korisnik tako moe definirati eli li primati obavijesti o novim dogaajima koji se unesu u
bazu. Takoer moe aktivirati praenje rezultata dogaaja s listia koji je uplatio.
Aplikacija je usko povezana s drugom korisnikom aplikacijom po imenu Sportska
prognoza, ijem pregledniku moe proslijediti primljene dogaaje koje korisnik moe
staviti na novi listi.
Aplikacija za Android, Sportska prognoza, prua svu funkcionalnost vezanu uz kladionike
listie. Omoguuje dohvat dogaaja koji se mogu filtrirati po sportovima i kategorijama,
kreiranje novog listia, spremanje nedovrenih listia (na koje se mogu i dodavati dogaaji
koje primi aplikacija Sportska prognoza LIVE), pregled odigranih listia te upravljanje
opcijama vezanim uz prijavu na sustav kladionice.
Aplikacija za rukovanje bazom podataka slui za laki i pregledniji unos podataka u bazu.
Pazi na podatke koji se unose i onemoguava unos nepotpuno definiranog dogaaja.
Podatke ne unosi direktno, nego preko posluiteljske aplikacije. Ima mogunost unosa
ishoda dogaaja nakon to se odigra.
U bazu podataka pohranjuju se svi podaci vani za kladioniki sustav informacije o
korisnicima usluge, njihovim postavkama praenja, uplaenim listiima te dogaajima s
kojima se moe sudjelovati u igri, iji su svi podaci u jednoj tablici. Dogaaji su
podijeljeni u kategorije kako bi korisnik mogao definirati praenje i dohvat samo
odreenih sportova. Pristup bazi ima samo posluiteljska aplikacija.
20
Dijagram prikazan na slici 2.2 daje uvid u poslove koje obavljaju pojedini dijelovi sustava.
Sl. 2.2 Dijelovi sustava i njihove funkcionalnosti
2.1.1. Dijagram sluajeva uporabe
Sl. 2.3 Dijagram sluajeva uporabe za sustav Sportska prognoza
Slika 2.3 prikazuje dijagram sluajeva uporabe sustava.
21
Korisnik aplikacija za Android ima na raspolaganju niz mogunosti. Koritenjem
aplikacije Sportska prognoza moe beinim internetskim pristupom dohvatiti podatke o
dogaajima s kojima moe sudjelovati u igri. Prije dohvaanja moe odrediti koje dogaaje
eli, tako to koristi filtar dogaaja po sportovima i kategorijama. Iz primljene liste
dogaaja, odabire one koje eli te kreira novi listi. Listi ne mora uplatiti, ve ga moe
spremiti kao nedovreni i mijenjati ga ili uplatiti kasnije. Kada se za to odlui, upisuje u
listi iznos kojim eli sudjelovati u igri i alje ga posluiteljskoj aplikaciji kladionice koja
potom listi pohranjuje u bazu podataka kladionice. Vri se naplata iznosa koja se takoer
evidentira u bazi. Uplaeni listi se pohranjuje i u aplikaciji, kako bi ga korisnik kasnije
mogao pregledati, ako to eli.
Aplikacija Sportska prognoza LIVE proiruje mogunosti sustava slanjem obavijesti o
dogaajima koje korisnik moe definirati u aplikaciji. Moe odabrati eli li pratiti rezultate
dogaaja koji su na uplaenom listiu i moe ukljuiti primanje obavijesti o novim
dogaajima koji se unesu u bazu. Dogaaje koje eli pratiti moe filtrirati po sportovima.
Nakon to definira postavke, alje ih posluiteljskoj aplikaciji kladionice koja podatke o
praenju sprema u bazu. Posluiteljska aplikacija alje korisniku obavijest kada se odigra
dogaaj koji je na njegovom listiu, a obavjetava ga i o tome je li listi dobitan ili ne, kada
se zavre svi dogaaji s uplaenog listia. Kada se u bazu unese novi dogaaj, a korisnik
ima aktivirano praenje njegove kategorije, alje se obavijest o novom dostupnom
dogaaju. Iz obavijesti korisnik moe proslijediti dogaaj aplikaciji Sportska prognoza,
koja ga prikazuje u svom pregledniku i iz kojega moe dodati na novi ili nedovreni listi.
Broj listia koje korisnik moe uplatiti nije ogranien.
2.1.2. Komunikacija meu komponentama
U sustavu postoje etiri komunikacijska toka. Jedini dvosmjeran tok je izmeu aplikacija
za Android i posluiteljske aplikacije. Aplikacija Sportska prognoza komunicira s
posluiteljskom aplikacijom prilikom (filtriranog) dohvaanja parova i prilikom uplate
listia. U oba sluaja, korisnika aplikacija se ponaa kao klijent i alje zahtjeve koje
posluiteljska aplikacija obrauje te alje odgovore.
U sluaju komunikacije Sportske prognoze LIVE i posluiteljske aplikacije, obje imaju
uloge i klijenta i posluitelja. Sportska prognoza LIVE ima ulogu klijenta kada alje
podatke o postavkama, no u sluaju primanja obavijesti, ima ulogu posluitelja koji
neprestano oekuje nove obavijesti.
22
Komunikacija izmeu dviju korisnikih aplikacija se uspostavlja kada Sportska prognoza
LIVE alje podatke o primljenom novom dogaaju aplikaciji Sportska prognoza, koja ga
prikazuje u svom pregledniku i iz njega stvara novi ili nadopunjuje nedovreni listi.
Aplikacija za rukovanje bazom podataka komunicira s bazom posredstvom posluiteljske
aplikacije, koja jedina izravno komunicira s bazom i izvrava sve upite. Komunikacija je
jednosmjerna jer aplikacija unosi ili novi dogaaj u bazu, ili ishod odigranog dogaaja.
Povratnu poruku o uspjenost upisa dobiva posluiteljska aplikacija.
2.1.3. Programska izvedba posluiteljske aplikacije
Posluiteljska aplikacija zove se SocketServerSP. Napravljena je u Eclipse razvojnoj
okolini (verzija 3.4.2) u programskom jeziku Java. Ova aplikacija je sredinji dio sustava i
komunicira sa svim ostalim komponentama. Sastoji se od pet klasa (Sl. 2.4):
SocketServer.java,
ConnectionHandler.java,
MessageHandler.java,
DBConnector.java,
NotificationSender.java.
Prva navedena klasa, SocketServer, glavni je dio posluiteljske aplikacije. Za svako
spajanje na posluiteljsku aplikaciju koje iniciraju korisnike aplikacije ili aplikacija za
rukovanje bazom, ova klasa stvara novi objekt ConnectionHandler koji upravlja
stvorenom vezom i kojemu se kao parametar predaje stvorena konekcija. Veza slui za
razmjenu podataka izmeu aplikacija ili za upis podataka u bazu.
ConnectionHandler takoer ima vanu ulogu. Osim to upravlja stvorenom vezom,
omoguuje vienitno izvoenje na nain da svaki objekt ove klase stvara novu nit, ime se
omoguava prihvaanje vie veza odjednom. Objekt ove klase razmjenjuje poruke sa
stranom koja je inicirala vezu koristei ulazni i izlazni tok podataka koji se stvara na
temelju dobivene veze preko prikljunice. Zadaa ove klase je i upisivanje i mijenjanje
podataka u bazi promjene se dogaaju prilikom unosa novih dogaaja putem aplikacije
za rukovanje bazom, slanja novog listia iz aplikacije Sportska prognoza i slanja postavki
praenja iz aplikacije Sportska prognoza LIVE.
23
Klasa MessageHandler je pomona klasa koja slui ConnectionHandleru za slanje
poruka. Napravljena je zbog preglednije podjele poslova i bolje kontrole nad izvoenjem
slanja poruka. Metoda sendMessage() omoguuje slanje vie vrsta objekata stringovi
koji slue kao kontrolne poruke te pojedinano i grupno slanje novih dogaaja u obliku
liste objekata tipa VirtualEvent.
DBConnector je klasa koja upravlja unosom, dohvatom i promjenama podataka u bazi.
Pri stvaranju svake nove veze, ConnectionHandler instancira novi objekt ove klase
koji uspostavlja vezu s bazom metodom setDBConnection(). Svaka komunikacija s
bazom se odvija pozivanjem odgovarajuih metoda. Tako se primjerice kod prijave
korisnika na sustav usporeuju uneseni podaci s onima u bazi metodom
checkLoginInformation(), unos podataka u bazu od strane aplikacije za rukovanje
bazom vri se metodama insertInBase() i setEventResult(), uplata novog
listia izvrava se metodom insertNewBetInDB(), a za namjetanje praenja slue
metode setTrackInDB() i setResultTrackInDB().
Posljednja klasa, NotficationSender, predstavlja klijentski dio posluitelja koji se
spaja na korisniku aplikaciju Sportska prognoza LIVE. Zaduena je za slanje obavijesti o
novom dogaaju u ponudi ili rezultatu odigranog, ako je korisnik aktivirao praenje.
Vano je spomenuti i klasu VirtualEvent, koja se koristi kao eksterna .jar datoteka u
obje korisnike i u posluiteljskoj aplikaciji. U njoj je definiran format poruke kojom se
razmjenjuju podaci o dogaajima u sustavu. Sadri sve informacije o pojedinom dogaaju
te korisnikov odabir koji se odnosi na taj dogaaj (engl. tip).
Sl. 2.4 Klasni dijagram posluiteljske aplikacije
24
2.1.4. Baza podataka
Baza podataka u ovom sustavu zove se spbaza. To je MySQL baza izraena u Eclipse
razvojnoj okolini, verzija 3.4.2, sa SQL Explorer pluginom. Za ureivanje je koriten i
program MySQL GUI Tools 5.0.
U bazi se pohranjuju podaci o korisnicima sustava, njihove postavke praenja i stanje na
raunu, podaci o uplaenim listiima i podaci o dogaajima koji su dostupni korisnicima.
etiri stalne tablice ine ovu bazu (Sl. 2.5):
tablica evidencija slui za pohranu podataka o listiima koji su u igri.
tablica login sadri podatke o korisnicima sustava koji su bitni kladionici.
Vrijednost atributa USER_ADDRESS je podatak o trenutnoj IP adresi i vratima na
kojima korisnik eka obavijesti ako je aktivirao opcije praenja u aplikaciji
Sportska prognoza LIVE. U atribute TRACE_CHECK i
TRACE_RESULT_CHECK se zapisuje je li korisnik aktivirao praenja.
tablica parovi u njoj su zapisane sve informacije vezane uz pojedini dogaaj
(kategorije, imena sudionika, vrijeme odigravanja i ponueni koeficijenti).
tablica pref_sport slui za definiranje postavki praenja. Svaki dogaaj ima
oznaku sporta i kategorije (npr. zemlja odigravanja). Postoji i tablica pref_categ
pomou koje se moe implementirati praenje po dodatnim kategorijama.
Sl. 2.5 Primjer stanja baze podataka s jednim uplaenim listiem
25
Za svaki uplaeni listi u bazi se stvara nova tablica koja u sebi ima informacije o
identifikacijskom broju svakog dogaaja koji je na listiu, tip za pojedini dogaaj koji je
korisnik odigrao, pripadajui koeficijent i stupac koji oznaava je li rezultat evidentiran.
Kao ilustracija tablice, na slici 2.6 se moe vidjeti izgled tablice login.
Sl. 2.6 Tablica login
2.1.5. Aplikacija za rukovanje bazom podataka
Jednostavna aplikacija, imena BazaGUI, napravljena je kako bi se pojednostavio unos
podataka o novim dogaajima u bazu. Napravljena je u Eclipse razvojnoj okolini u Java
programskom jeziku. Aplikacija ne moe direktno unositi podatke u bazu, nego to ini
posredstvom posluiteljske aplikacije. Ta odluka donesena je iz sigurnosnih razloga.
Aplikacija se sastoji od dvije klase:
BazaGUI.java klasa u kojoj je definiran izgled aplikacije
SocketClientGUI.java klasa kojom se aplikacija spaja s posluiteljskom
aplikacijom i u kojoj se alju poruke koje iniciraju unos podataka u bazu.
Na slici 2.7 je prikazan izgled ove aplikacije.
Sl. 2.7 Aplikacija za rukovanje bazom podataka
26
2.2. Sportska prognoza LIVE
Ova aplikacija za operacijski sustav Android usko je vezana za aplikaciju Sportska
prognoza. Proiruje mogunosti sustava za sudjelovanje u igrama na sreu dodajui
mogunosti praenja ishoda dogaaja s uplaenog korisnikovog listia i praenja novih
dogaaja koji se pojave u ponudi kladionice.
Pri svakoj promjeni postavki praenja, aplikacija zahtjeva od korisnika prijavu na sustav
bez mogunosti pamenja prijave. To je napravljeno iz sigurnosnih razloga, kako nitko
osim korisnika ne bi mogao promijeniti postavke praenja. Korisniku su na raspolaganju
dvije opcije praenja. Moe odabrati koje sportove eli pratiti tako da iz liste ponuenih
odabere one koji ga zanimaju. U izbor je ukljuena i opcija praenja svih sportova.
Pritiskom na gumb, alje odabrane postavke posluiteljskoj aplikaciji koja podatke
zapisuje u bazu. Druga opcija ukljuuje praenje ishoda s uplaenih listia.
Moe se rei da je to klijentska aplikacija, jer alje zahtjeve posluitelju, a on ih obrauje.
No aktivacijom opcija praenja, ova aplikacija postaje i svojevrsni posluitelj aktivira
stalno oslukivanje na IP adresi i vratima koje poalje posluiteljskoj aplikaciji. Na toj
prikljunici oekuje obavijesti, koje mogu biti dvije vrste:
tekstualna obavijest sadri podatke o rezultatu pojedinog dogaaja ili o ishodu
odigranog listia (dobitan ili nije dobitan). Obavijest se pojavljuje u traci stanja
operacijskog sustava.
tekstualna obavijest i objekt VirtualEvent obavjetava o novom dogaaju u
ponudi kladionice (koji je iz kategorije sporta za koju korisnik ima aktivirano
praenje). Otvaranjem cijele poruke, korisnik moe vidjeti zadnju pristiglu
obavijest i ukupan broj pristiglih te iste odbaciti ili proslijediti pregledniku
aplikacije Sportska prognoza, iz koje se dogaaji mogu staviti u novi ili postojei
nedovreni listi. I ova obavijest se pojavljuje u traci stanja.
Iz svega navedenog se moe zakljuiti da postoje dva toka komunikacije dvosmjerni sa
posluiteljskom aplikacijom i jednosmjerni s aplikacijom Sportska prognoza.
27
Sl. 2.8 Slijedni dijagram uobiajenog scenarija
Na slijednom dijagramu prikazanom na slici 2.8 moe se vidjeti tko s kime komunicira.
Prikazan je uobiajeni scenarij koji, naravno, ne obuhvaa svu komunikaciju koja se moe
pojaviti.
Ovaj scenarij prikazuje komunikaciju u ovom dijelu sustava u sluaju da se sve radnje
obave uspjeno, kako bi se pojasnio tijek radnji. Nisu prikazane kontrolne poruke. Pri
svakom unosu ili promjeni postavki, u aplikaciji Sportska prognoza LIVE potrebno je
28
upisivati korisnike podatke koji se provjeravaju u bazi podataka. Nakon toga mogua je
pohrana postavki. O svakom novom unesenom dogaaju, posluiteljska aplikacija odmah
obavjetava korisniku aplikaciju. Za pregled pristiglih dogaaja, aplikacija koristi
preglednik druge korisnike aplikacije, koji pokree slanjem odgovarajueg intenta. Pritom
se aktivira samo ta komponenta aplikacije Sportska prognoza. Time je iskoritena jedna od
osnovnih znaajki operacijskog sustava Android svaka aplikacija moe pokrenuti dio
druge aplikacije koji treba, bez da se pokree cijela aplikacija.
Sl. 2.9 Slijedni dijagram programske izvedbe aplikacije Sportska prognoza LIVE
29
Slijedni dijagram na slici 2.9 slui kao pojanjenje pojedinih elemenata dijagrama sa slike
2.8. Prikazuje radnje koje se odvijaju unutar aplikacije Sportska prognoza LIVE i njenu
strukturu. Detaljniji opis programske izvedbe navedene aplikacije je u poglavlju 2.2.2.
2.2.1. Korisniko suelje
Aplikacija Sportska prognoza LIVE koristi vie standardnih elemenata prikaza
operacijskog sustava Android. Pokretanjem aplikacije otvara se poetni ekran, koji je
prikazan na slici 2.10.
Sl. 2.10 Poetni ekran aplikacije
Cijeli ekran ima tip izgleda LinearLayout. Elementi prikaza od kojih se sastoji ovaj
ekran su tri TextViewa, dva check-boxa i dva gumba. TextView elementi su definirani
kao resursi u XML datoteci strings.xml. U main.xml datoteci definiran je izgled
cijelog ekrana i svih elemenata prikaza. Mogu je odabir vrijednosti raznih atributa za sve
elemente, od uobiajenih kao to su veliina i stil slova i poloaj u odnosu na druge
elemente do vrijednosti razine transparentnosti pojedinog elementa, dodavanja sjena i
omoguavanja zvunih efekta. Svi elementi imaju definirane visinu i irinu, ije su
vrijednosti ili fill_parent ili wrap_content. Gumb za praenje rezultata je
onemoguen dok god se ne odabere ta mogunost u check-boxu iznad.
Sve postavke se pamte i nakon izlaza iz aplikacije. To je izvedeno pomou Androidovog
objekta SharedPreferences. On omoguuje pohranu i ponovno uitavanje
30
primitivnih tipova podataka koji se pohranjuju u parovima klju-vrijednost. U sluaju ove
aplikacije se tako pamti odabir check-boxova koji omoguuju praenje(klju je tipa
boolean) i onih koji definiraju koje sportove korisnik prati. Za itanje i upisivanje tih
vrijednosti koristi se metoda getSharedPreferences().
Kada korisnik odabere check-box za praenje sportova, prikazuje se dijalog tipa
AlertDialog, koji je prikazan na slici 2.11.
Sl. 2.11 Dijalog za odabir sportova
Kao resurse koristi podatke iz datoteke arrays.xml. Svaki sport ima svoj check-box ija
se vrijednost takoer pamti u objektu SharedPreferences. Ako nijedan sport nije
odabran, korisniku je na poetnom ekranu na raspolaganju opcija Otkai praenje
sportova. Kada odabere sportove iz dijaloga, gumb se mijenja u Aktiviraj praenje
sportova. Kako bi mogao poslati postavke posluiteljskoj aplikaciji, mora prvo unijeti
svoje korisnike podatke u dijalogu koji se pojavi kada se pritisne bilo koji od dva gumba.
Izgled tog dijaloga definiran je datotekom login_dialog.xml, a sastoji se od dva
elementa TextView, dva gumba i dva EditText elementa.
Obavijesti koje aplikacija moe primati od posluiteljske aplikacije su obavijesti trake
stanja. One se prikazuju neovisno o tome je li aplikacija aktivna ili nije. Kada obavijest
stigne, u traci stanja pojavi se ikona, a odmah pored nje obavijest da je primljen dogaaj.
Kada korisnik otvori traku stanja, prikazuje se cijela obavijest u kojoj je ispisan posljednji
dogaaj koji je pristigao od korisnikovog zadnjeg pogleda te ukupan broj novih pristiglih
31
obavijesti. Ako se iz prikazanog prozora odabere obavijest, alje se intent aplikaciji
Sportska prognoza te se svi pristigli dogaaji prosljeuju njenom pregledniku, u kojemu se
mogu birati dogaaji koji se eli staviti u novi ili nedovreni listi. Takoer postoji i opcija
odbacivanja svih pristiglih dogaaja. Izgled obavijesti pristiglih u traku stanja moe se
vidjeti na slici 2.12.
Sl. 2.12 Obavijest o novom dogaaju u traci stanja
Preglednik aplikacije Sportska prognoza je activity iji je izgled definiran datotekom
view_bet.xml. To je prazan ekran koji sadri samo element ListView. Popunjava se
dinamiki, kada u aplikaciju pristigne lista dogaaja.
U manifest datoteci aplikacije Sportska prognoza LIVE definirane su njene komponente,
po jedan activity i service. Tu su, izmeu ostalog, i dozvole aplikacije:
Aplikacija moe pristupiti Internetu, ima dozvolu za koritenje vibracijske funkcije
pokretnog ureaja i moe se pokrenuti pri pokretanju ureaja, to se sve vidi iz priloenog.
Dozvola za pokretanje im se pokrene ureaj dodana je kako bi se odmah mogao pokrenuti
service koji oekuje obavijesti od posluiteljske aplikacije.
32
2.2.2. Programska izvedba
Sportska prognoza LIVE izraena je u Eclipse razvojnoj okolini, verzija 3.4.2, u
programskom jeziku Java. Koriten je Android SDK verzije 1.5, a kao pomo pri izradi
grafikog suelja koritena je Java aplikacija DroidDraw.
Aplikacija se sastoji od etiri klase:
StartScreen.java,
LoginConnection.java,
LIVEService.java,
BReceiver.java.
StartScreen je activity aplikacije, grafiko suelje koje se prikazuje kada se aplikacija
pokrene. Metoda koja ga stvara, onCreate(), stvara objekte s kojima e raditi, tj.
elemente prikaza ove aplikacije, a to su, kao to je ve navedeno, dva check-boxa i dva
gumba te polje koje prikazuje kategorije po kojima se filtriraju dogaaji. Pozivom metode
displaySports(), stvara se dijalog tipa AlertDialog koji prikazuje listu sportova
po kojima je mogue filtrirati dogaaje koji e se pratiti. Drugi dijalog, onaj za prijavu
korisnika na sustav kladionice, prikazuje se pozivom metode
displaySetPreferencesDialog(). On se pojavljuje kada korisnik odlui poslati
postavke o praenju na posluitelj. Dijalozi se pozivaju posebnim metodama koje, kao to
je to sluaj u svim grafikim sueljima, oslukuju pritisak odreenih gumba. itanje
postavki u aplikaciji regulira se metodom readPreferences(), pri emu se koriste
objekti Androidove ugraene klase SharedPreferences, koji omoguuju pohranu
jednostavnih tipova podataka.
StartScreen koristi klasu LoginConnection za povezivanje s posluiteljskom
aplikacijom. Takoer je koristi za prijavu na sustav te slanje promijenjenih postavki. Sve to
obavlja metodama sendMessage(). Ova klasa napravljena je kako bi se odvojio dio
komunikacije s posluiteljem, zbog preglednosti i lakeg pronalaska eventualnih greaka.
Klasa LIVEService je service ove aplikacije, koji omoguava stalno ekanje obavijesti
od strane posluiteljske aplikacije. Metodom sendMySocketAddress() posluitelju
se alje trenutna IP adresa i vrata posluitelja pokretnog ureaja. Service se pokree im se
33
ukljui ureaj, za to ima posebnu dozvolu definiranu u manifest datoteci. Kada obavijest
stigne, prikazuje je na traci stanja operacijskog sustava.
Posljednja klasa, BReceiver, ima samo jednu zadau omoguuje serviceu aplikacije da
se pokrene kada se ukljui ureaj. Klasa je tipa BroadcastReceiver. Oekuje intent
BOOT_COMPLETED nakon kojega svim zainteresiranim klasama alje obavijest da je
pokretanje ureaja zavreno. Tu obavijest u ovoj aplikaciji eka klasa LIVEService.
Meusobni odnos klasa moe se vidjeti na klasnom dijagramu prikazanom na slici 2.13.
Sl. 2.13 Klasni dijagram aplikacije
34
Zakljuak
Praktini dio rada uspjeno je ostvaren i omoguena je sva funkcionalnost koju je zadatak
zahtijevao. Rad na ovakvom sustavu za operacijski sustav koji je u svojim poecima je
zanimljiv, ali isto tako vrlo zahtjevan. Najvie problema pojavljivalo se zbog slabe podrke
za izradu aplikacija za Android. Kako je to novi operacijski sustav, jo nema dovoljno
primjera i podrke od programerske zajednice kako bi sve teklo glatko i kako bi se tekui
problemi brzo rjeavali. S druge strane, to je dodatna motivacija koja potie kreativnost i
samostalno rjeavanje problema.
I aplikacija i sustav su potpuno funkcionalni i pri programskom ostvarenju se vodila briga
o jednostavnosti svih dijelova sustava iz programerske perspektive te o jednostavnosti
koritenja aplikacije iz korisnike perspektive. Vodilo se rauna i o sigurnosnim
znaajkama.
Mogue budue dorade mogle bi ukljuivati proirenje opcija filtriranja dogaaja za
dohvat te rjeavanje pitanja naplate u sluaju sudjelovanja tree strane.
35
Literatura
[1] What is Android?, Android developers, http://developer.android.com/guide/basics/what-is-android.html
[2] Android Development Community, Android Tutorials, http://www.anddev.org/
[3] Ganesan, G., Android Tutorial, http://geeth.ganesan.googlepages.com/android-tutorial
[4] Paller, G., My life with Android, http://mylifewithandroid.blogspot.com/
[5] Gramlich, N., andbook!: Android Programming
36
Saetak
U ovom radu izraena je aplikacija za operacijski sustav Android kao dio sustava Sportska
prognoza. Sustav omoguuje sudjelovanje u igrama na sreu putem osobnog pokretnog
ureaja s operacijskim sustavom Android, pri emu se komunikacija odvija beinim
internetskim putem. Sastoji se od posluiteljske aplikacije, baze podataka, aplikacije za
rukovanje bazom i dvije korisnike aplikacije za Android.
Aplikacija Sportska prognoza prua mogunost dohvata i pregleda dogaaja, kreiranje i
uplatu listia, pohranu nedovrenog listia te pregled starih listia. Aplikacija Sportska
prognoza LIVE proiruje mogunosti sustava tako to omoguuje aktivaciju praenja
rezultata dogaaja s korisnikovih uplaenih listia te novih dogaaja u ponudi kladionice,
pri emu korisnik moe filtrirati dogaaje koje eli pratiti.
Kljuni pojmovi
Operacijski sustav Android, aplikacija za Android, activity, elementi prikaza, service,
datoteka manifest, intent, sustav sportske prognoze, pregled dogaaja, uplata listia,
praenje rezultata.
37
Abstract
The result of this work is an application for the Android operating system which is a part
of the Sport Events Forecast System. The system allows its clients to take part in sports
betting games by using their personal mobile phone running the Android operating system.
It consists of a server application, a database, a database management application and two
user applications for Android. All system parts communicate via wireless Internet access.
The Sport Event Forecast application allows retrieval and viewing of sport events, betting
ticket creation and payment, storage of a sketch ticket and reviewing played tickets. The
Sport Event Forecast LIVE application extends the systems capabilities by providing the
event result tracing option and new event subscription option in which the user gets to
choose which sport categories he is willing to subscribe to.
Key terms
Android operating system, Android application, activity, views, service, manifest file,
intent, sport event forecast system, sport events viewing, betting ticket payment, result
tracing.
Uvod1. Operacijski sustav Android1.1. Osnovne znaajke1.1.1. Arhitektura
1.2. Struktura aplikacije u Androidu1.2.1. Activity1.2.2. Service1.2.3. Broadcast receiver1.2.4. Content provider1.2.5. Datoteka manifest1.2.6. Aktivacijska komponenta Intent1.2.7. ivotni ciklus activityja
1.3. Razvoj aplikacije u Androidu1.3.1. Openito o korisnikom suelju1.3.2. Izgledi1.3.3. Izbornici1.3.4. Dijalozi1.3.5. Obavjetavanje korisnika
2. Sportska prognoza za Android2.1. Opis sustava2.1.1. Dijagram sluajeva uporabe2.1.2. Komunikacija meu komponentama2.1.3. Programska izvedba posluiteljske aplikacije2.1.4. Baza podataka2.1.5. Aplikacija za rukovanje bazom podataka
2.2. Sportska prognoza LIVE2.2.1. Korisniko suelje2.2.2. Programska izvedba
ZakljuakLiteraturaSaetakKljuni pojmovi