zavrsni rad 929 matko kuna

41
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.

Upload: milannet-milannet

Post on 19-Oct-2015

48 views

Category:

Documents


0 download

TRANSCRIPT

  • 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