Programiranje mobilnih aplikacija za Android operativni sustav

Size: px
Start display at page:

Download "Programiranje mobilnih aplikacija za Android operativni sustav"

Transcription

1 Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Vojislav Duračković Programiranje mobilnih aplikacija za Android operativni sustav Diplomski rad Osijek, 2012.

2 Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Vojislav Duračković Programiranje mobilnih aplikacija za Android operativni sustav Diplomski rad Mentor: doc. dr. sc. Domagoj Matijević Osijek, 2012.

3 Sadržaj 1 Uvod 4 2 Java programski jezik Značajke programskog jezika Primjer rada s klasama u Javi Android Povijesni razvoj Androida Android SDK Nije Hello World aplikacija Od početka do kraja jedne aktivnosti Korisničko sučelje Intents Praćenje obavijesti Odjela za matematiku JSON JSONParser MathosMonitoring Literatura 43 Sažetak 44 Summary 45 Životopis 46 3

4 1 Uvod Prvi pametni telefoni ili popularnije engl. smartphones kombinirali su funkcije osobnog digitalnog asistenta (engl. personal digital assistant) PDA i mobilnog telefona. Današnji modeli poboljšani su portabilnim medijskim playerima, ekranima osjetljivim na dodir visoke rezolucije, kamerama takoder visoke rezolucije, internet preglednicima, GPS navigacijom itd. Razvojem mobilnih komunikacija i mobilnog pristupa internetu dolazi do razvoja mobilnih aplikacija. Svakako treba istaknuti prisustvo različitih mobilnih operativnih sustava, koji svaki za sebe zahtjevaju različite alate i programske jezike za programiranje mobilnih aplikacija koje će biti instalirane na njima. Neki od najpoznatijih operativnih sustava za mobitele su: Palm OS, Symbian, Windows Phone, RIM, ios, Android i mnogi drugi. Ukratko ćemo izložiti prednosti i nedostatke danas dvaju najraširenijih operativnih sustava u svijetu, a to su Appleov ios i Googleov Android. ios je operativni sustav razvijen od strane Apple Inc. za mobilni uredaj iphone te za prijenosni media player ipod Touch, a prvi put se pojavio godine. Zasigurno je velik broj pristaša ostavštine Stevea Jobsa 1 i neosporna je kvaliteta ios operativnog sustava. Ipak napomenimo kako je za jednog početnika u svijetu programiranja mobilnih aplikacija, razvoj mobilne aplikacije za operativni sustav ios vrlo ograničen. Naime, prve poteškoće ogledaju se u činjenici da je gotovo nemoguće programirati na računalu koje nije iz obitelji Macintosha, odnosno računala proizvedena od strane Applea. Apple je takoder postavio visoke kriterije za objavljivanje aplikacije na njihovom marketu te ukoliko biste i napravili aplikaciju vrlo je upitno bi li ta aplikacija zaživjela. S druge pak strane Google Android je prvi otvoreni operativni sustav za mobilne uredaje pokrenut od strane Google Inc. i voden od strane Open Handset Alliance o kome će biti nešto više govora kasnije. Android Inc. su osnovali Andy Rubin, Rich Miner, Nick Sears i Chris White u listopadu godine kako bi razvijali programe za pametne mobilne uredaje. Nakon dvije godine rada Google kupuje Android Inc. U studenom godine osnovana je Open Handset Alliance (OHA) grupa s ciljem stvaranja javnog standarda za mobilne uredaje. OHA 5. studenog predstavlja mobilnu platformu otvorenog koda baziranu na Linux kernelu Android. Android platforma dobro je odgovorila izazovu za uporabu na uredajima različitih dimenzija ekrana te je tako rasprostranjena na mnogim pametnim uredajima koji imaju 2D ili 3D grafičku karticu temeljenu na OpenGL ES 2.0 specifikacijama. Interesantno je kako se za pohranu podataka koristi relacijski DBMS (engl. Database Managment System) sustav za upravljanje bazom podataka tzv. SQLite. SQLite 1 Steven Paul Jobs ( ) bio je jedan od najutjecajnijih ljudi u svijetu računalne industrije. Zajedno sa Steveom Wozniakom u garaži punoj jabuka napravio je prvo kućno računalo Apple. 4

5 software 2 napisan je u C programskom jeziku i njegova knjižnica je svega 275 kb. Android platforma doživjela je razne promjene verzija, a Google se potrudi da svaka verzija ima neko sebi svojstveno ime. Na sljedećoj slici prikazana je zastupljenost različitih verzija Android operativnog sustava (podaci su relevantni za period do rujna godine). Slika 1: Zastupljenost različitih verzija Android operativnog sustava Iako je većina aplikacija pisana u Java programskom jeziku, na Android uredajima ne postoji Java virtualni stroj (engl. Java Virtual Machine) pa tako nije moguće izvršiti Java binarni kôd. Za pokretanje Java aplikacije, Android koristi Dalvik virtualni stroj. O samom programiranju Java programskim jezikom nešto više bit će govora kasnije. Najveća prednost Androida u odnosu na druge mobilne operativne sustave svakako leži u otvorenom kôdu i mogućnosti programiranja mobilnih aplikacija neovisno o platformi stolnog računala. Ako to nije bio dovoljno dobar razlog za odabir Androida kao platforme za koju ćemo dalje proučiti razvoj mobilnih aplikacija onda možemo reći da imamo drugih petsto milijuna razloga. Do sada je zabilježeno kako je diljem svijeta aktivirano upravo petsto milijuna uredaja na mobilnoj platformi Android. Ovaj rad podijeljen je u četiri poglavlja. Izuzev ovog uvodnog poglavlja izdvojim i ostala poglavlja. Poglavlje Java programski jezik podijeljeno je na dva potpoglavlja 2 engl. software - programska podrška, programska oprema 5

6 i u prvom redu bavi se Java programskim jezikom, značajkama ovog objektno orijentiranog programskog jezika, a zatim u nastavku donosimo i primjer rada u ovom jeziku. Od izuzetne je važnosti biti koliko-toliko na ti s nekim objektno orijentiranim jezikom, a svakako je poželjno da je to upravo Java. Glavni dio rada nosi poglavlje Android. To je opširnije poglavlje sastavljeno od šest manjih potpoglavlja, a vodi nas od prvih povijesnih početaka Androida, preko odgovarajućih alata u svijet programiranja mobilnih aplikacija za Android operativni sustav. Možda pomalo neuobičajeno namjera nam je čitatelja zadobiti i aplikacijom koja nije obična Hello World aplikacija. Do kraja ovog poglavlja upoznajemo se s klasama i kôdovima na razini koja predstavlja dobar temelj za izradu i prelazak na implementaciju vlastite aplikacije. Svakako treba izdvojiti potpoglavlja Korisničko sučelje i Intents koji su nezaobilazni u svijetu aplikacija, a naročito u svijetu mobilnih aplikacija namijenjenih uredajima s Android operativnim sustavom. Četvrto poglavlje Praćenje obavijesti Odjela za matematiku donosi praktičnu primjenu znanja i informacija s kojima smo se upoznali u prethodnim poglavljima. Kako je praćenje obavijesti Odjela za matematiku uradeno putem prosljedivanja, tj. parsiranja (engl. parsing) podataka u JSON obliku, najprije ćemo nešto više reći o tome, a zatim u nastavku donosimo i samu aplikaciju. Dakle, cilj ovog diplomskog rada je čitatelja (a i nas same) upoznati s načinom izrade mobilne aplikacije za Android operativni sustav te svakako stečeno znanje primjeniti i implementirati vlastitu aplikaciju. 6

7 2 Java programski jezik Kako smo već najavili u ovom poglavlju pozabavit ćemo se Java programskim jezikom. Najprije odgovorimo na pitanje kakav je to programskim jezik. Java je potpuno objektno orijentirani programski jezik, što znači da se sve operacije odvijaju isključivo kroz objekte, odnosno preko njihovih funkcijskih članova (metoda). Osim samog programskog jezika ujedno zaokuplja cijelo okruženje u kojem se programi izvode te dolazi sa širokom lepezom gotovih knjižnica i funkcija. Na taj način programiranje je znatno ubrzano i efikasnije. Iako je Java jezik opće namjene najznačajniju primjenu nalazi u programiranju aplikacija za Internet, mobilne telefone i svakako poslovne aplikacije. 2.1 Značajke programskog jezika Sintaksu programskog jezika nije potrebno posebno stavljati pod povećalo jer je bazirana na jezicima C i C++. Opsežna knjižnica koja omogućuje jednostavno mrežno programiranje te programiranje grafičkog sučelja naglašava snagu ovog programskog jezika. Upravo tim knjižnicama Java programeru omogućuje visoku produktivnost i efikasnost. Za razliku od C++ izvorni kôd pisan u Javi ne prevodi se u strojni kôd matičnog procesora, nego u Java binarni kôd (engl. Java bytecode) kojeg Java virtualni stroj (engl. Java Virtual Machine, JVM ) interpretira i izvodi. Ovakav pristup osigurava izvodenje Java kôda na bilo kojem računalu s bilo kojim procesorom i operativnim sustavnom. Jedini uvijet je da na tom računalu postoji Java virtualni stroj. Moramo spomenuti kako su zbog interpretiranja Java binarnog kôda, a ne samog izvodenja izravno, Java programi i do desetak puta sporiji od ekvivalentnih programa pisanih u nekom drugom programskom jeziku (vidi [9]). Java podržava višenitnost (engl. multithreading), odnosno dijeljenje programa na dvije ili više operacija (engl. thread) koje se izvršavaju istovremeno. Preopterećenje operatora nije podržano, primjerice samo operator zbrajanja + definiran je za primitivne tipove podataka (cijeli i realni brojevi) te za znakovni niz. Ukoliko bismo definirali novu klasu Kompleksni brojevi zbrajanje je potrebno implementirati preko metoda. Četiri važna svojstva Javu čine objektno orijentiranim: 1. Apstrakcija Program čine objekti koji su instance nekih klasa. Java kôd nalazi se unutar jedne ili više klasa. 2. Enkapsulacija Podatke i metode koje s njima rade slažemo u smislene cjeline, odnosno klase. 3. Nasljedivanje Odnosi se na činjenicu da jedna klasa može naslijediti dio ili svu strukturu i ponašanje od druge klase. 7

8 4. Polimorfizam Omogućuje općoj klasi definiranje metoda koje će biti zajedničke za sve klase koje su iz nje izvedene, ostavljajući podklasama slobodu predefiniranja spomenutih metoda. 2.2 Primjer rada s klasama u Javi U sljedećem jednostavnom primjeru u sklopu projekta Automobili napravili smo dvije klase, Automobil koja sadrži osnovne karakteristike automobila i klasu Program koja koristi metode klase Automobil i predstavlja glavni dio cijelog programa. Pogledajmo kako izgledaju kôdovi ovih dviju klasa: public class Automobil { private String proizvodjac; private String model; private int godiste; private double brzina; private double maxbrzina; public Automobil(String pro, String mdl, int god){ proizvodjac = pro; model = mdl; godiste = god; public void setmaxbrzina(double brz){ maxbrzina = brz; public boolean setbrzina(double brz){ if(brz > maxbrzina) return false; brzina = brz; return true; public double getbrzina(){ return brzina; public String getproizvodjac(){ return proizvodjac; public String getmodel(){ return model; public int getgodiste(){ 8

9 return godiste; Klasa Automobil kao što vidimo ima privatne varijable kojima možemo pristupiti samo metodama. Jedna od metoda koja je prva definirana je konstruktor i kako vidimo on nosi naziv kao i sama klasa. Konstruktor je posebna vrsta metode zadužena za inicijalizaciju objekta njegove klase. Razlikuje se od metode po tome što ima isto ime kao i klasa te nema povratni tip (niti void). Konstruktoru prosljedujemo varijable, nazive proizvodača i model automobila te godište automobila. U nastavku samog kôda napravili smo različite metode set i get kojima postavljamo ili dohvaćamo tražene vrijednosti varijabli. U klasi Program implementirana su dva objekta, odnosno dvije instance klase Automobil. Na temelju usporedbe u if petlji odlučili smo ispisati svojstva bržeg automobila. Pogledajmo kako izgleda sam kôd: public class Program { private static void ispis(automobil mycar){ System.out.println("Automobil: "+mycar.getproizvodjac()+ " " + mycar.getmodel()+ " iz " +mycar.getgodiste()+ ". godine razvija brzinu " +mycar.getbrzina()+" km/h."); public static void main(string [] args){ Automobil toyota = new Automobil("Toyota", "Camry", 2009); Automobil ferrari = new Automobil("Ferrari", "F430", 2009); toyota.setmaxbrzina(212); toyota.setbrzina(200); ferrari.setmaxbrzina(360); ferrari.setbrzina(313); if(ferrari.getbrzina() < toyota.getbrzina() ){ ispis(toyota); else ispis(ferrari); Na samom početku ove klase definirali smo metodu ispis kojoj se prosljeduje instanca klase Automobil. Uočite kako smo u sklopu te metode pozivali i druge metode koje pripadaju klasi Automobil: getproizvodjac(), getmodel() i dr. Primjetite i 9

10 kako ova klasa sadrži main 3 metodu. Napomenimo kako za razliku od Jave, Android nema main metodu. Istaknimo još neka svojstva vezana za programiranje u Javi, a koja su od velikog značaja i za samo programiranje mobilne aplikacije za Android operativni sustav. Prilikom prosljedivanja parametra u Javi, ne radimo prosljedivanje reference, nego vrijednosti varijable. Dobro je napomenuti i kako je prilikom programiranja u Javi neophodno vršiti promjenu tipa varijable tzv. kastanje (engl. cast). Time se jedan tip varijable svodi na drugi kojim se na lakši način njegovim metodama pristupa i manipulira vrijednostima varijable. Za kraj ovog poglavlja i jedna zanimljivost, Oracle je tužio Google zbog krade intelektualnog vlasništva, konkretno zbog korištenja Jave, softwareske platforme koju je Oracle dobio kupovinom Sun Microsystemsa. Iako je Java besplatna za korištenje u optužnici je stojalo kako je Google prilikom razvijanja Android operativnog sustava koristio dosta Sun Java API-ja (engl. Application Programming Interface). Nezavisni programer Malcolm Barclay izjavio je:,,bilo bi krajnje smiješno pomisliti kako je korištenje API-ja krada intelektualnog vlasništva za jednu otvorenu platformu., (za više informacija vidi [12]). Dodajmo kako je ipak Oracle izgubio spor na radost mnogih programera. 3 engl. main glavna metoda, dio programa u kojem se pozivaju druge metode i njima upravlja 10

11 3 Android U uvodu smo kratko spomenuli kako je započela priča s Androidom. Dakle, radi se o prvom otvorenom operativnom sustavu za mobilne uredaje temeljen na Linuxovoj jezgri. Primarno je dizajniran za uredaje s ekranima osjetljivim na dodir (engl. touchscreen) kao što su pametni mobiteli i tablet računala (engl. tablet computers). U nastavku ćemo dati pregled povijesnog razvoja Androida. 3.1 Povijesni razvoj Androida Kompanija Android osnovana je u listopadu godine u Palo Alto (California, USA). Osnivači su joj Andy Rubin, Rich Miner, Nick Sears i Crhis White. Nakon samo dvije godine, Google je preuzeo Android i već tada se naslućivalo kako Google namjerava da se probije na tržište mobilnih telefona. U studenom godine u cijelu priču uključuje se Open Handset Alliance, konzorcijum informatičkih kompanija koji broji preko osamdeset članica, istaknimo neke od njih: Google, Sprint, T-Mobile, Intel, Nvidia, Qualcomm, HTC, LG, Samsung i mnoge druge. Cilj ovog udruživanja bio je stvoriti javni standard za mobilne uredaje. U listopadu godine Android je predstavljen kao mobilna platforma otvorenog koda pod Apache licencom. Nakon ovoga uslijedio je razvoj samog operativnog sustava, koji navodimo kronološki u tablici: Verzija Datum distribucije API razina 1.5 Cupcake 30. travnja Donut 15. rujna , 2.1 Eclair 26. listopada Froyo 20. svibnja Gingerbread 6. prosinca Honeycomb 22. veljače Ice Cream Sandwich 19. listopada Jelly Bean 9. srpnja Tablica 1: Kronološki razvoj operativnog sustava Android U nekoliko navrata spomenuli smo kako je jezgra Androida preuzeta iz Linuxa, jezgra je pisana u C/C++ programskom jeziku. Ukoliko bismo detaljnije zadirali u samu arhitekturu Androida treba izdvojiti nekoliko razina koje kao da su naslagane jedna na drugu. Na samom dnu je svakako jezgra koja sadrži drivere 4 od kojih su najvažniji driver za meduprocesnu komunikaciju IPC (engl. Inter-process communication) koji služi za izmjenu podataka izmedu različitih procesa ili niti (engl. thread) 4 engl. driver tehnička podrška za fizički dio računala engl. hardware 11

12 unutar istog procesa te driver za upravljanje napajanjem (engl. Power Managment). Iznad jezgre nalaze se knjižnice pisane u C/C++ programskom jeziku: Surface Manager nadzire iscrtavanje grafičkog sučelja OpenGL ES knjižnica za sklopovsko ubrzavanje 3D prikaza (ukoliko je moguće) te za visoko optimiziranu 3D softversku rasterizaciju 5 SGL 2D knjižnica korištena za većinu aplikacija Media Framework knjižnica koja podržava snimanje i reproduciranje poznatih audio i video formata FreeType knjižnica namijenjena iscrtavanju fontova SSL (Secure Sockets Layer) knjižnica za sigurnosnu komunikaciju putem interneta SQLite knjižnica za upravljanje bazama podataka dostupna svim aplikacijama WebKit pokretač web preglednika libc sistemska C knjižnica prilagodena za ugradbene sustave zasnovane na Linux operativnom sustavu Gotovo na istoj razini nalazi se knjižnica Android Runtime koja služi pokretanju aplikacija. Izuzetno je važna i sastoji se od dvije knjižnice esencijalne za rad Androida. Core Libraries predstavlja knjižnice koje sadrže većinu jezgrenih knjižnica programskog jezika Java. Dalvik Virtual Machine pokreće aplikacije kao zasebne procese, odnosno kao instance virtualnog stroja. Ono što je za Javu bila JVM to je za Android DVM. DVM pretvara Java kôdove u svoj format.dex s ciljem optimiziranja utroška memorije. Iznad toga nalazi se Aplikacijski sloj (engl. Application Framework) koji programerima uveliko olakšava pisanje aplikacija, dozvoljava upotrebu svih API-ja (engl. Application Programming Interface) koji su korišteni za bazne aplikacije. Ponajviše smo možda zahvalni na mogućnosti upravljanjem životnim ciklusom aplikacije, pozivima, prozorima, resursima i sl. Na samom vrhu i gotovo jedino vidljivo za korisnika jesu aplikacije. Kako to sve zajedno izgleda možemo bolje predočiti slikom 2, a o svemu više pogledati u [14]. 5 Rasterizacija (skeniranje) je proces prevodenja kontinualnih opisa grafičkih primitiva u diskretne opise preko pixela. Niz pixela treba da bude što bliže idealnoj liniji. 12

13 Slika 2: Arhitektura operativnog sustava Android Sad kad smo samo zagrebali po površini, pogledajmo ipak malo dataljnije kako izgleda put nastanka jedne Android mobilne aplikacije. Svakako krećemo od Java kôda koji se odgovarajućim kompajlerom (prevoditeljem engl. compiler) tzv. javac prevodi u Java klasu odnosno Java binarni kôd. Ako se sad vratimo na priču o programiranju u Java programskom jeziku rekli bismo da je tu kraj, medutim to nije slučaj s Androidom. Naime, Java binarni kod se dx konverterom prebacuje u.dex datoteku (engl. Dalvik executable) što je svakako povezano sa DVM, nakon čega se odgovarajućim programima za sažimanje (engl. archiver) sprema u završnu datoteku.apk (engl. Android Package). Bilo kojim programom za sažimanje moguće je pregledati sadržaj datoteke.apk, izmedu ostalog nalaze se mape s resursima potrebni aplikaciji te sama aplikacija, ali ne i Java kôdovi. Pogledajte shemu nastanka Android aplikacije, Slika 3 preuzetu s predavanja [4]. 13

14 Slika 3: Shematski prikaz nastanka Android aplikacije 3.2 Android SDK Prije nego što se bacimo na programiranje potrebni su nam odgovarajući programi za to. Iako je Android otvorena platforma stvari nisu tako jednostavne za početnika. Čitav jedan mali niz programa i alata je potrebno instalirati kako bi sve ispravno funkcioniralo. Prvi korak prema razvoju bilo koje aplikacije je instaliranje integrirane razvojne okline (engl. integrated development environment) skraćeno IDE. Jednostavno rečeno radi se o programu koji pruža neophodne alate jednom programeru za razvoj aplikacija. Kada je riječ o Androidu preporučeni IDE je Eclipse, koji se izmedu ostalog može koristiti i za programiranje u Javi, C, C++, Ada i dr. Eclipse IDE moguće je preuzeti sa sljedeće web stranice: Uobičajeni izgled ovog programa možete vidjeti na slici 4. Sljedeći važan program je svakako Android SDK (engl. software development kit) niz alata, medu kojima je i alat za otklanjanje grešaka ostalih programa tzv. debugger, a treba izdvojiti i emulator koji uveliko pomaže pri testiranju aplikacija. Android SDK možete preuzeti na sljedećoj web stranici: nismo naglasili, svi programi i alati su besplatni. Netko bi pomislio kako ima sve potrebne alate i da se može prepustiti programiranju, ali to ipak nije tako. ADT skraćenica od (engl. Android Development Tools) je skup programa zaduženih za povezivanje Eclipse IDE i Android SDK, odnosno Eclipse IDE i debugger. 14

15 Slika 4: Eclipse IDE Pomoću ADT u mogućnosti smo kreirati nove Android aplikacije, kompajlirati ih, debuggirati, spremati aplikaciju u.apk dokument, izradivati digitalni certifikat kojim zapravo potpisujemo našu aplikaciju. Instaliranje ADT se odvija kroz Eclipse IDE, o samom postupku instaliranja pogledati nešto više u [10] str. 7. Ukoliko ste sve dobro do sada ispratili i instalirali, preostao je još jedan korak, izrada emulatora. Android virtualni uredaj AVD (engl. Android Virtual Devices) pruža mogućnosti izrade nebrojeno različitih emulatora, koji ne samo da simuliraju vizualno jedan Android uredaj, nego su čak i njegove hardwareske sposobnosti nametnute od strane računala. Drugim riječima osjeti se razlika izmedu odabira Android uredaja s verzijom operativnog sustava 1.5 i primjerice verzijom Sama izrada emulatora je jednostavna, a odgovarajući AVD Manager možete potražiti u sklopu Android SDK prethodno instaliranih programa. Za kraj ovog poglavlja navedimo samo da smo sve aplikacije testirali na emulatoru s operativnim sustavom i API razinom 10, veličina SD kartice je 512 MB, a grafički prikaz je QVGA 6. 6 QVGA engl. Quarter Video Graphics Array uobičajeni naziv za grafiku prisutnu na ručnim uredajima, pametnim mobitelima, tabletima i sl. 15

16 3.3 Nije Hello World aplikacija Nakon što smo instalirali sve potrebne alate možemo krenuti s programiranjem. Kako i sam naslov ovog poglavlja nagovještava, odlučili smo kako prva aplikacija neće biti uobičajena u svijetu programiranja Hello World aplikacija. No, ipak nastojat ćemo prvu aplikaciju ne zakomplicirati previše. Naša prva aplikacija zvat će se Pozadina, imat će nekoliko gumbića kojima će korisnik dodirom na njih mijenjati boju pozadine ekrana. Koliko god je sam postupak instaliranja potrebnih programa bio čupav, uporaba istih je znatno jednostavnija. Od čega krećemo? Eclipse IDE je jedini program potreban za programiranje naše prve aplikacije. Ukoliko ste otvorili Eclipse izradimo novi Android projekt: File New Project Android Application Project. Prelazimo na korak imenovanja aplikacije i definiranja verzije Android operativnog sustava na kojem će se moći aplikacija pokrenuti. Ukratko opišimo postupak izrade projekta, pogledajte Sliku 5. Slika 5: Android projekt 16

17 Application Name označava naziv aplikacije, Project Name označava naziv projekta i naglasimo kako naziv projekta mora biti jedinstven kao i sam naziv paketa Package Name kojim je sve objedinjeno. Build SDK je verzija operativnog sustava za koji izradujemo našu aplikaciju, a Minimum Required SDK kako i samo ime nagovještava postavlja najmanju verziju operativnog sustava koji može pokrenuti ovu aplikaciju. Nekon ovoga (Next) možemo vrlo jednostavno odabrati i uredivati ikonicu kojom ćemo pokretati našu aplikaciju. U konačnici postavimo još naziv naše prve Java klase Activity Name, osnovnu XML datoteku koja predstavlja pozadinu Layout Name te naziv aplikacije Title koji se prikazuje prilikom pokretanja aplikacije. Mi smo tražene postavke uredili na sljedeći način (vidi Slika 6). Slika 6: Android projekt Finish gumbić je jedini koji je preostao kako bismo izradili naš prvi Android projekt. Ukoliko je sve prošlo u redu s lijeve strane u Eclipse pojavit će Vam odjeljak Package Explorer gdje se nalazi projekt Pozadina. 17

18 Na slici 7 prikazana je organizacija jednog projekta. Istaknimo neke mape ključne za razumjeti kako cijela stvar funkcionira. Mapa src (engl. source) sadrži sve Java klase koje se tijekom projekta izrade, gen (engl. Generated Java Files) okuplja Java kôdove generirane neovisno o našem programiranju. Mapa res (engl. resources) sadrži podmape sa slikama, XML datoteke kojima se izraduje korisničko sučelje (engl. user interface). U našem slučaju riječ je o datoteci main.xml smještenoj u mapi layout, u slučaju više različitih XML datoteka kojima se kreira korisničko sučelje, sve one bit će smještene u mapi layout. Istaknimo odmah i datoteku strings.xml u sklopu mape values, radi se o pomoćnoj datoteci, u njoj se primjerice definiraju stringovi koji se ispisuju u aplikaciji (npr. natpis na nekom gumbiću). Iako u ovom projektu nije bilo potrebe za uredivanjem, nikako ne smijemo preskočiti datoteku AndroidManifest.xml. Riječ je o datoteci u kojoj ćemo kreirati različite dozvole za našu aplikaciju, primjerice dozvolu aplikaciji za spajanje na internet ili pak kako projekt bude postajao kompleksan unosit ćemo različite Java klase, za sad na to Slika 7: Mape i organizacija projekta gledajmo kao na neku vrstu evidencije. AndroidManifest.xml datoteka je vrlo važna i za samo predstavljanje aplikacije, tako sadrži podatke Version code verziju aplikacije, svaka nova verzija se inkrementira za jedan. Za razliku od toga Version name je proizvoljan string, možemo započeti sa 1.0, nova verzija 1.1, još novija 1.2, a onda opet novu verziju samo prebaciti na 2.0. Eclipse IDE je od velike pomoći prilikom uredivanja ovih postavki, nudi i grafičku manipulaciju, a svakako i tekstualno uredivanje XML datoteke. Kao što smo vidjeli, ovo je tipična hijerarhija jednog Android projekta. Nakon što izradimo korisničko sučelje, Java kôd Pozadina koja je jedina klasa u ovom projektu ima implementirane metode kojima prikazuje i manipulira proslijedenim korisničkim sučeljem. Pogledajmo kako izgleda main.xml datoteka kojom smo zapravo kreirali ko- 18

19 risničko sučelje. Ona sadrži četiri gumbića, svaki gumbić ima jedinstveni id identifikacijski string, koji je zapravo pohranjen u obliku broja, ali u samostalno generiranom Java dokumentu smještenom u mapi gen. O samoj strukturi korisničkog sučelja govorit ćemo kasnije kada se budemo više bavili izradom korisničkog sučelja. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" xmlns:tools=" android:id="@+id/izgled" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/btnplava" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="plava" />... </LinearLayout> Kako se ne bi ponavljali, kôd za ostale gumbiće (engl. Button) je isti, osim atributa id i text, koji su u našem slučaju odnose još na crvenu, zelenu i žutu boju. Ukoliko sada samo pogledate Java kôd Pozadina, ono što treba istaknuti je sljedeći dio kôda: public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Taj dio koda odnosi se upravo na prikaz korisničkog sučelja main.xml. U nastavku ćemo opisati što smo implementirali u samu klasu, a potom ćemo dati cijeli kôd. Prije svega imamo metodu OnClickListener koja je glavna metoda ove aplikacije i u njoj na temelju odabira gumbića izvršavat će se promjena boje pozadine. Switch case smo koristili za kontrolu izbora gumbića i to na temelju proslijedenih vrijednosti identifikacijskih brojeva id. Neka Vas ne zamara organizacija paketa koje je potrebno uvesti (engl. import) u klasu, Eclipse i tu priskače u pomoć: Source Organize Imports ili kraticama na tipkovnici Ctrl + Shift + O. 19

20 Pozadina.java package com.example.pozadina; import android.app.activity; public class Pozadina extends Activity implements OnClickListener{ Button btnplava, btncrvena, btnzelena, btnzuta; LinearLayout public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); btnplava = (Button) findviewbyid(r.id.btnplava); btncrvena = (Button) findviewbyid(r.id.btncrvena); btnzelena = (Button) findviewbyid(r.id.btnzelena); btnzuta = (Button) findviewbyid(r.id.btnzuta); izgled = (LinearLayout) findviewbyid(r.id.izgled); btnplava.setonclicklistener(this); btncrvena.setonclicklistener(this); btnzelena.setonclicklistener(this); btnzuta.setonclicklistener(this); public void onclick(view v) { switch(v.getid()){ case R.id.btnCrvena: izgled.setbackgroundcolor(color.red); break; case R.id.btnPlava: izgled.setbackgroundcolor(color.blue); break; case R.id.btnZelena: izgled.setbackgroundcolor(color.green); break; case R.id.btnZuta: izgled.setbackgroundcolor(color.yellow); break; 20

21 Prostalo je još samo kompajlirati i pokrenuti našu prvu aplikaciju, u Eclipse potražite: Run Run ili jednostavnije Ctrl + F11. Slika 8: Izgled pri pokretanju aplikacije Slika 9: Odabrali smo zelenu pozadinu 21

22 3.4 Od početka do kraja jedne aktivnosti Aktivnost (engl. Activity) fundamentalan je pojam kada govorimo o Android aplikacijama. Aktivnost predstavlja sve ono što se pojavi na ekranu, ali u danom trenutku. Dakle, ukoliko napravimo dodir i dode do promjene na ekranu, to je već druga aktivnost. To i nije u potpunosti istina uzmu li se u obzir dijaloški okviri koji su dio dane aktivnosti. Svaka druga aktivnost odgovor je na neki poziv Java klase i metoda koje ta klasa u sebi sadrži. E sad stvar postaje malo komplicirana, ukoliko prelazite iz jedne aktivnosti u drugu dobro je voditi računa što učiniti s prethodnom aktivnosti. Upravo to pitanje vodi nas do pojma životnog ciklusa jedne aktivnosti 7. Svaka aktivnost u aplikaciji može biti proslijedena nekom od sljedećih dogadaja: oncreate inicijalizacija aktivnosti onstart aktivnost je u prvom planu, odnosno vidljiva korisniku onrestart aktivnost mijenja stanje iz zaustavljenog u radno onpause radno stanje aktivnosti je pauzirano onresume iz pauziranog stanja aktivnost prelazi u radno onstop aktivnost je zaustavljena i nije vidljiva korisniku ondestroy aktivnost je u potpunosti zaustavljena Na temelju ovih dogadaja može se razmatrati životni ciklus aktivnosti, odnostno početak i kraj same aplikacije. Detaljan pregled možete vidjeti na slici 10 ili potražiti više u [10] na str. 29. Prisjetite se malo kako je organiziran projekt i koje sve mape sadrži. Naime, novu aktivnost moguće je kreirati u sljedećih nekoliko koraka: 1. Desni klik na paket u mapi src New Class 2. Desni klik na mapu layout New File 3. Dodati novi <activity> element u AndroidManifest.xml čime ćemo evidentirati novu aktivnost u našoj aplikaciji. 7 U engleskom jeziku ovaj pojam popularno se naziva Activity Lifecycle. 22

23 Slika 10: Životni ciklus aplikacije Activity Lifecycle 3.5 Korisničko sučelje Korisničko sučelje (engl. User Interface UI) je jedini element aplikacije vidljiv korisniku i pomoću njega korisnik ostvaruje interakciju sa samom aplikacijom. Android nudi razne unaprijed kreirane UI komponente koje omogućuju laku izradu grafičko korisničkog sučelja za aplikaciju. Svi elementi korisničkog sučelja u Android aplikaciji izradeni su pomoću View i ViewGroup objekata (engl. View pogled, gledište, stajalište, vidik). View je objekt prikazan na ekranu koji omogućava interakciju. ViewGroup je takoder objekt koji sadrži druge objekte View i ViewGroup kako bi se pravilno definirao izgled korisničkog sučelja. Najjednostavniji i najefektivniji način da se izradi korisničko sučelje je s XML datotekom. Naime, korisničko sučelje moguće je izraditi na dva načina: pomoću 23

24 XML datoteke ili programiranjem unutar Java klase. Zanimljivo je kako je ime XML elementa preuzeto i jednako se koristi i unutar Java klase. Tako primjerice <TextView> element kreira TextView dodatak unutar našeg korisničkog sučelja koji je zaslužan za prikaz teksta na ekranu. Nešto kompleksniji element je <LinearLayout> koji kreira ViewGroup, odnosno vizualnu strukturu cjelokupnog korisničkog sučelja. Prednost izrade korisničkog sučelja pomoću XML datoteke je u mogućnosti odvajanja prikaza korisničkog sučelja od samog Java kôda. Jednostavno rečeno korisničko sučelje se nalazi izvan aplikacijskog kôda, možete ga mijenjati, uredivati, bez da se mijenja izvorni kôd aplikacije ili da se sama aplikacija rekompajlira. Ovo je zgodno iskoristiti prilikom izrade različitih korisničkih sučelja čija se razlika temelji na razlikama u veličini ekrana samih uredaja za koje je aplikacija namijenjena. Svaka datoteka s kojom se definira vizualni raspored (engl. Layout), odnosno izgled, mora sadržavati jedan korijenski element (engl. root element) koji čini View ili ViewGroup. Najčešći vizualni rasporedi kojima se definira razpored objekata su sljedeći: LinearLayout, RelativeLayout, ListView, FrameView, GridView, Table- Layout i dr. Prilikom izrade korijenskog elementa definira se i XML shema koja ima svoju strogu Androidsku konvenciju: <LinearLayout xmlns:android=" Svaki View i ViewGroup objekt podržava svoju paletu XML atributa. Tim atributima definira se veličina teksta, boja pozadine, orijentacija, pozicija i sl. Svi objekti mogu imati jedinstveni broj id kojima je omogućeno upravljanje tim objektima. Ovaj atribut prilikom izrade korisničkog sučelja uzima se kao string, ali nakon kompajliranja aplikacije on je pohranjen kao cijeli broj. Primjerice, ukoliko želimo gumbiću za zatvaranje aplikacije dodijeliti jedinstveni id to možemo učiniti na sljedeći način: android:id="@+id/buttonzatvori" XML layout atributi obično su deklarirani layout nešto i dva najčešća atributa odnose se na širinu i visinu objekta (layout width i layout height). Moramo naglasiti kako definirati visinu i širinu apsolutnim jedinicama kao što je pixel nije preporučljivo, prosto iz razloga u razlikama veličine ekrana. Puno je bolje koristiti relativne mjere kao što je density-independent pixel (dp), za veličinu teksta scaled pixel (sp). U praksi, najčešće se atributima za širinu i visinu pridružuju sljedeći izrazi: wrap content veličina objekta, širina ili visina, bit će odredena veličinom sadržaja (tekstom) koji ispunjava taj objekt fill parent (preimenovano u match parent u API razine 8) veličina objekta je velika koliko je velik roditeljski element, a u slučaju korijenskog elementa, veličina odgovara cijeloj visini ili širini ekrana uredaja. 24

25 Prisjetite se kako smo u prethodnom poglavlju pokazali izradu aktivnosti u tri koraka. Na sljedećem jednostavnom primjeru pogledajmo kako je napravljeno jedno korisničko sučelje kojim se prikazuje tekst i gumbić. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ukoliko vidite ovaj tekst na emulatoru?! :) " /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="naš prvi gumbić!!!!! " /> </LinearLayout> Na emulatoru biste trebali dobiti korisničko sučelje slično (ovisno o verziji emulatora) kao na slici 11: Slika 11: Prvo jednostavno korisničko sučelje 25

26 Primjetite kako je orijentacija vertikalna android:orientation= vertical pa su gradivni elementi poslagani linearno jedan ispod drugog. U slučaju da je orijentacija horizontalna elementi bi bili poslagani s lijeva na desno. Rekli smo kako je korisničko sučelje XML datotekom odvojeno od aplikacijskog koda, no ipak moramo reći i kako se u Java klasi poziva XML datoteka. Metodi setcontentview() unutar aktivnosti proslijedi se odgovarajući resurs našeg XML dokumenta. Resurs je oblika R.layout.naziv xml datoteke, prikaz korisničkog sučelja iz prošlog primjera gdje je XML dokument bio prviui.xml implementiran je na sljedeći način: public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.prviui); U nekoliko navrata smo govorili o View i ViewGroup objektima, krajnje je vrijeme i da kažemo kako se pravi instanca ovih klasa u Java kôdu. Takoder smo naglasili jednakost u nazivima XML elemenata kod XML datoteke i Java klase, kao i način na koji ćemo manipulirati pojedinim objektima. Ovo je trenutak kada se na objekt pozivamo pomoću njegovog jedinstvenog id-a. Zapravo, metodi findviewbyid() proslijedujemo id željenog objekta. Ukoliko za gumbić iz prethodnog primjera želimo napraviti instancu u Java klasi PrviUI.java, dovoljno je u sklopu metode oncreate() deklarirati objekt Button: Button prvigumbic = (Button) findviewbyid(r.id.button); Primjetite i kako smo napravili kastanje, jer metoda findviewbyid() prilagodena je za sve vrste View objekta, a u našem slučaju konkretno treba nam objekt klase Button. U nastavku je moguće praviti pozive na ovaj gumbić, vrlo često može se vidjeti nešto ovako: prvigumbic.setonclicklistener(this); što bi značilo da se prilikom dodira gumbića poziva metoda onclick(). (Možete se vratiti na kôd iz naše prve aplikacije i pogledati kako je implementirana metoda onclick()). Eclipse nudi široku paletu standardnih vizalnih elemenata koji krase korisničko sučelje, kao što su: TextView, Button, ChackBox, RadioButton, Spinner, ProgressBar i dr. Mnogi elementi mogu se implementirati tekstualno u XML datoteci, ali mnoge je znatno lakše grafički pozicionirati. Naime, Eclipse nudi mogućnost automatskog prikazivanja izrade korisničkog sučelja i mogućnost grafičkog uredivanja, koje se manifestira promjenama u XML datoteci. Za izradu korisničkog sučelja prisjetimo se koliko su važni resursi, odnosno izvori s željenim datotekama. Pogledajte još jednom kako je izgledala organizacija projekta Slika 7. Mapa res sadrži podmape drawable, layout, values i druge, a svaka od tih podmapa ima specifičnu ulogu 26

27 prilikom izrade korisničkog sučelja. Tako su u mapi drawable smještene slike koje su optimizirane za prikaz u sklopu korisničkog sučelja, mapa layout kako smo u više navrata spomenuli sadrži XML datoteke kojima su kreirane aktivnosti, a mapa values sadrži kompajlirane XML datoteke u različite resurse. Prilikom izrade korisničkog sučelja treba voditi računa i o sadržaju koji nije unaprijed odreden, odnosno sadržaju čija je izmjena dinamična. To može biti sadržaj čije su promjene zasnovane na parsiranju (engl. parsing), prosljedivanju sadržaja s interneta ili primjerice učitavanje slika s nekih drugih resursa. Upravo takav slučaj bilo je potrebno implementirati u našu aplikaciju za praćenje promjena na stranicama Odjela za matematiku, što ćete vidjeti u sljedećem poglavlju. Klasa AdapterView izradena je u svrhu upravljanja dinamičkim sadržajem, njezina podklasa Adapter koristi se za vezivanje podataka na odgovarajuće mjesto u korisničkom sučelju. Podklasa Adapter ima ulogu posrednika izmedu izvora podataka i klase AdapterView koja se pak brine o samom prikazu tih podataka. Medu vizualnim elementima koje smo prethodno spomenuli našli su se i ListView i GridView, njih sad izdvajamo iz razloga što se s njihovim sadržajima najčešće upravlja preko Adaptera. ListView prikazuje sadržaj stupčasto i ima mogućnost pomicanja sadržaja gore dolje (engl. scroll), što je kod opsežnijih ispisa vrlo korisno. GridView slično kao i ListView prikazuje mrežu podataka (retci i stupci) i koristi se primjerice za prikaz više manjih sličica na jednom ekranu te takoder ima mogućnost pomicanja gore dolje. Ukoliko imamo listu čiji sadržaj dinamički mijenjamo, sadržaj možemo dodavati u listu u obliku mapa (vidjet ćemo kako smo to radili s Hash mapama za našu aplikaciju), zatim pomoću klase ListAdapter uzimamo podatke i spajamo s izlazom, tj. korisničkim sučeljem. ListAdapter izradili smo pomoću konstruktora, kako je već predvideno: public SimpleAdapter (Context context, List<? extends Map<String,?>> data, int resource, String[] from, int[] to) Parametri konstruktora: context pokazuje iz kojeg konteksta je povezana lista sa adapterom data sadržaj liste, tj. lista mapa, sadrži podatke za svaki redak u ispisu resources identificirati XML datoteku zaduženu za prikaz ispisa. from Vrijednosti pohranjene u stringovima. to Ispis vrijednosti iz stringova, povezane sa id elemenata za ispis. Na kraju jednostavnom metodom postavljamo ispis adaptera: setlistadapter(listadapter) 27

28 3.6 Intents Android aplikacija može sadržavati više aktivnosti i upravo u ovom poglavlju govorimo o tome kako pravilno upravljati, pozivati iz jedne aktivnosti neku drugu. U Androidu pozivanje aktivnosti ostvaruje se namjerom. Intents (engl. namjera) predstavlja jedan apstraktni okidač kojim se vrši poziv aktivnosti uz niz drugih mogućnosti. Napomenimo i to kako Android aplikacija može biti koncipirana na tri načina; kao aktivnost, kao servis (radi u pozadini) i kao svojevrsni prijemnik. Bilo kako da je naša aplikacija zamišljena, realizacija njezinih radnji odvijat će se s namjerama. Upravo preko intenta mi ćemo pozivati novu aktivnost startactivity(intent) ili pokretati servis startservice(intent) ili za pozadinsku komunikaciju sa servisom koristiti bindservice(intent, ServiceConnection, int). Pokažimo na jednom jednostavnom primjeru s predavanja kako se namjerom poziva aktivnost. Projekt s predavanja u paketu jedinstvenog imena net.cs76.lectures.intents06 sadrži dvije aktivnosti ili dva XML dokumenta main.xml i thumbsup.xml s pripadnim Java klasama Code6.java i ThumbsUp.java. package net.cs76.lectures.intents06; import net.cs76.lectures.intents06.r; public class Code6 extends Activity implements public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button yes = (Button)findViewById(R.id.yes); Button no = (Button)findViewById(R.id.no); yes.setonclicklistener(this); no.setonclicklistener(this); public void onclick(view v) { switch(v.getid()) { case R.id.yes: Intent i = new Intent(this, ThumbsUp.class); startactivity(i); finish(); break; case R.id.no: default: finish(); 28

29 Dio koji ćemo izdvojiti iz kôda odnosi se naravno na namjeru: Intent i = new Intent(this, ThumbsUp.class); startactivity(i); Kao što vidimo, najprije smo napravili objekt Intent pomoću konstruktora, primjetite kako se konstruktor sastoji iz dva dijela this odnosi se na klasu iz koje se poziva nova aktivnost (mogli smo staviti i Code6.class), a ThumbsUp.class naziv je klase, tj. aktivnosti koja se poziva. Metoda startactivity(i) pokreće izmjene u aplikaciji. Pogledajmo i kako izgleda klasa ThumbsUp.class: public class ThumbsUp extends Activity implements OnClickListener public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.thumbsup); Button ok = (Button)findViewById(R.id.OK); ok.setonclicklistener(this); public void onclick(view v) { finish(); Slika 12: Pozivanje aktivnosti pomoću Intenta 29

30 Lako se uoči kako u klasi ThumbsUp.class nema sličice, no ona se zapravo poziva u XML datoteci, pravi primjer odvojenog korisničkog sučelja od aplikacijskog kôda. No isto tako napomenimo da se na sličicu samo referenciramo u XML datoteci, naime sličica se nalazi u mapi drawable. Vidjeli smo kako se pomoću namjere pokreće nova aktivnost, želimo još napomenuti kako se nerijetko zna dogoditi da se zaboravi nova aktivnost evidentirati u AndroidManifest.xml datoteci. Bez evidencije nove aktivnosti, stvar nikako neće raditi, a što je najgore kompajler se neće buniti. Dovoljno je dodati unutar elementa <application> element <activity>. Navedimo i za prethodni primjer kako je izradena evidencija: <activity android:name="net.cs76.lectures.intents06.thumbsup"></activity> Atribut android:name elementa <activity> zahtjeva ime klase koja će se pozivati, nešto kraći zapis bio bi samo: <activity android:name=".thumbsup"></activity> čemu se još mogu dodati razni atributi, primjerice android:label kojim se izraduje naslov aktivnosti. Prilikom promjene aktivnosti nerijetko se pomoću namjera prenose odredeni podaci u novu aktivnost. I taj slučaj vidjet ćemo kako je raliziran u našoj aplikaciji, za sada samo opišimo kojim metodama se vrši prijenos podataka. Najprije se objektu namjere Intent u obliku stringa spremaju podaci: Intent.putExtra(String name, String) Intent sada prenosi podatke u novu aktivnost u sklopu koje se izvade podaci i dodijele nekom stringu: Intent.getStringExtra(String name) Intent je vrlo moćan apstraktan objekt, na jedan intuitivan način povezuje niz aktivnosti unutar aplikacije, čak povezuje i aktivnosti koje su izvan naše aplikacije. Primjerice, odgovarajućim metodama moguće je iz naše aktivnosti pokrenuti internet preglednik. Za te metode možemo reći kao da dolaze u paru: action akcija koja će se izvršiti, npr. ACTION VIEW, ACTION DIAL,... data podaci s kojima Intent upravlja. Pogledajmo jednostavan primjer Intent objekta koji je zadužen za pozivanje internet preglednika i otvaranje internet stranice Odjela za matematiku: Intent preglednik = new Intent(); preglednik.setaction(intent.action_view); preglednik.setdata(uri.parse(" startactivity(preglednik); 30

31 Do sada smo obradili samo dijelove nužne za izradu naše aplikacije i koji se gotovo uvijek javljaju u nekim drugim aplikacijama. Za više informacija, svakako preporučujemo pogledati stranicu (vidi [15]) namijenjenu programerima s detaljnim popisom metoda i njihovim objašnjenjima. S pričom o namjerama bismo zatvorili ovo poglavlje. Budite svjesni da smo se samo na kratko dotakli osnovnih stvari koje će nam biti neophodne u daljnjem radu. Svaka aplikacija zahtjeva svoj tlocrt prije nego uopće i prijedete na programiranje. Potrebno je zapitati se što želimo od naše aplikacije, a zatim u potrazi na odgovor kako želim zaista to i učiniti. Nezaobilazna referenca je svakako stranica namijenjena programerima za Android operativni sustav. Stranica broji mnoštvo poučnih primjera te svakako sadrži klase s opisanim metodama koje su u njima implementirane i koje su programerima na raspolaganju. Korisno je najprije upoznati se s klasom jer se u njoj upravo krije mnoštvo metoda za koje nije potrebno dodatno razbijati glavu i smišljati neke nove metode. I za kraj, stranice koje ne želite zaobići:

32 4 Praćenje obavijesti Odjela za matematiku Korak po korak došli smo i do naše aplikacije koja objedinjuje dosadašnje znanje na jednoj višoj razini. Prije same izrade aplikacije vodeni smo idejom napraviti aplikaciju koja može biti od koristi studentima i profesorima Odjela za matematiku. Jedna od takvih ideja koju smo nastojali realizirati u našem radu svodila se na brzu pristupačnost nekim osnovnim obavijestima. Tako smo se odlučili pratiti obavijesti vezane za Matematički kolokvij i Seminar za optimizaciju i primjene. Obavijesti vezane uz ova predavanja namijenjene su svim znanstveno-nastavnim djelatnicima, studentima Sveučilišta u Osijeku i mnogim drugima koji se u tome pronalaze. Takoder smo pratili obavijesti s Odjela (Obavijesti iz referade), zatim obavijesti vezane za kolokvije i ispite s ciljem učiniti ove obavijesti studentima znatno pristupačnijim. Sad je već sasvim izvjesno kako naša aplikacija zahtjeva pristup internetu, odnosno obavijestima na internet stranicama Odjela za matematiku. Sigurno već naslućujete kako se u pozadini cijele priče krije prosljedivanje podataka, popularnije nazvano parsiranje (engl. parsing). Na prvu loptu pomislili bismo kako se radi u parsiranju HTML datoteka s čim treba biti jako oprezan kad je Android u pitanju, jer Android zahtjeva čistu sintaksu datoteke s podacima koji se parsiraju. Moramo priznati kako se u igri prvo našao XML, no nakon istraživanja i usporedbi glavna uloga pripala je JSON-u (engl. JavaScript Object Notation). Na sva pitanja o JSON-u vezana uz našu aplikaciju, pokušat ćemo odogovoriti u sljedećem potpoglavlju. 4.1 JSON JSON (engl. JavaScript Object Notation) predstavlja format za razmjenu podataka. Format je tekstualnog oblika, razumljiv ljudima, a uredajima lak za parsiranje i uredivanje. Iz samog imena zaključujete da se temelji na podskupu JavaScript programskog jezika. JSON je potpuno neovisan o programskom jezik, ali koristi konvencije koje su poznate ljubiteljima C jezika, uključujući C, C++, C#, Java, JavaScript, Perl, Python i mnoge druge. JSON je izgraden na dvije strukture: Kao skup parova oblika ime/vrijednost. U različitim programskim jezicim to se realizira kao objekt, rekord, struktura, hash tablica, asocijativno polje i sl. Uredena lista vrijednosti. Ovo se pak realizira kao polje, vektor, popis i sl. Ova univerzalna struktura podataka podržana je i od strane Androida, izdvojimo odmah klase koje su podržane JSONArray, JSONObject, JSONStringer, JSONTokener. Ipak, prije nego prijedemo govoriti kako smo parsirali JSON na našu aplikaciju, pokažimo još kakav sve zapis podržava JSON. 32

33 JSON objekt je neureden skup parova ime/vrijednost. Sintaksa je jednostavna, parovi su umetnuti medu vitičaste zagrade {,, ime je od vrijednosti odvojeno dvotočkom :, a parovi su odvojeni zarezom,. Vidite shemu na Slici 13 Slika 13: JSON objekt JSON niz je uredeni skup vrijednosti. Vrijednosti se nalaze unutar uglatih zagrada [, ], a razdvojene su zarezom,. Vidite shemu na Slici 14 Vrijednosti mogu biti: Slika 14: JSON niz string tekst, ograničen dvostrukim navodnicima number broj, može biti cjelobrojni, realni, decimalni; podržano označavanje eksponenata e, e+, e, E, E+, E object misli se na JSON objekt array misli se na JSON niz boolean true ili false logičke vrijednosti null nedefinirana vrijednost Kako vidimo struktura podržava ugnježdivanje. Slike su preuzete sa službene stranice i za više detalja pogledajte [17]. Mi smo odabrali primjer JSON-a koji sadrži obavijesti o kolokvijima, uočite kako se radi o JSON objektu, imenu kolokvij pridružili smo JSON niz. U JSON nizu vrijednosti su JSON objekti (ugnježdivanje), a parovi su: predmet, obavijest, link. 33

34 kolokvij.json { "kolokvij": [ { "predmet": "Linearna algebra I", "obavijest": "U srijedu 31. listopada piše se prvi kolokvij.", "link": "", { "predmet": "Numerička matematika", "obavijest": "Postavljeni su rezultati kolokvija.", "link": " ] Primjetite i kako smo kod prve obavijesti ostavili vrijednost za link prazan string, što će u aplikaciji biti provjereno te ukoliko postoji poveznica na stranicu s rezultatima, tada će to polje u listi biti osjetljivo na dodir i moći će pokrenuti preglednik kako bi se prikazala referencirana stranica. Ostale JSON datoteke koje su korištene u aplikaciji možete pronaći na sljedećoj adresi vdjurack/android/. Kako je parsiranje podataka ključno za našu aplikaciju u nastavku donosimo JSONParser klasu. 4.2 JSONParser Što klasa JSONParser čini opisuje jedna jedina njezina metoda getjsonfromurl(string). Metoda pravi HTTP zahtjev, od poslužitelja (engl. server) dobiva JSON podatke i u konačnici vraća JSON objekt. Opravdano je praviti posebno klasu za parsiranje podataka, prvenstveno se tako izbjegla redundantnost jer većina ostalih Java datoteka zahtjeva JSON objekt s kojim će da radi. Na samom početku definirali smo varijable i konstruktor: static InputStream is = null; static JSONObject jobj = null; static String json = ""; public JSONParser() { 34

35 Metoda getjsonfromurl(string url) najprije pravi HTTP zahtjev i to POST metodom kojoj se predaje adresa JSON datoteke u obliku stringa. DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse httpresponse = httpclient.execute(httppost); HttpEntity httpentity = httpresponse.getentity(); is = httpentity.getcontent(); Vidimo da se sadržaj nalazi u objektu is koji je zapravo InputStream, predstoji nam dani sadržaj iz bitovnog zapisa prebaciti ili konvertirati u niz znakova. BufferedReader reader = new BufferedReader( new InputStreamReader(is, "cp-1250")); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readline())!= null) { sb.append(line + "\n"); is.close(); json = sb.tostring(); Primjetite da smo za konvertitanje znakova koristili klasu InputStreamReader i pri tome naveli dekodiranje znakova prema konvencij cp Preostalo je još samo JSON string s pripadnim parovima ime/vrijednost predati konstruktoru JSON objekta koji će ova metoda na kraju vratiti. jobj = new JSONObject(json); Napomenimo samo kako smo klasu JSONParser i njezinu metodu getjsonfromurl() opisali istaknuvši ključne elemente, a dijelove kôda koji su zaduženi za evidenciju grešaka prilikom slanja HTTP zahtjeva, konvertiranja i parsiranja JSON stringa u JSON objekt nismo posebno istaknuli. Sve o HTTP zahtjevu možete potražiti u [11]. Spomenuli smo kako Android podržava JSON format podataka, o tome nešto više pogledajte na Android službenim stranicama [16], izuzetno kvalitenti su i tutorijali koje možete potražiti na stranicama vezanim za izradu HTTP zahtjeva, parsiranje JSON podataka i mnoštvo drugih. 8 cp-1250 ili windows-1250 kodiranje namijenjeno je za reprezentaciju teksta jezika centralne i istočne Europe, na taj način uspješno smo parsirali i dijakritičke znakove 35

36 4.3 MathosMonitoring MathosMonitoring naziv je projekta naše aplikacije namijenjene za praćenje (engl. monitoring) obavijesti Odjela za matematiku. Korisničko sučelje temelji se na nekoliko XML datoteka: main.xml, main lista.xml, main pojedinacno.xml, obavijesti lista.xml, kolokviji lista.xml, ispiti lista.xml. Datoteka od koje smo krenuli s prikazom korisničkog sučelja je main.xml. Kako smo htjeli korisničko sučelje učiniti jednostavnim i ne zatrpati ga mnoštvom gumbića, odlučili smo se za padajući izbornik, a View objekt kojim smo to učinili je spinner. Spinner čini padajući izbornik, odnosno listu elemenata dobivenih iz stringa pomoću adaptera, o tome nešto više uskoro kada budemo gledali Java datoteke. Kada smo govorili o korisničkom sučelju spomenuli smo upravo adapter koji ima ulogu posrednika u prenošenju i prikazivanju podataka s dinamičkim promjenama. Sama struktura glavnog korisničkog sučelja, odnosno main.xml datoteke je ugniježdena i možemo ju prikazati Slikom 15: Naime, u prvom redu imamo verti- Slika 15: Struktura korisničkog sučelja kalno pozicioniranje elemenata, a drugom klasom LinearLayouta padajući izbornik i gumbić za izlazak iz aplikacije smo postavili horizontalno, a zatim dolazi lista.kako to sve zajedno izgleda možemo vidjeti na sljedećoj slici: Slika 16: Korisničko sučelje aplikacije MathosMonitoring 36

37 Dodirom na sadržaj liste otvara se nova aktivnost kojoj su preneseni podaci i ispis je nešto detaljniji. Na isti način uraden je prikaz informacija vezanih za Seminar Slika 17: Matematički kolokvij za optimizaciju i primjene. Istaknimo kako dodirom na spinner u prvi plan dolazi lista s mogućim odabirima, a aktivnosti iz pozadine postaju nedodirljive. Odabir elementa iz spinnera je jedinstven, nije moguće odabrati istovremeno dva elementa, to možete vidjeti na slici 18: Slika 18: Odabir elementa iz spinnera Iako smo već opisali samu izradu korisničkog sučelja i opisali strukturu korisničkog sučelja za našu aplikaciju, XML kôd je sljedeći: 37

38 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingtop="10dp" > <Spinner android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.9" /> <Button style="buttonstyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.1" /> </LinearLayout> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="40dp" android:layout_marginleft="5dp" android:layout_marginright="5dp" android:background="#ffffff" android:padding="10dp" /> </LinearLayout> 38

39 U nastavku najprije dajmo odgovor na pitanje: Kako napraviti spinner s elementima za odabir? U odgovarajući Java kôd kreiramo String s željenim elementima: String[] odabir = {"Matematički kolokvij", "Seminar za opt. i primjene", "Obavijesti iz referade", "Kolokviji", "Ispiti"; Kako se radi o spinneru odabir elemenata nije podržan metodom OnClick već OnItemSelected, pogledajmo i kako izgleda implementacija spinnera, odnosno adaptera: Spinner popis = (Spinner) findviewbyid(r.id.spinner1); popis.setonitemselectedlistener(this); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_item, odabir); adapter.setdropdownviewresource( android.r.layout.simple_spinner_dropdown_item); popis.setadapter(adapter); Metodom setdropdownviewresource definirali smo izgled padajućeg izbornika. Kako ne bismo izgubili nit vodilju odmah opišimo i implementaciju metode OnItemSelected. Naime, metoda sadrži cjelobrojni podatak o poziciji svakog elementa u listi i upravo pomoću njega izvršena je manipulacija odabira nove aktivnosti. Numeriranje elemenata Stringa započinje s 0, kao i u većina drugih programskih jezika. public void onitemselected(adapterview<?> parent,view v,int pos,long id){ switch(pos){ case 1: Intent i1 = new Intent(this, Seminari.class); startactivity(i1); finish(); break; Ostali slučajevi su analogno realizirani. Ovdje bi jedino još istaknuli metodu finish() koja je zadužena za zatvaranje trenutne aktivnosti prilikom prelaska na novu aktivnost. Ovo je učinjeno iz razloga da prilikom uporabe gumbića back za povratak na prethodnu aktivnost aplikacija bude zatvorena. U prethodnom poglavlju opisali smo princip rada JSON-a i parsera koji smo koristili. Ovdje donosimo implementaciju relevantnih podataka u listu. Od čega krenuti? Jasno je kako nam treba odgovarajuća lista: ArrayList<HashMap<String,String>> matkolokvijlist = new ArrayList<HashMap<String,String>>(); Uočite da na ovaj način od liste matkolokvijlist zahtjevamo da njezini elementi budu objekti klase HashMap<String,String>. 39

40 Metoda getjsonfromurl uzima odgovarajuću adresu gdje je pohranjen JSON objekt i parsira JSON podatke. Pogledajmo i kako smo implementirali parsiranje tih podataka: String url = " android/matematickikolokvij.json"; JSONArray matkolokvij = null; JSONParser parser = new JSONParser(); JSONObject object = parser.getjsonfromurl(url); try{ matkolokvij=object.getjsonarray("matkolokvij"); for(int i=0; i<matkolokvij.length(); i++){ JSONObject jo = matkolokvij.getjsonobject(i); String datum = jo.getstring("datum"); String autor = jo.getstring("autor"); String ustanova = jo.getstring("ustanova"); String naslov = jo.getstring("naslov"); String sazetak = jo.getstring("sazetak"); HashMap<String,String> map = new HashMap<String,String>(); map.put("datum", datum); map.put("autor", autor); map.put("ustanova", ustanova); map.put("naslov", naslov); map.put("sazetak", sazetak); matkolokvijlist.add(map); catch(jsonexception e){ throw new RuntimeException(e); Objektu matkolokvij pridružili smo JSON niz koji se dobije parsiranje podataka primjenom metode getjsonfromurl. JSON niz u sebi sadrži ugniježdene JSON objekte s parovima: datum, autor, ustanova, naslov i sažetak. Za svaki pojedinačni JSON objekt jo podatke smo izvadili i spremili u odgovarajuće Stringove. Zatim smo u objekt map primjenom metode put kao u neku vrstu mape pohranili dane Stringove i odgovarajuće ključeve. Upravo ti ključevi iskorišteni su kod izrade adaptera za ispis elemenata u listu. Princip rada je jednostavan, iz liste matkolokvijlist se vade podaci (pohranjeni u obliku HashMap), pridružuju se na izlazne elemente definirane u datoteci main lista.xml. Vidimo da su svi elementi u toj dato- 40

41 teci zaduženi za prikaz teksta: datum, autor, naslov, sazetak i ustanova. Java kôd kojim smo implementirali ovaj adapter je sljedeći: ListAdapter adapter2 = new SimpleAdapter(this, matkolokvijlist, R.layout.main_lista, new String[] { "datum", "autor", "naslov", "sazetak", "ustanova", new int[] {R.id.datum, R.id.autor, R.id.naslov, R.id.sazetak,R.id.ustanova); setlistadapter(adapter2); Svakako bi izdvojili i dio aplikacije zadužen za prikaz obavijesti vezanih za kolokvije. S programerske strane za ovaj dio aplikacije smo zamislili i da nosi poveznice na stranice s rezultatima čiji prikaz bi bio putem web preglednika. Takoder ovaj dio sadrži i obavijesti o terminu održavanja idućih kolokvija. Manji problem predstavlja filtriranje onih elemenata liste koji u sebi ne sadrže poveznicu, jer nismo htjeli te elemente liste napraviti osjetljive na dodir. Pogledajmo i dio koda koji se odnosi upravo na ovu realizaciju: Slika 19: Obavijesti za kolokvije ListView lv = getlistview(); lv.setonitemclicklistener(new OnItemClickListener(){ public void onitemclick(adapterview<?> parent, View view, int position, long id){ String link = ((TextView) view.findviewbyid(r.id.link)).gettext().tostring(); if (link!= null &&!link.isempty() ){ Intent preglednik = new Intent(); preglednik.setaction(intent.action_view); preglednik.setdata(uri.parse(link)); startactivity(preglednik); ); Nećemo posebno izdvajati Java kôd zadužen za otvaranje nove aktivnosti i cjeloviti prikaz podataka. Radi se o običnom intentu s proslijedenim podacima metodama putextra(string, String) i getstringextra(string). 41

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

PKI Applet Desktop Application Uputa za instalaciju programske potpore

PKI Applet Desktop Application Uputa za instalaciju programske potpore 1 SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE POTPORE 3 4. INSTALACIJA PROGRAMSKE POTPORE 3 5. DEINSTALACIJA PROGRAMSKE POTPORE 6 2 1. Uvod PKI

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

Backup i Restore C particije ili Windowsa sa NORTON-om

Backup i Restore C particije ili Windowsa sa NORTON-om BRZO KOPIRANJE I RESTAURIRANJE DISKOVA (programski paket Norton SystemWorks) OBJAŠNJENJE Backup i Restore C particije ili Windowsa sa NORTON-om Je li vam se nekada srušio operativni sustav ili pokvario

More information

Introduction To Android

Introduction To Android Introduction To Android Mobile Technologies Symbian OS ios BlackBerry OS Windows Android Introduction to Android Android is an operating system for mobile devices such as smart phones and tablet computers.

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) CSS3 Lab. vježba 6 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) CSS3 P R O G R A M I R A N J E Z A I N T E R N E T Općenito Posljednja verzija Cascading Style Sheetsa, verzija

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce)

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) Geant2 - JRA1 Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) 21.11.2007, CUC2007, Rijeka Što je to JRA1? Glavni zadatak JRA1 (Performance

More information

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme INFOTEH-JAHORINA Vol. 12, March 2013. Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme Igor Dujlović Elektrotehnički fakultet Banja Luka Banja Luka, BiH dujlovic@gmail.com Zoran Đurić Elektrotehnički

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS VMware Workstation ESX ($) vcenter Server ($) (license manager) Server hardware (vmotion, DRS, HA, Storage vmotion) ESXi (freeware) (ESXi freeware is managed by the Virtual Infrastructure (or vsphere)

More information

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije Iskustva u razvoju i implementaciji ADF aplikacije Sadržaj Opis aplikacije za AZ Mirovinski Fond Internacionalizacija aplikacije Integracija sa Oracle Reports Iskorištenje postojeće PL/SQL logike Kreiranje

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Sustavi za praćenje i vođenje procesa Seminarski rad LOGIČKI ANALIZATOR (PC kao instrument) 26. svibnja 2007. Ivan Grubišić 0036404380 1. Logički analizator Logički

More information

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB 10 th International Scientific Conference on Production Engineering DEVELOPMENT AND MODERNIZATION OF PRODUCTION KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

SMARTPHONE TO MICROCONTROLLER COMMUNICATION ANDROID FRAMEWORK FOR STUDENTS

SMARTPHONE TO MICROCONTROLLER COMMUNICATION ANDROID FRAMEWORK FOR STUDENTS DOI: 10.19279/TVZ.PD.2016-4-3-11 SMARTPHONE TO MICROCONTROLLER COMMUNICATION ANDROID FRAMEWORK FOR STUDENTS SUSTAV ZA IZRADU ANDROID APLIKACIJE ZA KOMUNIKACIJU S MIKROUPRAVLJAČEM NAMIJENJEN STUDENTIMA

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold)

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold) Sveučilište u Zagrebu (12 pt, Bold) Ekonomski fakultet (12 pt, Bold) Naziv diplomskog studija (12 pt, Bold) NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad (16 pt, Bold) Ime i prezime studenta/studentice,

More information

Nove značajke u Liferay portalu v6.2. Ivica Čardić Senior Software Engineer, Liferay Inc.

Nove značajke u Liferay portalu v6.2. Ivica Čardić Senior Software Engineer, Liferay Inc. Nove značajke u Liferay portalu v6.2 Ivica Čardić Senior Software Engineer, Liferay Inc. Fokus u Liferay v6.2 Mobilna platforma Poboljšano web iskustvo Kolaboracijska platforma Aplikacijska platforma Mobilna

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom U ovoj vježbi trebate dodati sljedeće view-ove u OnlineVrijednosnice aplikaciju: Details view za Graf model objekte ovaj view će prikazivati

More information

Programiranje Internet aplikacija

Programiranje Internet aplikacija Programiranje Internet aplikacija Čas 8 - HTML 5 Dražen Drašković, Sanja Delčev Neka pravila HTML 5 Nove mogućnosti treba da se zasnivaju na HTML-u, CSS-u, DOM-u i JavaScript-u. Smanjiti potrebu za eksternim

More information

Uputa za korištenje Office365 usluga

Uputa za korištenje Office365 usluga Uputa za korištenje Office365 usluga Sadržaj 1. Prijava na Office365... 1 2. Instalacija Office paketa na Vaše uređaje... 3 2.1. Instalacija Office 2016 alata na Vaše računalo... 3 2.2. Instalacija drugih

More information

Wireframes, Mockups, Prototypes

Wireframes, Mockups, Prototypes Wireframes, Mockups, Prototypes Wireframe je važan alat u dizajnu i razvoju nekog proizvoda Koriste ga svi sudionici uključeni razvoj proizvoda (dizajneri, programeri, project manageri ) Wireframe je nacrt

More information

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom Priručnik za korištenje i brzu instalaciju Sadržaj ŠTO JE TP-LINK TL-WPA4220... 3 KAKO KORISITI TP-LINK TL-WPA4220...

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Android. Osobine. Razvojno okruženje

Android. Osobine. Razvojno okruženje Android Android je operativni sistem za mobilne uređaje kao što su pametni telefoni i tablet računari. Razvio ga je Android Inc. kojeg je kupio Google. Google kompanija je osnovala Open Handset Alliance,

More information

Marko Milošević.

Marko Milošević. Marko Milošević marko643@gmail.com marko.milosevic@pmf.edu.rs ESPB 8 Bodovanje Domaći Kolokvijumi 2x10 2x20 Završni ispit 40 Konsultacije sreda 13-14 četvrtak 16-17 Šabloni dizajna (Design Patterns) Metrika

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 POM - Pomoć korisnicima Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 IZUM, 2016 COBISS, COMARC, COBIB, COLIB, IZUM su zaštićeni znaci u posedu

More information

Kako pokrenuti aplikaciju P-touch Editor

Kako pokrenuti aplikaciju P-touch Editor Kako pokrenuti aplikaciju P-touch Editor Verzija 0 CRO Uvod Važna napomena Sadržaj ovog dokumenta i specifikacije proizvoda podliježu izmjenama bez prethodne najave. Tvrtka Brother zadržava pravo na izmjene,

More information

BCA 6. Question Bank

BCA 6. Question Bank BCA 6 030010601 : Introduction to Mobile Application Development Question Bank Unit 1: Introduction to Android and Development tools Short questions 1. What kind of tool is used to simulate Android application?

More information

<A rel="stylesheet" B="mystylesheet.css" C="text/css" />

<A rel=stylesheet B=mystylesheet.css C=text/css /> 1 od 9 9.4.2013 7:18 EFOS_kol1_2011 - RJEŠENJA 16.4.2011. Uključivanje vanjske mystylesheet.css datoteke sa određenim stilovima, postiže se zadavanjem naredbe unutar HTML koda, koja izgleda ovako:

More information

Objektno orjentirano programiranje

Objektno orjentirano programiranje Objektno orjentirano programiranje Predavanje 4 Objektno orijentirani koncepti Konstruktori Metoda koja se poziva prilikom stvaranja novog objekta Svojstveni su OO programiranju Imaju isto ime kao i klasa

More information

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Josip Kedveš Razvoj mobilnih aplikacija Seminarski rad Kolegij : Softversko

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera 6 8 Cloud usluge 6 9 Aktivni servisi koji nijesu u

More information

Cjenovnik usluga informacionog društva

Cjenovnik usluga informacionog društva Cjenovnik usluga informacionog društva Verzija: 01/2018 Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17 OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Programska podrška

Programska podrška Programska podrška Sadržaj operativni sustav (OS) pojmovi komponente os-a tipovi os-a datotečni sustav organizacija podataka Stranica 2/53 Operativni sustav Operativni sustav je svojevrsna baza na kojoj

More information

SD Module- Android Programming

SD Module- Android Programming Assignment No. 1 SD Module- Android Programming R (2) C (4) V (2) T (2) Total (10) Dated Sign Title: Download Install and Configure Android Studio on Linux /windows platform. Problem Definition: Install

More information

IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU

IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU SVEUČILIŠTE U SPLITU PRIRODOSLOVNO-MATEMATIČKI FAKULTET ZAVRŠNI RAD IZRADA INTERAKTIVNOG TESTA U ANGULAR OKRUŽENJU Student: Krešimir Sudar Mentor: doc.dr.sc. Ani Grubišić Split, rujan 2016. Sadržaj 1.

More information

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb,

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, Case Study Hrvatska pošta: Korisničko iskustvo iz snova Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, 27.12.2018. Sadržaj Hrvatska pošta prije projekta Izazovi projekta Tehnologije korištene

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

UNIT:2 Introduction to Android

UNIT:2 Introduction to Android UNIT:2 Introduction to Android 1 Syllabus 2.1 Overview of Android 2.2 What does Android run On Android Internals? 2.3 Android for mobile apps development 2.5 Environment setup for Android apps Development

More information

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 2 Uvod u Javu Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 12 Java i objektno orijentirano programiranje Programski jezik Java Krajem

More information

Android Development Tutorial. Yi Huang

Android Development Tutorial. Yi Huang Android Development Tutorial Yi Huang Contents What s Android Android architecture Android software development Hello World on Android More 2 3 What s Android Android Phones Sony X10 HTC G1 Samsung i7500

More information

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java)

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java) NEKE OBJEKTNE OSOBINE ORACLE PLSQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java) SAŽETAK Oracle korporacija je 1997. godine objavila Oracle 8.0 verziju baze i nazvala ju objektnorelacijskom.

More information

Upute za pristup bežičnoj mreži Medicinskog fakulteta u Splitu (MS Windows XP) ver 1.1, lipanj 2010.

Upute za pristup bežičnoj mreži Medicinskog fakulteta u Splitu (MS Windows XP) ver 1.1, lipanj 2010. Upute za pristup bežičnoj mreži Medicinskog fakulteta u Splitu (MS Windows XP) ver 1.1, lipanj 2010. Upute za pristup bežičnoj mreži Medicinskog fakulteta u Splitu na Microsoft Windows XP operativnom sustavu

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Stipe Gorenjak, Kineziološki fakultet Sveučilišta u Zagrebu e-mail: stipe.gorenjak@kif.hr Sponzori Ugasite mobitele. Hvala.

More information

TEHNIKA I INFORMATIKA U OBRAZOVANJU

TEHNIKA I INFORMATIKA U OBRAZOVANJU TEHNIKA I INFORMATIKA U OBRAZOVANJU Konferencija 32000 Čačak 9-11. Maja 2008. UDK: 004 : 371 Stručni rad VEZA ZAVISNOSTI ACCESS Momčilo Vujičić 1, Munir Šabanović 2 Rezime: U radu je opisana veza zavisnosti

More information

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore Android App Development Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore Mobile devices (e.g., smartphone, tablet PCs, etc.) are increasingly becoming an essential part of human life

More information

9. RAD S DATOTEKAMA PODATAKA

9. RAD S DATOTEKAMA PODATAKA Rad s datotekama 7-1 9. RAD S DATOTEKAMA PODATAKA U programiranju se često radi sa skupovima podataka koji se čuvaju na jedinicama perfernih memorija, a koji se organizuju u posebne cjeline koje nazivamo

More information

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Danilo Šormaz Razvoj mobilnih aplikacija Seminarski rad Kolegij : Softversko

More information

CAD u građevinarstvu. v.prof.dr. Samir Lemeš. Predavanja za predmet CAD u građevinarstvu. Politehnički fakultet Univerziteta u Zenici, 2018.

CAD u građevinarstvu. v.prof.dr. Samir Lemeš. Predavanja za predmet CAD u građevinarstvu. Politehnički fakultet Univerziteta u Zenici, 2018. CAD u građevinarstvu v.prof.dr. Samir Lemeš Predavanja za predmet CAD u građevinarstvu Politehnički fakultet Univerziteta u Zenici, 2018. Korisnički interfejsi AutoCAD interfejsi Komandna linija Visual

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5 Lab. vježba 5 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) HTML5 P R O G R A M I R A N J E Z A I N T E R N E T Općenito HTML5 je posljednja verzija HyperText Markup

More information

Prije početka instalacije e-kbz korisničkog paketa morate biti sigurni da Vaše PC računalo zadovoljava određene hardverske i softverske preduvjete.

Prije početka instalacije e-kbz korisničkog paketa morate biti sigurni da Vaše PC računalo zadovoljava određene hardverske i softverske preduvjete. Sadržaj 1 UVOD...2 1.1 Spajanje čitača pametnih kartica na računalo...3 2 INSTALACIJA PROGRAMSKOG e-kbz PAKETA...4 2.1 Instalacija pogonskih programa za čitače pametnih kartica...7 2.1.1 Instalacija programske

More information

Computer Science E-76 Building Mobile Applications

Computer Science E-76 Building Mobile Applications Computer Science E-76 Building Mobile Applications Lecture 3: [Android] The SDK, Activities, and Views February 13, 2012 Dan Armendariz danallan@mit.edu 1 http://developer.android.com Android SDK and NDK

More information

VIŠEPLATFORMSKA MOBILNA APLIKACIJA U XAMARINU

VIŠEPLATFORMSKA MOBILNA APLIKACIJA U XAMARINU SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Sveučilišni preddiplomski studij računarstva VIŠEPLATFORMSKA MOBILNA APLIKACIJA U XAMARINU

More information

AROS. 8čas Softver i OS za prenosive uređaje

AROS. 8čas Softver i OS za prenosive uređaje AROS 8čas Softver i OS za prenosive uređaje 1 Zbog velike popularnosti pametnih telefona i tablet uređaja očekuje se da će vrednost tržišta mobilnih aplikacija u narednim godinama iznositi preko 50 milijardi

More information

Diplomski rad Tema: Dizajn i implementacija Android aplikacije za promociju fakulteta

Diplomski rad Tema: Dizajn i implementacija Android aplikacije za promociju fakulteta Univerzitet u Banjoj Luci Prirodno-matematički fakultet Diplomski rad Tema: Dizajn i implementacija Android aplikacije za promociju fakulteta Student: Vladimir Jovanović maj 2013. Mentor: dr Vladimir Filipović

More information

Diving into Android. By Jeroen Tietema. Jeroen Tietema,

Diving into Android. By Jeroen Tietema. Jeroen Tietema, Diving into Android By Jeroen Tietema Jeroen Tietema, 2015 1 Requirements 4 Android SDK 1 4 Android Studio (or your IDE / editor of choice) 4 Emulator (Genymotion) or a real device. 1 See https://developer.android.com

More information

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna Programming with Android: System Architecture Luca Bedogni Marco Di Felice Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Dalvik Java

More information