59
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Primož Skerbiš RAZVOJ MOBILNE APLIKACIJE BOLHANOTIFY Diplomsko delo Maribor, avgust 2017

Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Primož Skerbiš

RAZVOJ MOBILNE APLIKACIJE BOLHANOTIFY

Diplomsko delo

Maribor, avgust 2017

Page 2: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični
Page 3: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Primož Skerbiš

RAZVOJ MOBILNE APLIKACIJE BOLHANOTIFY

Diplomsko delo

Maribor, avgust 2017

Page 4: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični
Page 5: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

I

RAZVOJ MOBILNE APLIKACIJE BOLHANOTIFY

Diplomsko delo

Študent: Primož Skerbiš

Študijski program: Visokošolski strokovni

Računalništvo in informacijske tehnologije

Mentor: dr. Matej Črepinšek

Lektorica: Maja Antosiewicz Škraba, univ. dipl. slov.

Page 6: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

II

Page 7: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

III

Razvoj mobilne aplikacije BolhaNotify

Ključne besede: Android, bolha.com, obvestilo, aplikacija

UDK: 004.777:621.395.721.5(043.2)

Povzetek

V diplomskem delu je predstavljen razvoj mobilne aplikacije BolhaNotify za mobilne

naprave z operacijskim sistemom Android. Aplikacija rešuje problem dolgotrajnega

iskanja izdelkov na spletnem oglasniku Bolha.com.

Page 8: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

IV

Developement of the mobile application BolhaNotify

Keywords: android, notification, bolha.com, application

UDK: 004.777:621.395.721.5(043.2)

Abstract

This thesis presents the development of the 'BolhaNotify' application for devices running

Android. The application serves as a way to shorten the tedious search engine

implemented by Bolha.com, an online service for buying and selling used items.

Page 9: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

V

Kazalo 1. Uvod ..................................................................................................................................... 1

2. Pomembnejše tehnologije ................................................................................................... 3

2.1 Operacijski sistem Android ................................................................................................ 3

2.1.1 Zgodovina Androida ....................................................................................................... 4

2.1.2 Stanje na trgu mobilnih naprav ...................................................................................... 5

2.1.3 Arhitektura operacijskega sistema ................................................................................. 6

2.2: Programsko orodje InteliJ Android Studio ....................................................................... 8

2.3 Programski jezik Java ......................................................................................................... 9

2.3.1 Enostavnost .................................................................................................................. 10

2.3.2 Objektnost .................................................................................................................... 10

2.3.3 Neodvisnost .................................................................................................................. 11

2.3.4 Trdoživost ..................................................................................................................... 11

2.3.5 Varnost ......................................................................................................................... 11

2.3.6 Visoka zmogljivost ........................................................................................................ 12

2.4 Iskanje podatkov v strukturah HTML-ja .......................................................................... 13

2.5 Format JSON .................................................................................................................... 14

2.6 Orodje za verzioniranje kode Git ..................................................................................... 15

3. Ideja aplikacije .................................................................................................................... 16

4. Raziskava trga ..................................................................................................................... 17

5. Idejna zasnova aplikacije .................................................................................................... 18

Page 10: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

VI

6. Ustvarjanje projekta........................................................................................................... 20

6.1 Zunanji viri in nastavitve projekta ................................................................................... 21

6.2 Varnost aplikacije ............................................................................................................ 22

6.3 Viri ................................................................................................................................... 23

6.4 Struktura razredov .......................................................................................................... 24

7. Aplikacija BolhaNotify ........................................................................................................ 25

7.1 Glavna aktivnost .............................................................................................................. 25

7.2 Aktivnost dodajanja filtrov .............................................................................................. 26

7.3 Nastavitve aplikacije ........................................................................................................ 27

8. Kaj se dogaja v ozadju? ...................................................................................................... 29

8.1 Asinhrono izvajanje ......................................................................................................... 29

9. Mnenja uporabnikov .......................................................................................................... 31

9.1 Mnenje prvega uporabnika ............................................................................................. 31

9.2 Mnenje drugega uporabnika ........................................................................................... 32

9.3 Mnenje tretjega uporabnika ........................................................................................... 33

9.4 Komentar ......................................................................................................................... 33

10. Test porabe prenosa podatkov ...................................................................................... 34

11. Primerjava aplikacije spletne strani Bolha.com z aplikacijo BolhaNotify ...................... 36

11.1 Razlaga rezultatov ......................................................................................................... 37

12. Zaključek ......................................................................................................................... 38

Page 11: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

VII

Kazalo slik

Slika 1.1: Logotip spletnega oglasnika Bolha.com [povzeto dne 15. 7. 2017]. ........................... 1

Slika 2.1: Logotip operacijskega sistema Android. ...................................................................... 3

Slika 2.2: Verzije Androidov. ........................................................................................................ 4

Slika 2.3: Delež naprav z različnimi verzijami operacijskih sistemov [11]. .................................. 5

Slika 2.4: Delež naprav z operacijskim sistemom Android [2]. .................................................... 5

Slika 2.5: Arhitektura operacijskega sistema Android. ................................................................ 6

Slika 2.6: Logotip operacijskega sistema Android. ...................................................................... 8

Slika 2.7: Logotip programskega jezika Java. ............................................................................... 9

Slika 2.8: Primer kode JSOUP. .................................................................................................... 13

Slika 2.9: Primer kode GSON. .................................................................................................... 14

Slika 2.10: Logotip portala GitHub. ............................................................................................ 15

Slika 3.1: Logotip naše aplikacije. .............................................................................................. 16

Slika 4.1: Konkurenčna obstoječa aplikacija [povzeto 17. 7. 2017 – trgovina Google Play]. .... 17

Slika 6.1: Ustvarjanje projekta v programskem orodju Android Studio. ................................... 20

Slika 6.2: Datoteka Gradle z vključenimi paketi. ....................................................................... 21

Slika 6.3: Datoteka manifest našega projekta. .......................................................................... 22

Slika 6.4: Struktura datotek virov. ............................................................................................. 23

Slika 6.5: Razredi, uporabljeni v naši aplikaciji. ......................................................................... 24

Slika 7.1: Glavna aktivnost naše aplikacije. ............................................................................... 25

Page 12: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

VIII

Slika 7.2: Videz aktivnosti dodajanja filtrov. ............................................................................. 26

Slika 7.3: Nastavitve filtriranja. ................................................................................................. 28

Slika 8.1: Primer prikaza obvestil o oglasih. .............................................................................. 30

Slika 11.1: Videz konkurenčne aplikacije med testnim iskanjem oglasov [povzeto dne 17. 7.

2017 – aplikacija Bolha]............................................................................................................. 37

Page 13: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

IX

Uporabljene kratice

OHA – Open Handset Aliance

HAL – Hardware Abstraction Layer

ART – Android Runtime

API – Application Programming Interface

OS – Operating System

DVM – Dalvik

Page 14: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični
Page 15: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

1

1. Uvod

Ker je tempo življenja vedno hitrejši, so nam opravila, ki jih moramo ponavljati vedno znova

in znova, odveč. Na eno takih opravil smo naleteli med iskanjem želenih izdelkov na

slovenskem spletnem oglasniku Bolha.com (slika 1.1).

Slika 1.1: Logotip spletnega oglasnika Bolha.com [povzeto dne 15. 7. 2017].

Problem nastane, kadar želenega izdelka nismo našli takoj oz. nam najdeni izdelki niso

ustrezali, zato smo morali korake iskanja ponavljati vedno, kadar smo želeli preveriti, če je na

spletnem oglasniku kaj novega.

Cilj diplomskega dela je poglobiti znanje iz uporabe programskega orodja Android Studio,

izdelovanja mobilnih aplikacij in programskega jezika Java.

V okviru dela je nastala aplikacija, ki uporabniku omogoča vnašanje filtrov, glede na katere

aplikacija kasneje išče oglase. Vsi najdeni oglasi se potem prečistijo še čez dva dodatna filtra,

ki ju je uporabnik nastavil v nastavitvah same aplikacije. Po končanem iskanju se v opozorilni

vrstici izpišejo vsi novi oglasi. Klik na enega izmed oglasov nas usmeri na spletno stran

oglasnika.

Page 16: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

2

V diplomskem delu smo v prvem delu predstavili uporabljene tehnologije, pri čemer smo na

kratko predstavili tudi njihovo zgodovino in trenutno stanje na trgu. V drugem delu smo

približali postopek izdelave, najzanimivejše komponente aplikacije in uporabljenega

programskega orodja. Za konec smo predstavili še mnenja preizkuševalcev, ki so dala realno

sliko o uporabnosti aplikacije in o tem, kako se je odrezala v primerjavi z že obstoječo

rešitvijo. Na koncu smo navedli še nekaj sklepnih misli, možnosti nadgradnje in analizo

zaupanih mnenj.

Page 17: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

3

2. Pomembnejše tehnologije

V tem delu diplomskega dela smo opisali tehnologije, ki so ključnega pomena za uspešno

implementacijo naše ideje v prakso. Za boljšo umestitev v sedanjost smo dodali tudi nekaj

zgodovine in tako dobili jasno sliko o razvoju tehnologije skozi čas.

2.1 Operacijski sistem Android

Android je odprtokoden operacijski sistem (slika 2.1), namenjen prenosnim mobilnim

napravam, kot so pametni mobilni telefoni in tablice. Uporabniška izkušnja temelji predvsem

na direktni manipulaciji z objekti. Glavna interakcija z napravo je prek zaslona, občutljivega na

dotik [1].

Slika 2.1: Logotip operacijskega sistema Android.

Page 18: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

4

2.1.1 Zgodovina Androida

Za Android je odgovorno podjetje Android Inc., ki je bilo ustanovljeno oktobra leta 2003.

Ustanovitelji so bili Andy Rubin, Rich Miner, Nick Sears in Chris White. Najprej je bil cilj

podjetja ustvariti nov revolucionaren operacijski sistem, namenjen digitalnim kameram, a so

hitro spoznali, da to ne bo zadostilo njihovim zastavljenim ambicijam, zato so se usmerili na

trg mobilnih naprav, kjer sta takrat kraljevala Symbian (Nokia) in Windows Mobile

(Microsoft).

Julija 2005 je podjetje prevzel Google in ustanovil združenje OHA (Open Handset Aliance). Po

začetnih težavah je bil prvi mobilni telefon z novim operacijskim sistemom izdan septembra

2008. Imenoval se je HTC Dream oz. T-Mobile G1 [1].

Android je dobil več posodobitev, ki so izpopolnjevale sistem in dodajale nove

funkcionalnosti. Posebnost pri posodobitvah Androida je ta, da ima vsaka večja posodobitev

ime po znani slaščici. Septembra 2017 bo izšla že verzija 8.0 oz. Android O (slika 2.2).

Slika 2.2: Verzije Androidov.

Page 19: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

5

2.1.2 Stanje na trgu mobilnih naprav

Glede na nekatere spletne vire [2] (slika 2.4) je imelo v prvem četrtletju leta 2017 skoraj 85 %

vseh mobilnih naprav naložen operacijski sistem Android. Trenutno je njegov konkurent le še

produkt podjetja Apple iOS, za ostale pa lahko le upamo, da jim bo uspel kakšen preboj in

bodo ustvarili nekaj zdrave konkurence ter dali pobudo za kakšne večje in korenitejše

nadgradnje.

Slika 2.3: Delež naprav z različnimi verzijami operacijskih sistemov [11].

Slika 2.4: Delež naprav z operacijskim sistemom Android [2].

Page 20: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

6

2.1.3 Arhitektura operacijskega sistema

Operacijski sistem Android je sestavljen iz več sistemskih plasti, prikazanih na sliki 2.5 [3]. Ta

zgradba daje Androidu izjemno prenosljivost in učinkovitost.

Slika 2.5: Arhitektura operacijskega sistema Android.

Page 21: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

7

Jedro Linux

Ta plast skrbi za interakcijo programske opremo s strojno. V jedru so gonilniki in storitve, ki

upravljajo s porabo energije, frekvenco procesorja, napajanjem komponent itd.

Strojni abstrakcijski nivo (HAL oz. Hardware Abstraction Layer)

Je skupek knjižnic Java, ki upravljajo z določenimi komponentami. V tem nivoju imajo svoje

knjižnice kamera, zaslon, senzorji itd.

Zagonsko okolje (ART oz. Android Runtime)

Zagonsko okolje omogoča izvajanje aplikacij. Od verzije 5.0 naprej ima vsaka aplikacija svoj

proces, ki uporablja svoj ART. Ta je napisan posebej za naprave z majhno količino pomnilnika

in podporo več virtualnim instancam izvajanja aplikacij. Starejše verzije Androida so

uporabljale zaganjalnik Dalvik (DVM).

Knjižnice C/C++

Te knjižnice uporabljajo zagonsko okolje ART in knjižnice HAL ter so namenjene čim bolj

direktni interakciji z jedrom operacijskega sistema. Nekaj teh knjižnic je vključenih tudi v

naslednjo plast knjižnic Java. Če želimo kot programerji dostopati do teh knjižnic, moramo

uporabiti paket Android NDK.

Java API

Vse aplikacije se zaganjajo in pridobivajo podatke iz storitev, ki so vključene v ta API

(izjemoma se lahko dostopa do knjižnic C/C++).

Sistemske aplikacije

So tovarniško prednaložene aplikacije, ki omogočajo osnovno funkcionalnost pametnega

mobilnega telefona. Večino teh aplikacij lahko glede na naše preference zamenjamo z

drugimi, ki jih najdemo v trgovini Google Play.

Page 22: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

8

2.2: Programsko orodje InteliJ Android Studio

InteliJ Android Studio (slika 2.6) je uradno s strani Googla priznano orodje za razvoj aplikacij

za operacijski sistem Android. Prvič je bilo predstavljeno 16. maja 2013, prva stabilna različica

pa je izšla decembra 2014. Nadomestilo je rahlo zastarelo orodje Eclipse [4].

Program temelji na videzu programa JetBrains InteliJ IDEA, a je prilagojen razvoju mobilnih

aplikacij.

Slika 2.6: Logotip operacijskega sistema Android.

Page 23: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

9

2.3 Programski jezik Java

V poznih 70. letih je Bill Joy dobil idejo, da bi ustvarili nov programski jezik, ki bi združeval

stare in nove koncepte programiranja. Ta ideja je nekaj časa mirovala, a je bila v 80. povod za

zagon projekta Stealth project, katerega cilj je bil raziskati tedanji trg in vanj vpeljati sodobno

tehnologijo. Leta 1991 so se zato sestali glavni odgovorni za ta projekt in prišli do spoznanja,

da ima največji potencial področje pametnih naprav za široko potrošnjo. Ugotovili so tudi, da

kupcev ne zanima strojna oprema naprav, ampak njihova uporabnost v praksi in trajnost

uporabljene tehnologije. Zgled je bil vzet iz tedanjih TV-sprejemnikov, ki so na isti tehnologiji

delovali že skoraj 50 let. Zaradi novih ciljev so projekt preimenovali v Green project. Eden

izmed glavnih akterjev pri novem projektu je bil James Grosling, ki je bil zadolžen za iskanje

najustreznejšega programskega jezika, s katerim bo mogoče doseči zahtevane

funkcionalnosti. Najprej je izbral jezik C++, a je relativno hitro ugotovil, da ta nizkonivojski

jezik ni primeren za namen njihove uporabe. Zato je poskusil z modifikacijo jezika C++ in ga

zmodificiral tako daleč, da je nastal nov programski jezik, ki ga je poimenoval Oak. Šele pri

registriranju patenta so v podjetju Sun Mycrosystems ugotovili, da programski jezik s takim

imenom že obstaja. Če so hoteli registrirati patent, so morali poiskati novo izvirno ime. Našli

so ga med obiskom kavarne v bližini sedeža podjetja in zanj izbrali ime Java (slika 2.7) [5].

Slika 2.7: Logotip programskega jezika Java.

Page 24: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

10

Pri razvoju so sledili petim principom, ki jih mora upoštevati programski jezik [6]:

biti mora enostaven, objektno orientiran in poznan (sintaksa mora biti podobna že

obstoječim programskim jezikom),

biti mora robusten (odporen na napake) in varen,

biti mora neodvisen od arhitekture in prenosljiv med več sistemi,

izvajanje mora biti učinkovito in hitro,

biti mora interpretiran, dinamičen in imeti podporo za izvajanje na več procesorskih

nitih.

2.3.1 Enostavnost

Java je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno

pa so bili iz njene sintakse odstranjeni še vsi problematični gradniki, ki so programerjem

povzročali največ težav. K enostavnosti precej pripomore tudi velika zbirka izdelanih funkcij,

ki rešujejo že znane težave pri programiranju. Programer se zato lahko posveti izdelavi novih

programov, ne da bi obtičal na kakšnem že rešenem problemu [6].

2.3.2 Objektnost

Java je že od začetka grajena kot objektni programski jezik, kar ji da veliko prednost pred

jezikom C++ [6].

Page 25: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

11

2.3.3 Neodvisnost

Javo zavezuje cilj »Napiši enkrat, poganjaj povsod«. Ta ideja je osnovana na cilju, da se izdela

takšen programski jezik, ki bo enako interpretiran na različnih platformah, ki omogočajo

njegovo prevajanje in izvajanje. Torej če je program preveden na eni platformi in ga

prenesemo na drugo, povsem različno platformo, ga ni treba ponovno prevajati, ampak ga le

zaženemo in pričakujemo enak rezultat. Tukaj so izjeme le datotečne poti, ki so povsem

odvisne od sistema do sistema. A ta težava je programsko lahko rešljiva in ne predstavlja

problema.

Neodvisnost je rešena tako, da sta prevajalno in izvajalno okolje ločeni. Vsaka platforma ima

svoje zaganjalno okolje. Cilj vseh izvajalnih okolij je, da premostijo razlike med različnimi

sistemi in ustvarijo enako okolje za izvajanje programov [6].

2.3.4 Trdoživost

Pri Javi je trdoživost dosežena s tem, da so iz sintakse programskega jezika izpuščene

funkcije, ki so po izkušnjah programerjev v jezikih C in C++ povzročale največ napak. Te

funkcije so: kazalci, večkratno dedovanje, ročno sproščanje pomnilnika (zato skrbi

avtomatiziran proces) in prekrivanje operatorjev, izpuščeni pa so tudi predprevajalni napotki

[6].

2.3.5 Varnost

Pri Javi zagotavlja glavni steber varnosti izvajalno okolje. To skrbi, da se program izvaja

izključno znotraj njega, le-ta pa mu dodeljuje dovoljeno količino pomnilnika in želene

dostope. Koda vseh izvajalnikov je prosto dostopna, kar je v preteklosti že omogočilo odpravo

nekaj varnostnih ranljivosti.

Varnost Jave je danes že praktično potrjena, prav tako pa v njeni zgodovini ni odkriti nobene

večje zlorabe [6].

Page 26: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

12

2.3.6 Visoka zmogljivost

Java uporablja za izvajanje programov tolmača, ki iz bitne kode tvori strojno. Ta način v praksi

ne pripomore k zmogljivosti in hitrosti izvajanja. Težavo so delno rešili z različnimi tehnikami

pravočasnega prevajanja. V določenih primerih se Java lahko postavi ob bok jeziku C++ ali pa

ga celo preseže.

Veliko vlogo pri zmogljivosti igra tudi sposobnost uporabe več niti hkrati. Tako se lahko v

programu sočasno izvaja več dejavnosti naenkrat ali pa izvajalno okolje poskrbi, da se ustvari

nova nit, ki poskrbi za čiščenje pomnilnika in na ta način močno poveča učinkovitost izvajanja

programa [6].

Page 27: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

13

2.4 Iskanje podatkov v strukturah HTML-ja

Na voljo je precej različnih orodij, ki se uporabljajo v ta namen. Mi smo iskali orodje, ki ga je

mogoče uporabljati s programskim jezikom Java, ima podporo za novejši standard HTML 5 in

je redno vzdrževano. Rešitev smo našli v knjižnici JSOUP.

Knjižnica JSOUP je napisana za programski jezik Java, s pomočjo katere je mogoče iz enakih

podatkov, ki jih dobi brskalnik za prikaz spletne strani, na enostaven način (slika 2.8) izluščiti

informacije, ki jih želimo.

JSOUP si iz podanega URL-ja ustvari drevo podatkov in strukturo, po kateri se kasneje

programer enostavno pomika in iz nje pridobiva podatke [7].

Slika 2.8: Primer kode JSOUP.

Page 28: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

14

2.5 Format JSON

JSON je format za prenos in shranjevanje podatkov. To obliko zapisa podpira veliko različnih

programskih jezikov in razvojnih okolij [8]. Za podporo v programskem jeziku Java

potrebujemo eno izmed mnogih dodatnih knjižnic. Mi smo se odločili za knjižnico GSON.

GSON ali Google JSON je odprtokodna knjižnica za programski jezik Java, ki omogoča

serializacijo oz. deserializacijo objektov v obliko JSON. Objekte v taki obliki lahko zelo

enostavno zapisujemo (slika 2.9) v datoteke, zato je hramba v taki obliki zelo pogosta.

Knjižnica je bila naprej izdelana za potrebe Googla, kasneje (maja 2008) pa je bila ponujena

širši javnosti pod licenco Apache License 2.0 [9]. Sedaj se uporablja že verzija 2.8.1, ki je bila

izdana 30. maja 2017.

Slika 2.9: Primer kode GSON.

Page 29: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

15

2.6 Orodje za verzioniranje kode Git

Git je široko uporabljeno orodje, namenjeno verzioniranju kode. To je za večino razvijalcev

nepogrešljiv del vsakega projekta, saj nam omogoča jasen pregled nad verzijami kode in nad

tem, kdo je avtor določenih odsekov. Obstaja več različnih ponudnikov, ki ponujajo storitev,

podprto s strani Gita.

Za naš projekt smo izbrali ponudnika GitHub (slika 2.10). Izbrali smo ga zato, ker študentom

omogoča brezplačno hrambo zasebnih projektov. Pri ostalih ponudnikih je ta storitev

plačljiva.

GitHub je bil prvič dostopen 8. februarja 2008 kot beta verzija spletne strani, uradno pa je

izšel tri mesece kasneje, torej je dostopen že več kot devet let. V tem času se je na portalu

GitHub razvilo veliko novih dodatnih funkcionalnosti, kot so razne statistike dela na projektih

in obširno uporabniško omrežje [10].

Slika 2.10: Logotip portala GitHub.

Page 30: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

16

3. Ideja aplikacije

Pri grajenju ideje za našo aplikacijo smo izhajali iz dejstva, da mora biti aplikacija narejena

čim bolj enostavno in intuitivno. Zgrajena bo na uporabniku prijazen način, tako da bo

uporabnik najprej določil, kaj želi iskati. To bo določil z dodajanjem filtrov glede na ključno

besedo, kategorijo ali lokacijo prodajalca. Ko bo končal z določanjem filtrov, bo sprožil iskanje

in pozabil na našo aplikacijo.

Aplikacija ga bo, v primeru da se je na spletnem oglasniku pojavil nov oglas, ki ustreza

kateremu od nastavljenih filtrov, obvestila z obvestilom v obvestilni vrstici. S klikom na

prikazano obvestilo ga bo aplikacija usmerila na spletno stran oglasnika, kjer bo lahko videl

vse podrobnosti, ki bi ga utegnile zanimati. Na ta način bomo uporabniku prihranili veliko

časa, ki ga bo lahko posvetil drugim aktivnostim.

Izbrali smo tudi že logotip, ki ga bomo uporabljali za našo aplikacijo (slika 3.1).

Slika 3.1: Logotip naše aplikacije.

Page 31: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

17

4. Raziskava trga

V spletni trgovini Google Play smo pod iskanim geslom »bolha« našli že obstoječo mobilno

aplikacijo, namenjeno iskanju oglasov na spletnem oglasniku Bolha.com (slika 4.1).

Aplikacija je narejena pregledno in enostavno. Ima pa tudi možnost vpisa v uporabniški

račun, ustvarjen na njihovem spletnem portalu. Na ta način uporabnik pridobi možnost

pošiljanja zasebnih sporočil in pregled svojih, trenutno objavljenih oglasov. Aplikacija dobro

služi svojemu namenu in je precej boljša rešitev, kot pa da bi morali za vsako iskanje oglasov

obiskati njihovo mobilno spletno stran.

Slika 4.1: Konkurenčna obstoječa aplikacija [povzeto 17. 7. 2017 – trgovina Google Play].

Page 32: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

18

5. Idejna zasnova aplikacije

V tem poglavju diplomskega dela bomo opisali idejno zasnovo aplikacije, kakšne razrede

bomo potrebovali, koliko aktivnosti in kakšne težave bi lahko nastale pri takšni zgradbi.

Prva aktivnost bo namenjena prikazovanju že obstoječih nastavljenih filtrov. Za vsak

nastavljen filter bo v seznamu prikazano ime filtra, ki bo po potrebi nastavljivo ali pa bo

samodejno generirano glede na izbrane vrednosti. Pregled filtrov in ugotavljanje napak bi bilo

lahko olajšano tudi tako, da bi se v seznamu z manjšo pisavo izpisal tudi generiran URL, po

katerem bo potekalo iskanje. V zgornjem delu aktivnosti nad seznamom bosta pozicionirana

dva, največ trije gumbi, s katerimi bo mogoče priti do aktivnosti za dodatne nastavitve ali pa

zagnati iskanje v ozadju. Za dodajanje novih filtrov bo v spodnjem desnem kotu plavajoč

gumb, ki te bo usmeril na aktivnost za dodajanje novega filtra.

Druga aktivnost bo za dodatne nastavitve, in sicer bo enostavna in pregledna, imela bo vsaj

dve kategoriji, katerima bodo določene nastavitve za samo iskanje in njegovo pogostost, ter

kategorija za dodatno filtriranje najdenih rezultatov. V zgornjem levem kotu bo gumb, ki nas

usmeri nazaj na glavno aktivnost.

Tretja aktivnost bo namenjena dodajanju novega filtra. Do nje bomo prišli s klikom na gumb

Dodaj v spodnjem levem kotu glavne aktivnosti. V tej aktivnosti bo mogoče nastaviti želene

iskalne parametre za želeno ciljno skupino oglasov, torej ime filtra, kategorije, cenovni

razpon in število preiskanih strani za določen filter.

Četrta aktivnost bo namenjena zgolj izbiri regije in kategorije. Do te aktivnosti bomo prišli, če

bomo v aktivnosti, namenjeni dodajanju novega filtra, kliknili na izbor kategorije ali regije.

Prikazal se bo nov seznam v svoji aktivnosti. Klik na katero koli opcijo te bo preusmeril nazaj

na prejšnjo aktivnost. Izbral se bo kliknjeni element.

Večjih težav pri tej zasnovi ni zaznati, saj je karseda enostavna ter omogoča enostavne

nadgradnje in razširitve v prihodnje. Rešiti bo treba le nekaj težav, ki se lahko pojavijo med

Page 33: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

19

implementacijo in so odvisne od samega sistema serviranja ter pridobivanja podatkov s

spletne strani.

Idejni videz aplikacije je zelo osnoven in bo vsekakor potreboval korenito spremembo v eni

od nadgradenj.

Page 34: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

20

6. Ustvarjanje projekta

V tem delu bomo na kratko opisali značilnosti projekta, ustvarjenega v programskem orodju

Android Studio, in razložili nekaj odločitev, ki smo jih sprejeli tekom ustvarjanja. Te odločitve

bodo močno vplivale na končno uporabnost aplikacije.

V času ustvarjanja projekta je bila najnovejša dostopna verzija programskega orodja Android

Studio verzija 2.3.3. Ker smo imeli programsko opremo že na osebnem računalniku, smo

ustvarili le nov projekt. Med ustvarjanjem projekta (slika 6.1) smo se omejili na verzije

Androida med 4.1.1 in 7.0, torej bo aplikacija delovala le na tistih mobilnih napravah, ki imajo

verzijo Androida enako ali višjo od 4.1.1, torej API 16 oz. ime Jelly Bean ali novejše.

Takšno odločitev smo sprejeli zato, ker je delež naprav z verzijami Androida pod izbranim API-

jem vedno manjši (v tem trenutku (tretje četrtletje 2017) pod 1,5 % vseh aktivnih naprav in

pada). Prav tako so prenosne naprave, ki ne podpirajo novejših verzij operacijskega sistema,

precej slabše zmogljivosti, kar bi lahko imelo negativen vpliv na uporabnost naše aplikacije.

Dvignila pa se je tudi povprečna učinkovitost procesorjev, kapaciteta baterij in podpora

novejšim standardom prenosa mobilnih podatkov. Na ta način lahko karseda zmanjšamo

možno problematiko naše aplikacije, ki bi se lahko odražala v povečani porabi energije in

količini prenosa podatkov.

Slika 6.1: Ustvarjanje projekta v programskem orodju Android Studio.

Page 35: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

21

6.1 Zunanji viri in nastavitve projekta

Ta kategorija datotek (slika 6.2) v programskem orodju Android Studio predstavlja osnovne

nastavitve projekta. V njej so zapisane spodnje in zgornje omejitve verzije Androida, na

katerih lahko deluje aplikacija. Najdemo pa tudi zapise, katere knjižnice naj bodo vključene

pri prevajanju programa, ter lokacije in verzije programov za grajenje programa.

V datoteko Gradle smo vključili knjižnici GSON in JSOUP.

Slika 6.2: Datoteka Gradle z vključenimi paketi.

Page 36: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

22

6.2 Varnost aplikacije

Večino nastavitev za varnost same aplikacije najdemo v datoteki AndroidManifest.xml.

V njej lahko:

dodajamo zahteve za dostope do interneta, pošiljanja sporočil, klicanja, mobilnih

podatkov, notranjega spomina naprave itd.,

določamo aktivnosti, ki jih uporabljamo v aplikaciji,

navajamo storitve, ki se bodo uporabljale med samim delovanjem,

nastavljamo, kako bo videti ikona aplikacije.

V naši aplikaciji so registrirane štiri aktivnosti in ena storitev, ki bo skrbela za serviranje novih

podatkov (slika 6.3).

Slika 6.3: Datoteka manifest našega projekta.

Page 37: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

23

6.3 Viri

Vse datoteke so napisane v formatu XML (slika 6.4). Vsak element v teh datotekah ima

določeno tudi identifikacijo, na katero se lahko kasneje sklicujemo iz programskih datotek.

V podmapi »layout« najdemo datoteke, ki so odgovorne za videz vsake posamezne aktivnosti

posebej. Videz urejamo z ustrezno postavitvijo notranjih in zunanjih elementov, kasneje pa

jim še lahko določimo odmike od roba ali od katerih drugih elementov.

V podmapah »drawable« in »values« si lahko dodamo poljubne ikone in sličice (»drawable«)

ali pa vrednosti nizov, polij ali barv (»values«), ki jih kasneje lahko uporabljamo za

prikazovanje iz kode, ali pa se nanje sklicujemo že direktno iz mape »layouts«.

Za aktivnost nastavitve je treba v tej mapi ustvariti še mapo »xml«, ki ima podobno vlogo kot

mapa »layouts«, le da je namenjena izključno videzu in funkcionalnosti aktivnosti nastavitve.

Vsebuje le gradnike, s katerimi je mogoče nastavljati kakšne vrednosti, torej stikala, vnosna

polja, sezname za izbore opcij itd.

Slika 6.4: Struktura datotek virov.

Page 38: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

24

6.4 Struktura razredov

V teh razredih najdemo kodo, napisano v programskem jeziku Java.

Če kliknemo na kakšen gumb v aplikaciji, se bo prožil dogodek in klicala se bo funkcija, ki je

napisana v enem od teh razredov. Tukaj lahko definiramo tudi strukturne razrede, ki jih

potem uporabljamo za shranjevanje podatkov oz. prenos podatkov med aktivnostmi.

Vse razrede, ki smo jih napisali za našo aplikacijo (slika 6.5), bomo predstavili v enem od

naslednjih poglavij.

Slika 6.5: Razredi, uporabljeni v naši aplikaciji.

Page 39: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

25

7. Aplikacija BolhaNotify

V tem delu diplomskega dela bomo na kratko predstavili uporabniški vmesnik, ki smo ga

izdelali glede na zgoraj opisano idejo aplikacije.

7.1 Glavna aktivnost

Vedno, ko zaženemo aplikacijo, se zažene koda v glavnem razredu »MainActivity« (slika 7.1).

Najprej se ustvarijo instance razredov, ki jih bomo potrebovali za nadaljnje delo in

manipulacijo s podatki. Ker ob odprtju aplikacije v začasnem pomnilniku ni podatkov o že

nastavljenih filtrih, te podatke preberemo v obliki JSON-a iz masovnega pomnilnika naprave

(kartice SD) in jih spremenimo v objekte podatkov, ki jih prikažemo v aplikaciji. V razredu so

definirane še metode, ki se prožijo ob klikih na gumbe v Išči, Dodaj in Nastavitve.

Če se odločimo, da bomo dodali nov filter, kliknemo na gumb Dodaj v spodnjem levem kotu

zaslona. Ta gumb nas bo s klicem metode isci_Click preusmeril na naslednjo aktivnost

dodajanja filtrov.

Slika 7.1: Glavna aktivnost naše aplikacije.

Page 40: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

26

7.2 Aktivnost dodajanja filtrov

Ta razred je namenjen dodajanju novih filtrov (slika 7.2). Vsebuje logiko in omejitve, s

katerimi se srečamo pri iskanju po spletnem oglasniku Bolha.com. Na primer, iskanje ni

mogoče, če nimamo podane vsaj kategorije, ključne besede ali uporabnika. Razred tako

onemogoči shranjevanje želenega filtra, če nima vsaj enega od teh obveznih podatkov. O

napaki obvesti uporabnika.

Ob kliku na gumb Kategorija ali Regije se odpre nova aktivnost, namenjena lažjemu izboru

želenega podatka s seznama regij/kategorij. Klik na želen izbor nas vrne na prejšnjo aktivnost

in vnese želeno izbiro.

Obveščanje o napakah se sproži ob kliku na gumb, shrani in je implementirano tako, da se

ozadje pri obveznem podatku obarva, če ta ni pravilno vnesen ali pa ga sploh ni. Na koncu, ko

so vsi podatki pravilno vneseni, se objekt s podatki shrani na masovni pomnilnik naprave.

Vrnemo se na prikaz vseh dodanih filtrov.

Slika 7.2: Videz aktivnosti dodajanja filtrov.

Page 41: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

27

7.3 Nastavitve aplikacije

Če v glavni aktivnosti kliknemo gumb Nastavitve, nas aplikacija preusmeri v uporabniški

vmesnik, namenjen dodatnim nastavitvam v aplikaciji (slika 7.3). Te nastavitve vplivajo na

izvajanje vsake ponovitve iskanja. Nastavimo lahko:

vsakih koliko minut se bo izvedlo iskanje novih oglasov. Izbiramo lahko v intervalu

med eno in pet minutami. Seveda se je pri tej nastavitvi treba zavedati, da višja kot bo

pogostost osveževanja, večja bo poraba podatkov in baterije mobilnega telefona. Na

ta račun pridobimo pogostejše obveščanje o novih oglasih in zmanjšamo možnost, da

bi se izdelek prej prodal, kot bi mi videli, da je nekdo objavil oglas;

omogočimo ali onemogočimo lahko obvestilo, ki se v obvestilni vrstici pojavi ob vsaki

ponovni osvežitvi rezultatov. Ta nastavitev je namenjena predvsem preverjanju, če

aplikacija še deluje, da nam ni treba skrbeti, da bi zamudili oglas zato, ker se je

aplikacija ustavila zaradi kakšne napake. Obvestilo se ob vsaki osvežitvi prepiše, da je

v obvestilni vrstici vedno samo eno obvestilo takšnega tipa in da ne moti

pregledovanja oglasov;

nivo iskanja podatkov. Aplikacija lahko pridobiva podatke v dveh možnih nivojih, če se

podatke pregleduje le na prvem nivoju. Torej prebira se le seznam oglasov, a dobimo

le nekaj osnovnih funkcij filtriranja (onemogočena so filtriranja podjetij, po

uporabniku in sortiranje po zadnjem datumu spremembe). V tem načinu aplikacija

porabi precej manj podatkov, a se pri tem žrtvuje njena uporabnost. Če pa

preklopimo na naprednejše iskanje, aplikacija porabi precej več virov, a pridobimo vse

podatke, ki jih potrebujemo za polno funkcionalnost aplikacije, omogočita se tudi

dodatni nastavitvi;

določimo uporabnike, ki jih ne želimo zaslediti med prikazanimi oglasi. Če smo imeli

že kdaj kakšno slabo izkušnjo s kakšnim prodajalcem in z njim ne bi več želeli

poslovati, ga lahko enostavno dodamo med izjeme in se njegovi oglasi med

prikazanimi oglasi ne bodo več prikazovali;

Page 42: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

28

iz prikazanih rezultatov filtriramo oglase podjetij. Ker podjetja na spletni oglasnik

objavljajo precej oglasov, ki večinoma nimajo konkurenčnih cen, polega tega pa

uporabniki na spletnih oglasnikih večinoma kupujejo rabljene stvari in jih nove ne

zanimajo. Na ta način pridobimo preglednejše rezultate iskanja in manj oglasov, ki nas

ne bi utegnili zanimati.

Slika 7.3: Nastavitve filtriranja.

Page 43: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

29

8. Kaj se dogaja v ozadju?

V tem delu bodo predstavljene glavne funkcionalnosti aplikacije, na katere uporabnik nima

neposrednega vpliva, a so ključnega pomena za njeno delovanje.

8.1 Asinhrono izvajanje

Za implementacijo asinhronega izvajanja skrbi razred AsyncTaskRunner. Asinhrono izvajanje

neke zadolžitve nam dovoljuje, da se zadolžitev izvaja v ozadju, mi pa lahko medtem

prikazujemo njen napredek in izvajamo kakšen drug del kode. V naši aplikaciji na tak način

pridobimo možnost spreminjanja nastavitev med delovanjem samega iskanja.

Razred je sestavljen iz treh ključnih funkcij, ki so potrebne za delovanje razreda, in ene, ki je

bila napisana zaradi boljše preglednosti kode. Prva funkcija se imenuje »doInBackground«, v

njej se izvaja poizvedba JSOUP na podan URL, s katerega želimo pridobiti podatke, ta pa nam

vrne drevesno strukturo objektov, po katerih se lahko sprehajamo in iščemo podatke. Vse

pridobljene podatke nato shranimo v objekt in jih pošljemo v naslednjo funkcijo

»onPostExecute«.

Druga funkcija je »onPostExecute«. Ta funkcija se izvede po končanem izvajanju funkcije

»doInBackground«, v katero smo dodali sortiranje in filtriranje pridobljenih podatkov.

Postopek je sledeč:

sortiranje po ID-ju oglasa ali po času, ko je bil oglas nazadnje spremenjen,

filtriranje, kjer se preverja, da je med podatki le en oglas z enakim ID-jem,

odstranjevanje filtriranih uporabnikov in oglasov podjetij,

brisanje že videnih oglasov,

shranjevanje vrednosti zadnjega videnega oglasa,

za vsak element v seznamu izpišemo obvestilo v obvestilno vrstico (slika 8.1).

Page 44: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

30

Tretja ključna funkcija je »onStatusUpdate«. Ta funkcija se uporablja za izpis statusa, kako

daleč je izvajanje trenutne zadolžitve. V našem programu je zaenkrat ne uporabljamo, ker se

ves proces izvaja v ozadju, in uporabnika ne zanima, kako napreduje iskanje, ampak želi le

nove oglase s čim manj motečimi faktorji.

Dodali smo še četrto funkcijo, ki se uporablja za izpis obvestila, vedno ko se zažene iskanje

novih oglasov. Ta funkcionalnost je namenjena predvsem razhroščevanju.

Slika 8.1: Primer prikaza obvestil o oglasih.

Page 45: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

31

9. Mnenja uporabnikov

Po nekaj tednih uporabe aplikacije smo se odločili, da oddamo aplikacijo v testiranje nekaj

uporabnikom. Za prve preizkuševalce so se javili trije navdušenci, ki so želeli ostati anonimni.

Namestitvena datoteka je bila posredovana uporabniku prek elektronskega naslova, ki si jo je

sam naložil na mobilni telefon in jo uporabljal tri dni. Po treh dneh testiranja je podal mnenje

in predloge za izboljšavo aplikacije.

9.1 Mnenje prvega uporabnika

»Menim, da aplikacija, z izjemo nekaterih napak, ki sem jih opazil med delovanjem, deluje

odlično in mi je v teh dneh prihranila ogromno časa, ki bi ga drugače porabil za iskanje po

obstoječi mobilni aplikaciji. Zelo uporabno se mi zdi, da se mi že takoj na zaklenjenem

zaslonu prikažejo obvestila o novih oglasih na Bolha.com. Aplikacija se je enkrat sama od

sebe ustavila in jo je bilo treba ponovno zagnati. Po tem problemu se to ni več ponovilo. Sem

pa opazil, da se mi je na mobilnem telefonu povečala poraba baterije. Iskanje sem imel

nastavljeno na vsako minuto z omogočenim naprednim iskanjem. Kot nadgradnjo bi

predlagal izboljšavo videza, predvsem same aplikacije.«

Page 46: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

32

9.2 Mnenje drugega uporabnika

»Najprej sem imel težave pri namestitvi in zagonu aplikacije, ker mi je mobilni telefon blokiral

namestitev aplikacije iz neznanih virov. Ko sem uredil nastavitve v telefonu, se je aplikacija

namestila brez težav. Že takoj ob zagonu me je zmotil videz uporabniškega vmesnika, ampak

sem se v njem znašel in takoj ugotovil, kakšen je način delovanja aplikacije. Po dodajanju

želenih filtrov sem zagnal iskanje, ampak se je aplikacija vsake pol ure zaustavljala in

prenehala iskati oglase. Krivec za to je bila druga aplikacija, ki je vsake pol ure čistila aplikacije

v ozadju. Ko sem dodal BolhaNotify med izjeme, je delovanje aplikacije potekalo brez težav.

Ideja aplikacije se mi zdi super in v njej vidim možnost za uspeh v trgovini Play. Razen videza

aplikacije ne vidim večjih potreb po nadgradnji, razen mogoče nastavitev, da bi se za vsak

filter posebej dalo nastaviti, če aplikacija išče napredno ali osnovno, ter filtriranje po

podjetjih na podlagi enega filtra in ne vseh naenkrat. Zakaj nas klik na obvestilo ne pripelje v

osnovno aplikacijo in nas prestavi na spletno stran oglasnika?«

Page 47: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

33

9.3 Mnenje tretjega uporabnika

»Aplikacija se mi zdi zelo uporabna in jo bom vsekakor uporabljal še naprej, manj dovršen

videz aplikacije me niti ne moti, ker jo odpreš enkrat, nastaviš, kar želiš, in potem pozabiš

nanjo. V teh treh dneh mi je verjetno prihranila kakšno uro časa, ki bi ga drugače porabil za

iskanje po vseh kategorijah, na katerih iščem oglase na mobilni aplikaciji. Sem pa opazil, da v

naprednem načinu iskanja aplikacija pri mojih filtrih in pogostosti iskanja porabi kar veliko

količino mobilnih podatkov. Zato napredna nastavitev in začetna nastavitev iskanja na vsako

minuto nista najbolj primerni za uporabnike z majhno količino mobilnega prenosa podatkov.

Izboljšal bi edino videz obvestil, ki jih prikazuje aplikacija, in vanje dodal kakšno sliko ali

podobno, ampak se zavedam, da bi to verjetno še povečalo porabo podatkov, in zato

domnevam, zakaj se tega še ni implementiralo.«

9.4 Komentar

Glede na mnenja uporabnikov aplikacije smo prišli do spoznanja, da bo treba najprej urediti

grafični vmesnik aplikacije, saj je bila ta pomanjkljivost omenjena kar dvakrat. Najprej bomo

uredili aktivnost vnosa novih filtrov, saj je po našem mnenju to najšibkejša točka grafičnega

vmesnika. Nato se bomo lotili še obvestil.

Vsekakor bo v aplikacijo dodanih tudi več nastavitev, ki si jih bodo lahko uporabniki prilagajali

glede na svoje želje. Zaskrbelo nas je, ker sta imela dva preizkuševalca težave pri namestitvi

aplikacije oz. se je ta med delovanjem zaustavljala. Menimo, da je bila za zaustavljanje

aplikacije kriva druga programska oprema, namenjena varčevanju s porabo energije, ki je

preprečevala delovanje naše aplikacije v ozadju. Začasno rešitev vidimo v opozorilu, ki se

prikaže na glavni aktivnosti, če je na sistemu prisotna kakšna podobna aplikacija. Kasneje bo

treba težavo rešiti elegantneje.

Page 48: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

34

10. Test porabe prenosa podatkov

Po komentarjih in izraženi zaskrbljenosti smo se odločili narediti testne meritve porabe

prenosa podatkov (Tabela 10.1). Meritve porabe smo izvajali s programom My Data

Manager, najdenim v trgovini Google Play. Program ima zelo pregledno in nazorno prikazano

porabo podatkov iz različnih virov (mobilni, domači brezžični internet) in ločeno porabo na

vsako aplikacijo posebej. Zato ni bilo težko razbrati porabe podatkov naše aplikacije.

Test je potekal pod točno določenimi pogoji na domačem brezžičnem omrežju, na katerem je

bila vseskozi preverjana stabilnost povezave. Mobilna naprava je bila med testiranjem na

enakem mestu priključena na polnilec. Na ta način smo izključili možnost, da bi naprava

izgubila povezavo z omrežjem in zato test ne bi pokazal pravih rezultatov. Vsak test je bil

ponovljen dvakrat in vsak je trajal tri ure. V tabeli so napisani povprečni rezultati obeh

meritev.

Tabela 10.1: Izmerjena poraba virov

Čas

osveževanja

Napredno

iskanje

Količina

filtrov

Poraba

podatkov

Poraba

energije

1 minuta DA 1 61,8 MB 132 mAh

1 minuta NE 1 4,26 MB 54 mAh

1 minuta NE 2 7,32 MB 78 mAh

1 minuta DA 2 117,6 MB 228 mAh

3 minute DA 1 21 MB 48 mAh

3 minute NE 1 3,2 MB 30 mAh

3 minute NE 2 6,1 MB 41 mAh

3 minute DA 2 45,1 MB 90 mAh

Page 49: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

35

5 minut DA 1 13,3 MB 54 mAh

5 minut NE 1 2,0 MB 30 mAh

5 minut NE 2 4,9 MB 38 mAh

5 minut DA 2 26,1 MB 79 mAh

Iz rezultatov meritev je razvidno, da se poraba podatkovnega prenosa močno poveča, če

imamo omogočeno nastavitev naprednega iskanja. Poraba se sorazmerno niža glede na

dolžino intervala iskanja.

Naša priporočila so, da za osnovno iskanje uporabljamo interval treh minut in onemogočimo

možnost naprednega iskanja.

S porabo podatkov je močno povezana tudi poraba energije mobilne naprave, zato z

nastavitvami, ki ugodno vplivajo na porabo podatkov, ugodno vplivamo tudi na porabo

energije.

Page 50: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

36

11. Primerjava aplikacije spletne strani Bolha.com z

aplikacijo BolhaNotify

Če primerjamo našo izdelano aplikacijo z že obstoječo rešitvijo (Tabela 11.1), pridemo do

spoznanja, da sta aplikaciji namenjeni istemu cilju, le da sta izdelani z drugačno začetno idejo.

Konkurenčna aplikacija je namenjena splošnemu iskanju, ki ga ponavljamo vedno znova in

znova. In na ta način ponovno izpostavlja problem, ki ga rešuje naša aplikacija. Torej če

želimo v aplikaciji poiskati želeno ciljno skupino oglasov, moramo aplikacijo vedno znova

odpreti, določiti želene iskalne parametre in pregledati vrnjene rezultate.

Če naredimo preprost izračun na preprostem primeru: na primer koliko klikov na zaslon je

potrebnih za iskanje izdelka s ključno besedo »SSD« z lokacijo prodajalca v »Podravski« regiji.

Pri iskanju ne bomo šli v podrobnosti, kot npr. z določitvijo cenovnega razpona in lokacije

izdelka. Iskanje ponovimo desetkrat v razmahu ene minute ne glede na to, če so na strani

novi rezultati ali ne.

Vsi kliki se štejejo z domačega zaslona, na katerem je bližnjica za odpiranje aplikacije. Prvi klik

je odprtje, zadnji pa zaprtje aplikacije.

Tabela 11.1: Primerjava obstoječe aplikacije z našo

BolhaNotify Aplikacija Bolha.com

Število klikov za testni primer 12 110

Page 51: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

37

11.1 Razlaga rezultatov

Prednost naše aplikacije je, da so filtri nastavljeni vnaprej in jih aplikacija kasneje uporablja

vedno znova in znova, ko pregleduje spletno stran za nove oglase. Obvestilo o novem oglasu

pa prikaže le takrat, ko je med najdenimi oglasi našla novega. Zato vse narejene klike

naredimo v prvi iteraciji iskanja. V ostalih pa klikov ne ponavljamo več.

Pri konkurenčni aplikaciji (slika 11.1) je bilo treba želene korake in klike ponavljati vedno

znova in znova, zato so se kliki z vsako iteracijo le še ponavljali.

Slika 11.1: Videz konkurenčne aplikacije med testnim iskanjem oglasov [povzeto dne 17. 7. 2017 –

aplikacija Bolha].

Page 52: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

38

12. Zaključek

Rezultat diplomskega dela je aplikacija BolhaNotify, ki nam lahko prihrani veliko časa pri

iskanju želenih izdelkov, saj nam omogoča, da v njej prednastavimo filtre, po katerih želimo

iskati oglase, nato pa aplikacija sama poskrbi za iskanje teh oglasov in nas o njih tudi obvešča.

Uporabnik lahko med tem časom počne druge pomembnejše stvari.

Aplikacije ja namenjena vsem, ki so že kadar koli iskali kakšen izdelek po katerem koli

spletnem oglasniku in prišli do ugotovitve, da jim ta postopek vzame preveč časa.

V diplomskem delu smo najprej na kratko spoznali tehnologije in se sprehodili čez njihovo

zgodovino. Te tehnologije so kasneje uporabljene v drugem delu, ki je bil bolj praktično

obarvan ter nas je na zelo enostaven način popeljal v razvoj in v podrobnosti naše aplikacije.

Po predstavitvi aplikacije in njenih najzanimivejših delov smo za mnenje o njej vprašali tri

neodvisne prizkuševalce.

Glede na naše mnenje in mnenje preizkuševalcev je vsekakor treba najprej nadgraditi videz in

dizajn same aplikacije, šele kasneje pa dodati funkcionalnosti, ki bodo uporabnost aplikacije

še razširile. V načrtu za prihodnost je tudi, da se bo aplikacija razširila tudi na druge spletne

oglasnike po Sloveniji, nato pa še v tujino. Koraki za prihodnje trženje same aplikacije se bodo

gibali v smeri objave aplikacije na spletni tržnici Google Play, a bo aplikacija zagotovo prosto

dostopna, se pa bo uredilo oglaševanje v sami aplikaciji.

Pri primerjanju naše aplikacije z obstoječo rešitvijo smo ugotovili, da obe aplikaciji služita

svojemu namenu, a smo spoznali, da se razlikujeta že v sami ideji aplikacije. Zato sta se

razvijali vsaka v svojo smer. Naša aplikacija je usmerjena povsem v iskanje oglasov, obstoječa

rešitev pa je usmerjena v več smeri hkrati, saj lahko z njo oglase iščeš, jih dodajaš, pišeš

zasebna sporočila in še mnogo več. Menimo, da se končna produkta toliko razlikujeta, da ju ni

smiselno uvrščati v enako kategorijo oz. da bi bilo primerno zaradi ene rešitve opustiti drugo,

ki bi jo nadomestila. Po našem mnenju je najprimernejše uporabljati obe aplikaciji hkrati.

Page 53: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

39

Med razvojem in raziskovanjem za izdelavo smo spoznali veliko novih stvari s področja

programiranja. Ker se do začetka izdelave te aplikacije še nismo srečali s programiranjem za

mobilni telefon, je bilo to za nas povsem novo področje, a hkrati poučno doživetje. Vemo, da

nam bodo izkušnje vsekakor prišle prav še pri nadaljnji strokovni poti, saj je veščina

programiranja mobilnih aplikacij zelo cenjena tudi pri delodajalcih. Pri tem diplomskem delu

nam je bolj pomembna pot, ki smo jo prehodili, da smo izdelali aplikacijo, kot pa aplikacija

sama. Seveda pa ta izdelek vsekakor ne bo šel v pozabo in ga bomo z veseljem še naprej

izboljševali, razvijali in seveda pridno uporabljali.

Page 54: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

40

13. Viri

[1] »Wikipedia – Android (Operating system)« [Elektronsko] – obiskano 21.06.2017

https://en.wikipedia.org/wiki/Android_(operating_system)

[2] »IDC« [Elektronsko] – obiskano 28.06.2017

http://www.idc.com/promo/smartphone-market-share/os

[3] »Android platform Arhitecture« [Elektronsko] – obiskano 28.06.2017

https://developer.android.com/guide/platform/index.html

[4] »Wikipedia – Android Studio« [Elektronsko] – obiskano 29.06.2017

https://en.wikipedia.org/wiki/Android_Studio

[5] »Osnove programiranja v Javi« [Knjižno] – Marjan Heričko, Aleš Živkovič, Simon

Beloglavec, Ivan Rozman – Maribor, maj 1999

[6] »Java2 – Temelji programiranja« [Knjižno] Uroš Mesojedec, Borut Fabjan – Ljubljana 2004

[7] »Wikipedia – JSOUP« [Elektronsko] – obiskano 30.06.2017

https://en.wikipedia.org/wiki/Jsoup

[8] »JSON« [Elektronsko] – obiskano 21.06.2017

http://www.json.org/

[9] »Wikipedia – GSON« [Elektronsko] – obiskano 21.06.2017

https://en.wikipedia.org/wiki/Gson

[10] »Wikipedia – GitHub« [Elektronsko] – obiskano 18.07.2017

https://en.wikipedia.org/wiki/GitHub

Page 55: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

41

[11] »Android Dashboards« [Elektronsko] – obiskano 18.07.2017

https://developer.android.com/about/dashboards/index.html

Page 56: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

42

Page 57: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

43

Page 58: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

44

Page 59: Primož Skerbiš - COREJava je enostavnost dosegla z izpeljavo iz splošno znanega programskega jezika C++. Dodatno pa so bili iz njene sintakse odstranjeni še vsi problematični

45