Luka Pečečnik MOBILNI SVETOVALEC ZA NAKUP MOTORNEGA VOZILA Diplomsko delo Maribor, september 2011
I Diplomsko delo visokošolskega strokovnega študijskega programa MOBILNI SVETOVALEC ZA NAKUP MOTORNEGA VOZILA Študent: Študijski program: Mentor: Somentorica: Lektorica: Luka Pečečnik Računalništvo in informacijske tehnologije izred. prof. dr. Milan Zorman asist. dr. Mateja Verlič Andreja Tovornik, prof. slov. Maribor, september 2011
II
III ZAHVALA Zahvaljujem se mentorju izred. prof. dr. Milanu Zormanu za pomoč in vodenje pri opravljanju diplomskega dela. Prav tako se zahvaljujem somentorici asist. dr. Mateji Verlič. Posebna zahvala velja moji družini, ki mi je omogočila študij, moji punci Katji in sošolcem, ki so me v času študija spodbujali in mi stali ob strani.
IV MOBILNI SVETOVALEC ZA NAKUP MOTORNEGA VOZILA Ključne besede: mobilni svetovalec, motorna vozila, uvoz avtomobila, c#, java, Android OS UDK: 004.43:621.395(043.2) Povzetek V diplomskem delu smo predstavili operacijski sistem Android in vse tehnologije, s katerimi smo si pomagali ustvariti aplikacijo. V praktičnem delu smo razvili aplikacijo, ki omogoča iskanje avtomobilov in pridobivanje informacij o prodajalcu določenega avtomobilas spletnih strani Avto.net in Mobile.de. Omogoča tudi izračun cene uvoza avtomobila iz tujine in preverjanje oznake VIN med odtujenimi vozili iz evropske podatkovne baze Stolencars24.eu.
V MOBILE ADVISER FOR PURCHASE OF MOTOR VEHICLES Key words: mobile adviser, motor vehicles, car import, c#, java, Android OS UDK: 004.43:621.395(043.2) Abstract In our thesis, we have introduced Android operating system and all the technologies that helped us making the application. For practical part we have developed an application that allows you to search cars and obtain information about a specific car dealer from websites Avto.net and Mobile.de. It also allows the calculation of the price of importing a car from abroad and checking VIN tag with stolen vehicles from European database Stolencars24.eu.
VI KAZALO 1 UVOD 1 2 PREDSTAVITEV OPERACIJSKEGA SISTEMA ANDROID 2 2.1 SPLOŠNO O ANDROIDU 2 2.2 LASTNOSTI OPERACIJSKEGA SISTEMA ANDROID 2 2.3 ZGRADBA OPERACIJSKEGA SISTEMA ANDROID 3 2.3.1 Aplikacije 3 2.3.2 Aplikacijsko ogrodje 3 2.3.3 Knjižnice 4 2.3.4 Prevajalnik 4 2.3.5 Linux kernel 4 3 PREGLED OBSTOJEČIH REŠITEV 5 3.1 UVOD 5 3.2 APLIKACIJA AVTOCENTER.SI 5 3.3 APLIKACIJA AUTO TRADER 6 3.4 APLIKACIJA USED CARS NI 7 4 NAČRTOVANJE APLIKACIJE 8 4.1 UVOD 8 4.2 TEHNOLOGIJE 8 4.2.1 Spletne storitve 8 4.2.2 Razvijalsko okolje 9 4.2.3 Android SDK 9 4.3 UPORABNIŠKI VMESNIK 9 5 IMPLEMENTACIJA IN TESTIRANJE 11 5.1 UVOD 11 5.2 UPORABLJENE FUNKCIJE 11 5.2.1 Funkcija GetContent 11
VII 5.2.2 Funkcija GetHttpPost 12 5.2.3 Klicanje funkcije za pridobivanje rezultatov 13 5.3 NASTAVITEV APLIKACIJE 15 5.4 SPLETNI VIR AVTO.NET 17 5.5 SPLETNI VIR MOBILE.DE 23 5.6 IZRAČUN CENE UVOZA AVTOMOBILA IZ TUJINE 28 5.7 PREVERJANJE ODTUJENIH VOZIL V BAZI STOLENCARS24.EU 30 6 SKLEP 32 7 LITERATURA 34 8 PRILOGE 36 8.1 NASLOV 36 8.2 KRATEK ŽIVLJENJEPIS 36
VIII KAZALO SLIK Slika 1: Arhitektura operacijskega sistema Android... 3 Slika 2: Začetni zaslon operacijskega sistema Android... 4 Slika 3: Aplikacija Avtocenter.si... 5 Slika 4: Aplikacija Auto Trader... 6 Slika 5: Aplikacija Used Cars NI... 7 Slika 6: Pridobivanje podatkov... 8 Slika 7: Glavna stran programa... 10 Slika 8: Funkcija GetContent... 12 Slika 9: Funkcija GetHttpPost... 13 Slika 10: Nalaganje podatkov v svoji niti... 14 Slika 11: Razred, ki omogoča ustvarjanje nove niti... 14 Slika 12: Klic funkcije v novi niti... 15 Slika 13: Android Manifest datoteka... 16 Slika 14: Izgled glavnega menija... 17 Slika 15: Uporabniški vmesnik za iskanje po Avto.net... 18 Slika 16: Izgled strani Avto.net... 19 Slika 17: Razred za pridobivanje slik... 20 Slika 18: Prikaz rezultatov za Avto.net... 21 Slika 19: Prikaz podatkov o prodajalcu na Avto.net... 22 Slika 20: Glavni meni programa... 23 Slika 21: Uporabniški vmesnik za iskanje po Mobile.de... 24 Slika 22: Iskanje modela na Mobile.de... 25 Slika 23: Prikaz rezultatov za Mobile.de... 26
IX Slika 24: Prikaz podatkov o prodajalcu na Mobile.de... 27 Slika 25: Izračun davka na uvoz motornega vozila[14]... 28 Slika 26: Izračun cene uvoza avtomobila... 29 Slika 27: Preverjanje za odtujena vozila... 30 Slika 28: Funkcija za preverjanje odtujenih vozil... 31 Slika 29: Spletna stran www.stolencars24.eu... 31
X UPORABLJENE KRATICE VIN XML SDK EDGE GSM IDE JIT URL HTTP DMV AAC AMR PNG GIF JPG MP3 MPEG WIFI 3G 3D 2D OPENGL VEHICLE IDENTIFICATION NUMBER EXTENSIBLE MARKUP LANGUAGE SOFTWARE DEVELOPMENT KIT ENHANCED DATA RATES FOR GSM EVOLUTION GLOBAL SYSTEM FOR MOBILE COMMUNICATIONS INTEGRATED DEVELOPMENT ENVIRONMENT JUST IN TIME COMPILER UNIFORM RESOURCE LOCATOR HYPERTEXT TRANSFER PROTOCOL DAVEK NA MOTORNA VOZILA ADVANCED AUDIO CODING ADAPTIVE MULTI-RATE AUDIO CODEC PORTABLE NETWORK GRAPHICS GRAPHICS INTERCHANGE FORMAT JOINT PHOTOGRAPHIC EXPERTS GROUP MPEG-2 AUDIO LAYER III MOVING PICTURE EXPERTS GROUP WIRELESS FIDELITY 3RD GENERATION MOBILE TELECOMUNICATIONS THREE DIMENSIONAL TWO DIMENSIONAL OPEN GRAPHICS LIBRARY
Mobilni svetovalec za nakup motornega vozila Stran 1 1 UVOD Predmet raziskovanja pri diplomski nalogi je mobilna aplikacija za nakup motornega vozila. Aplikacija bo pomagala ljudem pri nakupu oziroma iskanju rabljenega avtomobila. Kupci se za nakup rabljenega avtomobila odločijo predvsem zato, ker novi avtomobili v prvih letih izgubijo največ svoje vrednosti ali pa nimajo dovolj denarja za novega. Problem se pojavi, ko potrebujemo podatke o prodajalcu vozila. Če smo na primer avto našli v časopisu, ni problema, saj lahko časopis vzamemo s seboj in tako lahko vedno pogledamo, kje se avto prodaja ali vidimo telefonsko številko prodajalca. Če pa smo avtomobil našli na spletu, tega podatka običajno nimamo pri roki, razen če smo si natisnili podatke o avtomobilu. Z našo aplikacijo lahko vidimo podatke o avtomobilu kjerkoli in kadarkoli, če le imamo dostop do spleta. Naslednja težava je, kako preveriti, ali je vozilo ukradeno, ne da bi izgubljali dragocen čas in denar (to še posebej velja za tujino). V Sloveniji lahko to preverimo za vsa registrirana vozila na spletni strani Državnega portala Republike Slovenije[1]. Za vozila iz tujine pride prav naša aplikacija. Na avtomobilu pogledamo številko VIN 1 in le-to vpišemo v našo aplikacijo, ki nato preko spleta preišče evropsko bazo ukradenih avtomobilov[2] in nam sporoči rezultat. Tako lahko zelo hitro in učinkovito dobimo odgovor, ali je vozilo ukradeno. 1 VIN (Vehicle Identification Number) je identifikacijska številka avtomobila, ki je edinstvena.
Mobilni svetovalec za nakup motornega vozila Stran 2 2 PREDSTAVITEV OPERACIJSKEGA SISTEMA ANDROID 2.1 Splošno o Androidu Android[3] je odprtokodni operacijski sistem, ki temelji na operacijskem sistemu Linux[4]. Prvotno ga je razvilo podjetje Android Inc., leta 2005 pa je to podjetje kupil Google. Tako je leta 2008 Google izdal prvo uradno različico. Android[3] ima veliko skupnost razvijalcev, ki razvijajo aplikacije, in s tem še bolj razširjajo uporabnost in vsestranskost te mobilne platforme. Trenutno obstaja že preko 200.000 aplikacij na Android Market 1 -u in preko 420.000 vseh aplikacij, dostopnih preko Android Market-a ali raznih spletnih strani. 2.2 Lastnosti operacijskega sistema Android Operacijski sistem Android[3] že v osnovi vsebuje nekaj funkcij oz. lastnosti, ki nam omogočajo hitrejšo in učinkovitejšo uporabo telefona: - podpira najbolj pogoste medijske formate (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF), - ima integriran spletni brskalnik, - omogoča povezovanje z drugimi napravami preko Bluetooth, EDGE, 3G in WiFi, - omogoča GSM telefonijo, slikanje in snemanje posnetkov, - vsebuje SQLite za lažje shranjevanje podatkov, - ima optimizirano grafično podporo za 2D in 3D(OpenGL ES 1.0), - ima tudi bogato razvojno okolje z emulatorjem naprav, orodji za razhroščevanje, profiliranje spomina in hitrosti delovanja in vtičnik za Eclipse IDE. 1 Android Market je Googlova spletna trgovina, kjer lahko uporabniki prenesejo aplikacije neposredno na njihovo napravo.
Mobilni svetovalec za nakup motornega vozila Stran 3 2.3 Zgradba operacijskega sistema Android Operacijski sistem Android[3] je sestavljen iz petih elementov. Ti elementi so aplikacije, njihovo ogrodje, knjižnice, prevajalnik in Linux jedro (Slika 1). Slika 1: Arhitektura operacijskega sistema Android 2.3.1 Aplikacije Vse aplikacije so napisane v programskem jeziku Java[5] in notaciji XML. Operacijski sistem požene nov proces za vsako aplikacijo posebej in šele takrat, ko mu je poslana zahteva za izvajanje aplikacije. Ko se aplikacija zapre, se tudi proces konča. Tako omogoča rabo pomnilnika tudi drugim aplikacijam. 2.3.2 Aplikacijsko ogrodje Aplikacijsko ogrodje vsebuje vse sistemske aplikacije, ki se uporabljajo za koordiniranje aplikacij: - Upravljalec aktivnosti - Upravljalec pomnilnika - Upravljalec lokacij - Upravljalec obvestil
Mobilni svetovalec za nakup motornega vozila Stran 4 2.3.3 Knjižnice Knjižnice so temeljni del sistema Android. Uporabljajo jih lahko razvijalci za dostop do strojnih komponent naprave. 2.3.4 Prevajalnik Android uporablja za prevajanje aplikacij prevajalnik JIT. Ta omogoča prenos aplikacij na več različnih prenosnih naprav, brez ponovnega pisanja izvorne kode. 2.3.5 Linux kernel To je jedro operacijskega sistema Android, ki skrbi za upravljanje s pomnilnikom, procesorjem in ostalimi komponentami naprave. Začetni zaslon operacijskega sistema Android (Slika 2) izgleda tako: Slika 2: Začetni zaslon operacijskega sistema Android
Mobilni svetovalec za nakup motornega vozila Stran 5 3 PREGLED OBSTOJEČIH REŠITEV 3.1 Uvod Sorodne aplikacije smo iskali po spletni trgovini Android market s ključnimi besedami: automotive, buy car, used cars in auto trade. 3.2 Aplikacija Avtocenter.si Aplikacija Avtocenter.si[6] omogoča uporabniku iskanje, preverjanje in nakup rabljenih vozil v Sloveniji. Oznako VIN lahko preverimo v slovenski bazi odtujenih vozil, prav tako pa lahko pridobimo informacije o neplačanem davku pri uvozu avtomobila in zastavne pravice za vozilo. Slika 3: Aplikacija Avtocenter.si
Mobilni svetovalec za nakup motornega vozila Stran 6 3.3 Aplikacija Auto Trader Aplikacija Auto Trader[7] nam omogoča iskanje med rabljenimi avtomobili po največji bazi avtomobilov v Veliki Britaniji. Omogoča»hitro iskanje«s ključnimi besedami in»napredno iskanje«z dodatnimi opcijami, kot so letnik, tip goriva, tip menjalnika, tip prodajalca in kilometrina. Ko iskan avtomobil najdemo, lahko pokličemo prodajalca kar iz aplikacije, lahko ga najdemo na karti in si ogledamo specifikacije avtomobila in njegove slike. Slika 4: Aplikacija Auto Trader
Mobilni svetovalec za nakup motornega vozila Stran 7 3.4 Aplikacija Used Cars NI Aplikacija Used Cars NI[8] nam omogoča iskanje med rabljenimi avtomobili, kombiji, motorji, prikolicami, kmetijami in ladjami na področju Severne Irske. Omogoča nam: - iskanje po znamki in modelu, - zoženje iskanega kriterija, - iskanje po ključni besedi, - ogled specifikacij avtomobila in slik, - klicanje ali pošiljanje elektronske pošte prodajalcu. Slika 5: Aplikacija Used Cars NI
Mobilni svetovalec za nakup motornega vozila Stran 8 4 NAČRTOVANJE APLIKACIJE 4.1 Uvod V tem poglavju so opisane tehnologije, ki smo jih potrebovali za izdelavo, in uporabniški vmesnik. Opisan je tudi postopek pridobivanja podatkov za aplikacijo. 4.2 Tehnologije Za izdelavo naše aplikacije in strežnika smo uporabili več tehnologij. Te so opisane spodaj in brez njih bi težko ustvarili program, ki smo ga ustvarili kot končni izdelek. 4.2.1 Spletne storitve Za pridobivanje podatkov uporabljamo v naši aplikaciji spletne storitve[9]. Te so zasnovane tako, da klient poda zahtevo, nazaj pa prejme odgovor, ki ga spletna storitev ustvari. Spletne storitve podatke prenašajo v obliki zapisa XML. Pridobivanje podatkov v naši aplikaciji (Slika 6) izgleda tako, da najprej uporabnik v aplikaciji poda zahtevo (npr. preverjanje za odtujene avtomobile). Zahteva se preko omrežja GSM kot zahteva spletne storitve prenese do strežnika. Ta nato zahtevo obdela in se poveže na zahtevano stran[2] in od nje pridobi želene podatke. Ko strežnik te podatke obdela, jih kot odgovor vrne naši aplikaciji. Slika 6: Pridobivanje podatkov
Mobilni svetovalec za nakup motornega vozila Stran 9 4.2.2 Razvijalsko okolje Eclipse[10] je odprtokodno okolje za razvoj programov (IDE), ki temelji na Javi. Z Eclipse je mogoče razvijati programe v različnih jezikih. Prednosti uporabe Eclipse se pokaže pri razvoju zahtevnih programov, ki uporabljajo kompleksne knjižnice, za katere je potrebno podrobno poznavanje delovanja in hierarhije razredov. Večina knjižnic, tudi komercialnih, ima dodatke, ki omogočajo lažjo uporabo z dodano pomočjo in čarovniki. Tudi pri običajnih knjižnicah se pokažejo prednosti, saj Eclipse prebere zaglavne datoteke (header) in zna sproti razširjati in pripraviti pomoč za argumente funkcij, ki jih uporabljamo. Vgrajene ima še različne brskalnike kode in podporo za razhroščevalnike. Z različnimi dodatki se da doseči tudi izboljšano integracijo s servisi za nadzor kode (subversion, git, perforce...) ali spletnimi servisi (gforge...). 4.2.3 Android SDK Android SDK[11] je komplet za razvoj programske opreme, ki nam omogoča razvijanje aplikacij za Android platformo. Android SDK vsebuje primere projektov z izvorno kodo, orodja za razvijanje, emulator in knjižnice za ustvarjanje Android aplikacij. Aplikacije se pišejo v programskem jeziku Java[5] in se lahko zaženejo na virtualnem stroju Dalvik, ustvarjenem za vgrajeno uporabo in teče nad Linux jedrom. 4.3 Uporabniški vmesnik Pri snovanju uporabniškega vmesnika smo si zadali cilj, da naj bo čim bolj preprost za končnega uporabnika in dovolj razumljiv za uporabo. Uporabljati naj bi ga znali tudi uporabniki, ki ga uporabljajo prvič, saj celoten sistem ni preveč zapleten in je dovolj logičen. Hoteli smo, da bi uporabniki imeli štiri različne funkcije programa: - iskanje po Avto.net, - iskanje po Mobile.de, - preverjanje ukradenih vozil s številko VIN, - izračun cene uvoza avtomobila iz tujine. Pri izbiri ene izmed teh funkcij se nam odpre novo okno, ki omogoča interakcijo s posameznim sklopom programa. Obenem se lahko uporabnik kadarkoli premakne nazaj na
Mobilni svetovalec za nakup motornega vozila Stran 10 prejšnje okno. Postopek je enak kot pri pregledovanju spletnih strani s spletnim brskalnikom. Hoteli smo tudi, da čas izvajanja klica funkcije za pridobivanje rezultatov ni daljši od pet sekund, saj bi to pomenilo počasno izvajanje programa, kar bi pri uporabniku pustilo slab vtis. Po teh načelih smo zasnovali uporabniški vmesnik (Slika 7). Slika 7: Glavna stran programa
Mobilni svetovalec za nakup motornega vozila Stran 11 5 IMPLEMENTACIJA IN TESTIRANJE 5.1 Uvod V tem poglavju smo opisali uporabljene funkcije in nastavitve, ki so potrebne za izvajanje programa. 5.2 Uporabljene funkcije V naši spletni storitvi smo uporabili dve funkcije, ki sta nam olajšali delo s pridobivanjem podatkov iz strani. Tako je isti del kode ponovno uporabljiv in se lahko lažje spreminja, kot če bi to kodo kopirali. Ti dve funkciji sta namenjeni samo zajemanju podatkov iz spletne strani. Podatki so tukaj mišljeni kot izvorna koda strani, iz katere lahko potem z razčlenjevanjem teh podatkov dobimo uporabne podatke. Za vsak klic zahteve pa moramo zaradi boljšega delovanja aplikacije (zamrznitev, oziroma počasno odzivanje) klicati našo spletno storitev tako, da klic podamo na novi niti. Tako lahko nemoteno prikazujemo zaslon z nalaganjem podatkov, medtem ko se podatki nalagajo v ozadju na drugi niti. 5.2.1 Funkcija GetContent S funkcijo GetContent (Slika 8) iz želene strani pridobimo izvorno kodo. Podamo ji samo en vhodni podatek, to je naslov URL 1. Funkcija se poveže z želeno stranjo in od nje pridobi podatke. Ti podatki bi v brskalniku pomenili, kako se naj stran naloži za prikaz. Nam ti podatki koristijo kot vir informacij za našo aplikacijo. Ko funkcija pridobi vse podatke, nam na izhodu vrne rezultat v obliki niza. 1 URL(Uniform Resource Locator) je edinstven naslov spletne strani, podan z uporabljenim protokolom in imenom vira.
Mobilni svetovalec za nakup motornega vozila Stran 12 Slika 8: Funkcija GetContent 5.2.2 Funkcija GetHttpPost Funkcija GetHttpPost (Slika 9) nam omogoča pridobivanje enakega rezultata, le da je zahteva drugačna. Poleg spletnega naslova želene strani ji podamo še en niz, ki pomeni parametre zahteve. V bistvu ji podamo podatke, ki jih posreduje spletni strani, le-ta jih obdela in poda rezultat v obliki izvorne kode nove spletne strani. Te podatke lahko obdelamo in dobimo uporabne informacije za našo aplikacijo. Ta funkcija se uporablja pri spletni strani Stolencars24.eu. Kot parameter ji podamo številko avtomobila VIN in dobimo rezultat, ali je avtomobil ukraden ali ne.
Mobilni svetovalec za nakup motornega vozila Stran 13 Slika 9: Funkcija GetHttpPost 5.2.3 Klicanje funkcije za pridobivanje rezultatov Za vsak klic naše spletne storitve je potrebno klic prestaviti na svojo nit. Tako se lahko aplikacija nemoteno izvaja, medtem ko se podatki nalagajo v ozadju. Če tega ne bi storili, bi ob klicu aplikacija zamrznila in šele ko bi bili vsi podatki preneseni nazaj, bi se aplikacija odvijala naprej. Prav tako ne bi mogli prikazati zaslona za nalaganje, ker bi aplikacija še vedno čakala podatke.
Mobilni svetovalec za nakup motornega vozila Stran 14 Izgled nalaganja podatkov (Slika 10): Slika 10: Nalaganje podatkov v svoji niti Razred, ki omogoča ustvarjanje nove niti (Slika 11)in njeno izvajanje: Slika 11: Razred, ki omogoča ustvarjanje nove niti
Mobilni svetovalec za nakup motornega vozila Stran 15 Ob klicu funkcije (Slika 12) ustvarimo novo nit, ki na vhod prejme niz in katere rezultat je tudi niz. Ko dobimo rezultate, ustvarimo nov obrazec in mu kot argument podamo naše rezultate iskanja. Tako jih lahko potem prikažemo. Slika 12: Klic funkcije v novi niti 5.3 Nastavitev aplikacije Vsaka aplikacija, ki teče v operacijskem sistemu Android, ima v posebni datoteki, imenovani manifest, shranjen svoj opis. V tem opisu najdemo vse aktivnosti, knjižnice in dovoljenja, shranjena pa so v datoteki XML. V tej datoteki lahko definiramo veliko lastnosti, ki imajo vsaka svojo edinstveno značko. V naši manifest datoteki (Slika 13) imamo najprej zapisano značko <manifest>, ki je obvezna značka v tej datoteki in vsebuje ime paketa aplikacije in verzijo aplikacije. Naslednja značka je <uses-sdk>, ki določa minimalno verzijo Androidovega SDK-ja[11], ki ga potrebujemo za zagon aplikacije. Mi imamo zapisano verzijo SDK-ja 8, kar pomeni, da aplikacija lahko teče na Androidu 2.2 ali novejšem. V znački <application> nastavimo ikono, ime aplikacije in vse aktivnosti. Imamo več značk <activity>, kjer so opisane vse aktivnosti v programu, to so vse strani aplikacije, ki jih lahko prikažemo. V aktivnosti.main imamo še značko <intent-filter>, kjer nastavimo, da je to privzeta aktivnost, ki se zažene ob zagonu. Ko se <activity> konča, imamo še značko <uses-permission>, kjer nastavimo, da se aplikacija lahko poveže z internetom.
Mobilni svetovalec za nakup motornega vozila Stran 16 Slika 13: Android Manifest datoteka
Mobilni svetovalec za nakup motornega vozila Stran 17 5.4 Spletni vir Avto.net S spletne strani Avto.net pridobivamo podatke z razčlenjevanjem strani. To pomeni, da za vsako poizvedbo o avtomobilih v naši aplikaciji pregledamo stran Avto.net in od nje pridobimo podatke, ki jih potrebujemo. Preden smo začeli programirati, smo potrebovali načrt, kako smo stran razčlenjevali, da bo aplikacija prejela pravilne podatke glede na uporabniški vnos. Vse se začne, ko uporabnik klikne v glavnem meniju (Slika 14) na gumb išči po Avto.net. Slika 14: Izgled glavnega menija Uporabniku se odpre uporabniški vmesnik, kjer lahko, glede na želje, izbere, katero znamko avtomobila bo iskal, model, tip motorja, letnik in ceno. Ko uporabnik vnese te podatke, se aplikacija preko podatkovne povezave poveže z našo spletno storitvijo in
Mobilni svetovalec za nakup motornega vozila Stran 18 sproži zahtevo. K zahtevi poda tudi vse podatke, ki jih je vnesel uporabnik in tako lahko naš strežnik pridobi zahtevane podatke. Izgled uporabniškega vmesnika za izbiro iskanja (Slika 15): Slika 15: Uporabniški vmesnik za iskanje po Avto.net Ko naša spletna storitev prejme vhodne podatke, se začne razčlenjevanje strani. Najprej na strani[12] pridobimo povezavo izbrane znamke, ki jo je vnesel uporabnik. Tako imamo v tem trenutku pridobljen rezultat vseh avtomobilov, ki so trenutno naprodaj na tem spletnem portalu. Ker pa vseh rezultatov ne moremo prikazati naenkrat, oziroma jih je mnogo preveč za navadnega uporabnika, moramo zožiti iskano področje. To naredimo tako, da uporabimo še druge podatke, ki jih je uporabnik vnesel. Prvi v vrsti je podatek o modelu avtomobila. Na tej strani pogledamo med vsemi modeli te znamke, če imamo prikazano isto ime modela, kot pa ga je izbral uporabnik. Če je model na seznamu, potem pridobimo
Mobilni svetovalec za nakup motornega vozila Stran 19 povezavo od nove strani, ki jo navaja tisti model. Če pa izbranega modela na tem seznamu ni, pa naši mobilni aplikaciji vrnemo rezultat, da rezultatov iskanja ni. Ves postopek pridobivanja podatkov izgleda enako, kot da bi s spletnim brskalnikom odprli stran Avto.net (Slika 16) in hoteli poiskati določen avtomobil. Slika 16: Izgled strani Avto.net Sedaj imamo kot rezultate na strani vse avtomobile določene znamke in modela. Ker pa lahko uporabnik vnese še tip motorja, letnik in ceno, moramo upoštevati tudi te podatke. To storimo tako, da k povezavi na to stran dodamo argumente. V povezavi so trenutno argumenti podani, vendar niso vrednosti, ki jih je vnesel uporabnik. Tako se argumenti ne upoštevajo pri pridobivanju rezultata. Če pa jim dodamo vrednost, se argumenti upoštevajo in rezultati iskanja so drugačni takšni, kot jih želimo. Če to naredimo za vse podatke, ki jih je vnesel uporabnik, se iskano področje avtomobilov najde veliko prej, kot pa da bi morali preiskati veliko količino avtomobilov in bi šele potem našli avtomobil z ustreznimi podatki.
Mobilni svetovalec za nakup motornega vozila Stran 20 Ko imamo zamenjane vse podatke, lahko ponovno iz nove povezave pridobimo izvorno kodo in iz te pridobimo podatke, ki smo jih vračali naši aplikaciji. Najprej razdelimo izvorno kodo na dele, ki predstavljajo en avtomobil. To pomeni, da imamo v nizu, ki ga obdelujemo, podatke o samo enem avtomobilu. Na podoben način obdelamo še ostale podatke, ki jih naša aplikacija izpisuje. To so povezava do slike, povezava do avtomobila in specifikacije avtomobila. Ker moramo prikazati več kot samo en rezultat, ima aplikacija omogočeno premikanje med avtomobili, ki smo jih našli. Za vsak avtomobil pa v aplikaciji prenesemo tudi sliko, ki predstavlja ta avtomobil. To storimo tako, da povezavo, ki jo je aplikacija prejela za vsak avtomobil, podamo funkciji, ki iz interneta prenese sliko in jo lahko nato pokažemo na našem ImageView-u (Slika 17). ImageView je gradnik, ki v aplikacijah Android omogoča prikazovanje slik. Slika 17: Razred za pridobivanje slik
Mobilni svetovalec za nakup motornega vozila Stran 21 Prikaz rezultatov za Avto.net (Slika 18): Slika 18: Prikaz rezultatov za Avto.net Ko uporabnik želi podati nov niz iskanih podatkov, se lahko z gumbom nazaj na telefonu z lahkoto premakne v prejšnji meni, kjer lahko spet izbira katere podatke bo vnesel in lahko naredi novo poizvedbo o avtomobilih. Z gumboma prejšnji in naslednji se premikamo med vsemi rezultati iskanja. Ob pritisku na gumb prodajalec se nam prikažejo podatki o prodajalcu. Le-ti so odvisni od samega prodajalca, katere podatke želi podati morebitnemu kupcu. Včasih je na voljo ali vidna samo telefonska številka, pri komisijski prodaji pa je po navadi več podatkov, kot lahko vidimo na spodnjem primeru.
Mobilni svetovalec za nakup motornega vozila Stran 22 Prikaz podatkov o prodajalcu (Slika 19): Slika 19: Prikaz podatkov o prodajalcu na Avto.net
Mobilni svetovalec za nakup motornega vozila Stran 23 5.5 Spletni vir Mobile.de Iz spletnega vira Mobile.de pridobivamo podatke na enak način kot iz strani Avto.net. To pomeni, da za vsako poizvedbo o avtomobilih v naši aplikaciji pregledamo stran Mobile.de in od nje pridobimo podatke, ki jih potrebujemo. Zopet smo si ustvarili načrt, kako smo stran razčlenjevali, da bo aplikacija prejela pravilne podatke glede na uporabniški vnos. Vse se začne, ko uporabnik klikne v glavnem meniju na gumb išči po Mobile.de (Slika 20). Potek pridobivanja rezultatov je zelo podoben strani Avto.net, le da se podatki iščejo po drugačnih ključih, saj je stran zasnovana drugače. Slika 20: Glavni meni programa Uporabniku se odpre uporabniški vmesnik, kjer lahko glede na želje izbere, katero znamko avtomobila bo iskal, model, tip motorja, letnik in ceno. Ko uporabnik vnese te podatke, se aplikacija preko podatkovne povezave poveže z našo spletno storitvijo in sproži zahtevo. K
Mobilni svetovalec za nakup motornega vozila Stran 24 zahtevi poda tudi vse podatke, ki jih je vnesel uporabnik in tako lahko naš strežnik pridobi zahtevane podatke. Izgled uporabniškega vmesnika za izbiranje iskanja (Slika 21): Slika 21: Uporabniški vmesnik za iskanje po Mobile.de Ko naša spletna storitev prejme vhodne podatke, se začne razčlenjevanje strani.
Mobilni svetovalec za nakup motornega vozila Stran 25 Model iščemo po strani, ki je v principu podobna tej, le da so modeli avtomobilov od iskane znamke (Slika 22): Slika 22: Iskanje modela na Mobile.de Če iskanega modela na tem seznamu ni, potem aplikaciji vrnemo rezultat, da rezultatov iskanja ni. Če pa model je na seznamu, potem pa glede na povezavo, ki jo ima, naložimo izvorno kodo tiste strani. Začne se iskanje podatkov o avtomobilu. Podatki se iščejo enako kot pri strani Avto.net, le da so ključne besede za iskanje drugačne. Rezultate iz naše funkcije v spletni storitvi vrnemo na enak način kot pri strani Avto.net, to pomeni, da jih ločimo s podpičji. V naši aplikaciji jih tudi prikažemo podobno, le da so ti podatki malo drugačni kot pri Avto.net (Slika 23).
Mobilni svetovalec za nakup motornega vozila Stran 26 Slika 23: Prikaz rezultatov za Mobile.de Tako kot pri iskanju na Avto.net se lahko z gumboma prejšnji in naslednji premikamo med vsemi rezultati iskanja. Ob pritisku na gumb prodajalec se nam prikažejo podatki prodajalca, ki so, glede na to, da so vsi podatki preneseni iz nemške strani, občajno v nemščini. Prikažejo se nam vsi podatki, ki jih prodajalec želi podati morebitnemu kupcu, da ga lahko kontaktira.
Mobilni svetovalec za nakup motornega vozila Stran 27 Primer prikaza podatkov o prodajalcu na Mobile.de (Slika 24): Slika 24: Prikaz podatkov o prodajalcu na Mobile.de
Mobilni svetovalec za nakup motornega vozila Stran 28 5.6 Izračun cene uvoza avtomobila iz tujine Ceno vozila pri uvozu avtomobila iz tujine smo izračunali kot vsoto: - cene vozila, - davka na motorna vozila po novem zakonu, ki je začel veljati 1.1.2011[13], - cene ugotavljanja skladnosti vozila (homologacije), ki je približno 100 evrov. Davek na motorna vozila (DMV) se v Sloveniji po novem zakonu izračuna glede na: - ceno avtomobila, - izpust avtomobila v g/km, - tip motorja (bencin, utekočinjen naftni plin ali diesel). Tabela izračuna davka na motorna vozila (Slika 25): Slika 25: Izračun davka na uvoz motornega vozila[14] Potek pridobivanja odgovora v programu: Najprej uporabnik v glavnem meniju pritisne na gumb izračunaj ceno uvoza avtomobila. Nato se odpre nova stran za vnos podatkov. Uporabnik mora vnesti ceno avtomobila, izpust CO2, ki ga avtomobil proizvede, in izbrati tip motorja. Ko z vnosom zaključi, pritisne na gumb izračunaj ceno uvoza. Nato program preko internetne povezave kliče našo spletno storitev, ki glede na podane podatke izračuna ceno uvoza avtomobila.
Mobilni svetovalec za nakup motornega vozila Stran 29 Spletna storitev odgovor vrne nazaj k naši aplikaciji in le-ta ga prikaže na zaslonu (Slika 26). Ob napačnem vnosu podatkov se namesto rezultata izpiše opozorilo, da je z vnesenimi podatki nekaj narobe. Ko uporabnik podatke popravi, lahko ponovno izračuna ceno uvoza avtomobila. Slika 26: Izračun cene uvoza avtomobila
Mobilni svetovalec za nakup motornega vozila Stran 30 5.7 Preverjanje odtujenih vozil v bazi Stolencars24.eu Preverjanje odtujenih vozil poteka preko evropske baze odtujenih vozil[2]. Ta vsebuje podatke iz baz v Sloveniji, Italiji, Romuniji, Češki, Slovaški in podatke iz lastne baze. Vse, kar potrebujemo za preverjanje, je številka VIN (Vehicle Identification Number), to je številka, ki identificira avto in je za vsak avto edinstvena. Običajno se nahaja na spodnjem delu vetrobranskega stekla na avtomobilu in je vidna navzven, tako da lahko vsak avto identificiramo tudi, če je zaklenjen. Pri starejših avtomobilih je ta številka lahko tudi v notranjosti avtomobila. V naši aplikaciji uporabnik najprej vnese številko VIN, nato pa pritisne gumb za preverjanje. Aplikacija pošlje naši spletni storitvi številko VIN. Ta preveri, če je avto ukraden, in vrne odgovor nazaj aplikaciji, ki ga prikaže na zaslonu (Slika 27). Slika 27: Preverjanje za odtujena vozila
Mobilni svetovalec za nakup motornega vozila Stran 31 Izgled funkcije v naši spletni storitvi (Slika 28): Slika 28: Funkcija za preverjanje odtujenih vozil V funkcijo se pridobi podatek, oznaka VIN, ki se kot argument s povezavo na spletno stran StolenCars24.eu poda naši funkciji GetHttpPost(). Ta funkcija vrne izvorno kodo strani, ki se je s podanim argumentom ustvarila. V bistvu računalniško ustvarimo isti dogodek, ki bi ga ustvaril navaden uporabnik spletne strani (Slika 29), ki bi preverjal številko VIN. Nato iz strani z rezultati preberemo izvorno kodo in jo pregledamo. Če stran vsebuje določene besede, ki so značilne za tisti odgovor, ki ga pridobimo, potem vrnemo rezultat ustrezen odgovoru strani. V ostalih primerih je lahko dostop do strani blokiran, ali pa je napaka pri vnosu besedila v vnosno polje v aplikaciji. Slika 29: Spletna stran www.stolencars24.eu
Mobilni svetovalec za nakup motornega vozila Stran 32 6 SKLEP V diplomski nalogi smo opisali operacijski sistem Android in orodja za izdelavo naše aplikacije. V praktičnem delu smo opisali sorodne aplikacije, načrtovanje naše aplikacije in njeno implementacijo. Glavni del diplomskega dela je bil razvoj aplikacije, ki bi uporabniku omogočala iskanje rabljenih avtomobilov, prikaz podatkov o določenem avtomobilu in prikaz podatkov o prodajalcu. Tako lahko vsak uporabnik te aplikacije, kjerkoli po svetu, kjer je signal GSM, pridobi informacije o iskanem avtomobilu in prodajalcu. Za lažje iskanje lokacije avtomobila, lahko prodajalec na spletnih straneh, iz katerih pridobivamo podatke, navede tudi svoj naslov, in le-tega nam aplikacija tudi pokaže. Funkcionalnost aplikacije smo razširili z možnostjo preverjanja odtujenih vozil iz evropske baze odtujenih vozil[2]. Z vnosom oznake VIN v vnosno polje v aplikaciji lahko uporabnik preveri stanje določenega vozila na terenu v le nekaj sekundah. Baza vključuje podatke iz več evropskih držav, med drugim tudi iz Slovenije. Dodatna razširitev aplikacije je izračun cene uvoza avtomobila iz tujine. Z vpisano vrednostjo cene in izpusta avtomobila lahko uporabnik hitro izračuna, koliko denarja bi potreboval za uvoz določenega avtomobila. Pri izdelavi diplomskega dela smo se naučili veliko novih stvari iz programiranja aplikacij v Javi za operacijski sistem Android. Spoznali smo tudi, kako se povezujemo s spletnimi storitvami, razčlenjujemo spletne strani, prenašamo slike iz spleta in jih prikazujemo na napravi itd. V praksi se je izkazalo, da se podatki, ki jih pridobimo z razčlenjevanjem spletnih strani, veliko hitreje pridobivajo, če to delo opravlja strežnik in rezultate samo zapakira in jih pošlje mobilni napravi, kot pa če vso to delo opravlja mobilna naprava. Na mobilni napravi bi imeli tudi veliko večjo količino prenosa podatkov, da bi lahko prikazali npr. rezultate iskanja. Zato smo vso to delo prepustili strežniku, ki ima hiter dostop do spleta in tudi večjo računsko moč.
Mobilni svetovalec za nakup motornega vozila Stran 33 Aplikacijo bi lahko izboljšali na ta način, da bi pri iskanju avtomobilov prikazali več podatkov o iskanem avtomobilu in tako pridobili še več informacij, potrebnih za nakup. Rezultate bi lahko prikazovali tudi na lepši način, vendar smo zaradi pomanjkanja časa za izdelavo celotne diplomske naloge porabili več časa za izdelavo boljše funkcionalnosti aplikacije.
Mobilni svetovalec za nakup motornega vozila Stran 34 7 LITERATURA [1] Državni portal Republike Slovenije: https://e-uprava.gov.si/e-uprava/ (13.7.2011). [2] StolenCars24: http://www.stolencars24.eu/ (13.7.2011). [3] Wikipedia.org: http://en.wikipedia.org/wiki/android_(operating_system)(23.5.2011). [4] Wikipedia: http://en.wikipedia.org/wiki/linux (12.5.2011). [5] Wikipedia.org: http://en.wikipedia.org/wiki/java_(programming_language)(23.5.2011). [6] Android Market: https://market.android.com/details?id=com.organizem.avtocenter&feature=search_r esult (22.6.2011). [7] Android Market: https://market.android.com/details?id=uk.co.autotrader.androidconsumersearch&fe ature=search_result (22.6.2011). [8] Android Market: https://market.android.com/details?id=com.usedcarsni.ucni&feature=search_res ult (22.6.2011). [9] Bafna, Darshana: http://composedcrap.blogspot.com/2009/08/connecting-to-netweb-service-from.html (9.5.2011). [10] Wikipedia.org: http://en.wikipedia.org/wiki/eclipse_(software) (23.5.2011). [11] Wikipedia: http://en.wikipedia.org/wiki/android_sdk#android_sdk(15.5.2011). [12] Avto.net: http://www.avto.net/_avto/makes.asp (14.7.2011). [13] Uradni-list.si: http://www.uradni-list.si/1/objava.jsp?urlid=200672&stevilka=3078 (15.7.2011). [14] Avto.net: http://www.avto.net/help.asp (24.6.2011). [15] Bozzay, Paul: http://www.makeuseof.com/tag/write-google-androidapplication/(9.5.2011). [16] Android Developers: http://developer.android.com/guide/developing/projects/projectseclipse.html(9.5.2011). [17] Huuah.com: http://huuah.com/dialog-boxes-in-android/ (9.5.2011). [18] Mesojedec, Uroš: JAVA, programiranje za Internet, natis. Ljubljana, Pasadena, 1997. [19] Meier, Reto: Professional Android 2 Application Development, natis. Indianapolis, Indiana, Wiley Publishing, Inc., 2010. [20] Debjit: http://digitizor.com/2009/02/20/how-to-install-microsoft-iis-server-onwindows-7/ (22.6.2011). [21] Balistupa.com: http://www.balistupa.com/blog/2009/08/passing-data-or-parameterto-another-activity-android/ (23.6.2011). [22] Naveenbalani.com: http://naveenbalani.com/index.php/2011/01/invokewebservices-from-android/ (4.7.2011).
Mobilni svetovalec za nakup motornega vozila Stran 35 [23] Android Developers: http://developer.android.com/resources/articles/painlessthreading.html (18.7.2011). [24] Android Developers: http://developer.android.com/guide/topics/ui/themes.html(19.7.2011). [25] Android Developers: http://developer.android.com/resources/tutorials/helloworld.html (4.6.2011). [26] Trinet informatika: http://portal.trinet.si/index.php?option=com_content&view=article&id=49151:navo dila-za-izraun-davka-na-motorna-vozila-dmv-leto-2011&directory=57(15.7.2011). [27] Android developers: http://developer.android.com/guide/basics/what-isandroid.html (29.5.2011).
Mobilni svetovalec za nakup motornega vozila Stran 36 8 PRILOGE 8.1 Naslov Luka Pečečnik Cesta IV/20 3320 Velenje Telefon: 031/416-344 e-mail: luka.pececnik@uni-mb.si 8.2 Kratek življenjepis Rodil sem se 07.09.1989 v Ljubljani. Šolanje sem pričel na Osnovni šoli Gorica v Velenju. Srednjo šolo sem obiskoval na Šolskem centru Velenje in pridobil naziv elektrotehnik računalništva. Sedaj končujem visokošolski strokovni študij na Fakulteti za elektrotehniko, računalništvo in informatiko v Mariboru, smer Računalništvo in informacijske tehnologije.
Mobilni svetovalec za nakup motornega vozila Stran 37
Mobilni svetovalec za nakup motornega vozila Stran 38
Mobilni svetovalec za nakup motornega vozila Stran 39