35
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 6201 Aplikacija za preporučivanje filmova za operacijski sustav Android Petar Jukica Zagreb, lipanj 2019.

Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

ZAVRŠNI RAD br. 6201

Aplikacija za preporučivanje filmova za

operacijski sustav Android

Petar Jukica

Zagreb, lipanj 2019.

Page 2: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji
Page 3: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

3

Sadržaj

1. Uvod ................................................................................................................ 4

2. Algoritmi preporučivanja .................................................................................. 5

2.1. Filtriranje temeljeno na suradnji korisnika ................................................. 5

2.2. Pearsonova korelacija ............................................................................... 6

2.2.1. Primjer dobivanja preporuke za određenog korisnika ......................... 8

2.3. Problem filtriranja utemeljenog na suradnji korisnika ................................ 9

2.3.1. Alternativno rješenje preporučivanja ................................................... 9

3. Primijenjene tehnologije .................................................................................. 9

3.1. XML ........................................................................................................... 9

3.2. JSON ....................................................................................................... 10

3.3. Android .................................................................................................... 10

3.3.1. Aktivnost ........................................................................................... 11

3.3.2. Životni ciklus aktivnosti ..................................................................... 11

3.3.3. Namjera ............................................................................................ 13

3.3.4. Android Manifest ............................................................................... 13

3.4. Grafičko korisničko sučelje ...................................................................... 14

3.4.1. Butterknife......................................................................................... 15

3.5. Komunikacija sa poslužiteljem................................................................. 16

3.5.1. Retrofit .............................................................................................. 16

4. Implementacija aplikacije za preporučivanje filmova ..................................... 17

4.1. Funkcionalnost i organizacija aplikacije ................................................... 17

4.2. Nefunkcionalni zahtjevi aplikacije ............................................................ 18

4.3. Izvedba korisničkog sučelja ..................................................................... 19

4.4. Izvor podataka ......................................................................................... 20

4.5. Spremanje podataka i njihova obrada ..................................................... 21

4.6. Firebase autentifikacija ............................................................................ 22

4.7. Firebase Realtime Database ................................................................... 22

4.8. Dohvaćanje i obrada korisničkih podataka .............................................. 26

4.9. Tijek izvođenja aplikacije ......................................................................... 28

Page 4: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

4

5. Zaključak ....................................................................................................... 32

6. Literatura ....................................................................................................... 33

7. Sažetak ......................................................................................................... 35

1. Uvod

Konstantnim povećanjem količine informacija i sadržaja postaje sve

teže i teže pronaći korisniku potrebnu informaciju koja je u skladu s njegovim

preferencijama. Zbog toga mnogi servisi i firme koje pružaju uslugu

distribuiranja sadržaja poput knjiga, filmova, videa i glazbe razvijaju vlastite

sustave za preporučivanje čiji je cilj što efikasnije procijeniti korisnikove

interese te ga uključiti u zanimljive sadržaje. Sustavi za preporučivanje mogu

sadržavati jedan tip ulaznog podatka, poput knjige, ili više tipova ulaznih

podataka u kombinaciji, poput vijesti, knjiga i pretraživanih pojmova prema

kojima se definiraju korisnikovi interesi. Najpoznatiji servisi koji koriste

algoritme za preporučivanje su Google-ov YouTube, Amazon, Netflix i

LinkedIn. Implementacija takvih sustava je nužna za poboljšanje kvalitete

usluge i zbog toga se sve više razvijaju sustavi za preporučivanje. Glavna

ideja većine sustava je procjena interesa korisnika na temelju podataka o

korisnikovom prijašnjem ponašanju, odnosno korisnikovoj povijesti odluka o

ocjenjivanju, pregledavanju ili kupovini određenih sadržaja koje usluga pruža.

Jedan od najpoznatijih sustava za preporučivanje je filtriranje na temelju

suradnje korisnika koje je zasnovano na pretpostavki prema kojoj korisnici

koji se slagali u prošlosti će se vrlo vjerojatno slagati i u budućnosti. U ovome

završnom radu će biti prikazana implementacija algoritma za preporučivanje

utemeljena na korisničkim ocjenama filmova, a koristi pretpostavku suradnog

filtriranja. Završni rad je izveden u obliku aplikacije za operacijski sustav

Android. Glavni razlog korištenja Android platforme je velika raširenost

tehnologije, odnosno broja pametnih telefona, tableta, satova i televizija čiji

je temelj navedeni operacijski sustav. Uz navedeno bitno je dodati da se

Android platforma konstantno poboljšava te se na njoj sve više razvijaju radni

Page 5: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

5

okviri i biblioteke koje olakšavaju razvoj aplikacija na platformi Android. Cilj

ovog završnog rada je izraditi Android aplikaciju za preporučivanje filmova

koja koristi sustav preporuka, a koji se temelji na algoritmu za procjenu

preferencija određenog korisnika.

2. Algoritmi preporučivanja

2.1. Filtriranje temeljeno na suradnji korisnika

Filtriranje temeljeno na suradnji korisnika je tehnika koju koriste sustavi za

preporučivanje. Tehnika koristi informacije o korisnicima kako bi povezala slične

korisnike na temelju korelacije njihovih preferencija. U ovom završnom radu je

korišteno filtriranje temeljeno na suradnji korisnika u svrhu povezivanja korisnika koji

imaju slične preferencije. Glavna ideja tehnike je korištenje informacija o korisnicima

kako bi povezali slične korisnike i preporučivali filmove na temelju sličnosti korisnika

koji su ih ocjenjivali. Pretpostavka tehnike je da će ljudi koji su dali približno iste

ocjene istim filmovima imati sličan ukus. Nakon pronalaženja sličnih korisnika

probiru se odlično ocijenjeni filmovi od jednog korisnika te se preporučuju njemu

sličnom korisniku koji te filmove još nije gledao. [1]

Prva zapreka je način računanja korelacije slučajnih varijabli X i Y koje

predstavljaju ocijenjene filmove od strane korisnika A odnosno korisnika B.

Potrebno je obraditi filmove iz X i Y koji se nalaze u oba skupa kako bi se mogla

procijeniti sličnost korisnika. Najpoznatije mjere pronalaženja sličnosti profila

korisnika:

Tehnika kosinusne sličnosti

Tehnike Pearsonove korelacije

Euklidska udaljenost

Tanimoto koeficijent

Log-vjerojatnost

Yuleova mjera Q

Page 6: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

6

2.2. Pearsonova korelacija

Pearsonova korelacija je tehnika računanja sličnosti dvaju slučajnih varijabli

X i Y te se izvodi kao kvocijent kovarijance dvaju varijabli X i Y s umnoškom dvaju

standardnih devijacija navedenih varijabli. [2]

Formula Pearsonove korelacije:

𝑟𝑋𝑌 =𝑐𝑜𝑣(𝑋, 𝑌)

𝜎𝑋 ∗ 𝜎𝑌

𝑟𝑋𝑌 =𝑐𝑜𝑣(𝑋, 𝑌)

√ ∑ (𝑋𝑖 − �̿�𝑛𝑖=1 )2 ∗ √ ∑ (𝑌𝑖 − �̿�𝑛

𝑖=1 )2

𝑟𝑋𝑌 =∑ (𝑋𝑖 − �̿�)(𝑛

𝑖=1 (𝑌𝑖 − �̿�)

√ ∑ (𝑋𝑖 − �̿�𝑛𝑖=1 )2 ∗ √ ∑ (𝑌𝑖 − �̿�𝑛

𝑖=1 )2

U brojniku formule se nalazi kovarijanca dvaju varijabli kojom se određuje

sličnost dvaju slučajnih varijabli. Kovarijanca raste svakim parom vrijednosti za koji

vrijedi da su obije varijable u paru veće od srednjih vrijednosti slučajnih varijabli. U

nazivniku se nalazi umnožak standardnih devijacija dvaju slučajnih varijabli X i Y.

Za Pearsonovu korelaciju vrijedi: 𝑟𝑋𝑌 ∈ [−1 , 1]

Dobiveni koeficijent nam govori u kakvoj su korelaciji dva korisnika, odnosno u kojoj

su mjeri ocjene dvaju korisnika usklađene s obzirom na prosječnu vrijednost svih

danih ocjena. Možemo kategorizirati korelacije s obzirom na porast ocjene jednog

korisnika:

Page 7: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

7

Pozitivna korelacija -> ocjena drugog korisnika je također u porastu pa vrijedi

𝑟𝑋𝑌 > 0

Negativna korelacija -> ocjena drugog korisnika opada 𝑟𝑋𝑌 < 0

Bez korelacije -> ocjena drugog korisnika se ne mijenja 𝑟𝑋𝑌 = 0

Slika 2.1 Grafovi s pripadajućim korelacijama [3]

Rubni slučajevi korelacije:

Kada vrijedi 𝑟𝑋𝑌 = 1, onda je najjača pozitivna linearna korelacija što znači

da se poklapaju vrijednosti ocjena oba korisnika. Takav slučaj je optimalan

jer pokazuje identičnu sličnost prilikom ocjenjivanja pa se može pretpostaviti

da korisnici imaju sličan ukus.

𝑟𝑋𝑌 = −1 označava najjaču negativnu linearnu korelaciju. Ekstreman slučaj

u kojemu su vrijednosti ocjena dvaju korisnika suprotne, odnosno trendovi

ocjenjivanja su u potpunoj suprotnosti.

Snagu korelacije možemo opisati:

𝑟𝑋𝑌 ∈ [0.00 , 0.19] -> „vrlo slaba korelacija“

𝑟𝑋𝑌 ∈ [0.20 , 0.39] -> „slaba korelacija“

𝑟𝑋𝑌 ∈ [0.40 , 0.59] -> „srednje jaka korelacija“

𝑟𝑋𝑌 ∈ [0.60 , 0.79] -> „jaka korelacija“

𝑟𝑋𝑌 ∈ [0.80 ,1.00] -> „vrlo jaka korelacija“

Page 8: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

8

2.2.1. Primjer dobivanja preporuke za određenog korisnika

Imamo četiri korisnika A, B, C i D koji su ocijenili četiri ista filma svaki sa svojom

ocjenom. Od tih četiriju korisnika odaberu se dva korisnika te njihove ocjene

predstavljamo slučajnim varijablama X i Y. Zatim se ocijene filmova stavljaju u

Pearsonovu jednadžbu i dobivamo korelaciju dvaju korisnika.

Matrica

Korisnik –

Film

(ocjena)

Film Q Film W Film E Film R Film T

Korisnik A 4.5 8.4 7.4 6.4 -

Korisnik B 5.5 6.4 4.4 4.4 7.5

Korisnik C 4.7 8.7 7.9 6.8 8.4

Korisnik D 6.0 7.5 8.2 4.5 3.5

Recimo da se traži preporuka za korisnika A. Potrebno je naći korelaciju

korisnika A s ostalim korisnicima te izabrati onoga s jakom korelacijom.

Uvrštavanjem u Pearsonovu formulu dobivamo sljedeće rezultate.

𝑟𝐴𝐵 0.186869

𝑟𝐴𝐶 0.997976

𝑟𝐴𝐷 0.559120

Iz tablice se može vidjeti da su najsličniji korisnici A i C jer je 𝑟𝐴𝐶 veći od svih

ostalih koeficijenata korelacije te pripada kategoriji „jake korelacije“. Zbog

izračunate korelacije možemo pretpostaviti da je film T dobra preporuka za korisnika

A koji ga još nije pogledao.

Page 9: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

9

2.3. Problem filtriranja utemeljenog na suradnji korisnika

Glavni problem kod filtriranja utemeljenog na suradnji korisnika je nužnost

postojanja informacija po kojima bi sustav mogao preporučivati. Ako sustav nema

dovoljno informacija za izradu preporuke onda se mora naći privremeno alternativno

rješenje koje će se iskoristiti u početku ili u ekstremnim slučajevima. Alternativno

rješenje preporučivanja se koristi kada ne postoji korisnik u bazi podataka koji je u

odnosu „jake korelacije“ ili „vrlo jake korelacije“, s obzirom na korisnika za kojeg se

traži preporuka. Nepostojanje sličnog korisnika može biti posljedica manjka

korisnika u bazi podataka ili manjka ocijenjenih filmova postojećih korisnika u bazi

podataka.

2.3.1. Alternativno rješenje preporučivanja

Manjak informacija o korisnicima u bazi podataka možemo razriješiti upitom

korisnika o njegovim/njenim najdražim žanrovima. Znanje najdražih žanrova

korisnika nam omogućuje pretragu baze podataka TMDb s obzirom na ocjenu i žanr

što nam omogućuje dohvat filmova koji bi mogli biti po korisnikovom ukusu.

Informaciju o omiljenim žanrovima korisnik daje pri izradi vlastitog korisničkog

računa.

3. Primijenjene tehnologije

3.1. XML

XML je oznaka za proširivi jezik za označavanje podataka i dokumenata

(engl. EXtensible Markup Language) čija je svrha čitljivost i razumijevanje od

strane računala i korisnika. Sličan je HTML jeziku koji je isto deklarativan jezik,

Page 10: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

10

ali XML ne sadrži unaprijed definirane elemente, već se moraju odrediti konkretni

nazivi elemenata i njihova struktura. Prilikom razvijanja aplikacije za operacijski

sustav Android se XML koristi za različite svrhe, od kojih su glavne definiranje

izgleda korisničkog sučelja i uređivanje i pohranjivanje važnih informacija koje

se nalaze u Android Manifest datoteci. Korisničko sučelje se određuje

stvaranjem i spremanjem XML datoteka s opisom rasporeda elemenata unutar

„layout“ mape izvornog koda, dok ostale datoteke navedenog formata koriste za

opisivanje bitnih informacija, poput „strings.xml“ unutar kojeg se definiraju nizovi

znakova koji se koriste prilikom izrade korisničkog sučelja.

3.2. JSON

JavaScript Object Notation, poznatiji kao JSON je format koji se koristi za

pretvorbu i slanje podataka putem internetske veze. Puno jednostavniji i čitljiviji

format u odnosu na XML, primarno zbog svoje strukture koja se sastoji od parova

imena sa vrijednostima. JSON format se koristi za opisivanje hijerarhije podataka te

ga je lakše sintaksno analizirati i pretvoriti u objekt. Zato se sve više koristi u

komunikaciji između poslužitelja i web aplikacije, tako je i u slučaju ove aplikacije

koja komunicira s Firebase i TMDb poslužiteljem preko JSON formata. Prilikom

primanja podataka s navedenih poslužitelja se deserijalizira dobiveni podatak u

objekt pomoću Gson pretvarača.

3.3. Android

Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno

najzastupljeniji u mobilnoj industriji. Iako je inicijalno razvijen za pametne telefone i

tablete, ubrzo su razvijane dodatne inačice poput Android TV, Android Auto i Wear

OS koje služe kao operacijski sustavi za pametne televizore, automobile i pametne

satove. Sve inačice Android operacijskog sustava se temelje na jezgri Linux.

Page 11: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

11

Ova aplikacija je namijenjena uređajima koji imaju minimalno 21. verziju Android-

ovog aplikacijskog programskog sučelja (engl.application programming interface).

Najstarija verzija operacijskog sustava Android koja podržava ovu aplikaciju je

Android 5.0, također poznat po kodnoj riječi „Lollipop“. Prema Google Dashboard

podacima ovu aplikaciju podržava 89.3% uređaja koji pokreću Android OS.[4]

3.3.1. Aktivnost

Aktivnost je razred čija instanca enkapsulira jedan ekran na koji se koncentrira

korisnik. Aktivnosti rade u interakciji s korisnikom te stvaraju prozor unutar kojeg se

postavljaju elementi korisničkog sučelja. Programski kod se pokreće pomoću više

Callback metoda koje se izvode u skladu s trenutnim stanjem aktivnosti unutar

životnog ciklusa (engl. Life cycle). Svaka aplikacija ima glavnu aktivnost s kojom

počinje rad. Prijelazi u sljedeće aktivnosti definirane su pomoću mehanizama

namjera tako da trenutna aktivnost pokreće sljedeću.[5]

3.3.2. Životni ciklus aktivnosti

Operacijski sustav upravlja aktivnostima pomoću stoga aktivnosti. Prilikom

pokretanja aktivnosti, ista se stavlja na vrh stoga i postaje trenutna aktivnost, dok je

prethodna aktivnost uvijek ispod trenutne u stogu i neće se ponovno pokrenuti dok

trenutna ne završi. Pojedina aktivnost se sastoji od četiriju aktivnosti:

Aktivnost se trenutno izvodi.

Aktivnost je vidljiva, ali je prekrivena s aktivnošću neke druge aplikacije.

Aktivnost je potpuno prekrivena drugom aktivnošću te onda operacijski

sustav može izbrisati prozor aktivnosti iz memorije jer je aktivnost izgubila

prioritet.

Aktivnost završava s radom ili se gasi njen proces te se tako uništava

aktivnost. U slučaju ponovnog pokretanja aktivnosti moraju se izvesti sve

operacije kao da je aktivnost pokrenuta prvi put.

Page 12: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

12

Slika 3.1 Životni ciklus aktivnosti [6]

Prilikom pokretanja aktivnosti se pokreću redom metode: onCreate(), onStart() i

onResume. Unutar metode onCreate() odrađuje se povezivanje podataka te se

nakon nje pokreće metoda onStart() koja se poziva kada je aktivnost vidljiva

korisniku. Metoda onResume() se pokreće čim korisnik dobije mogućnost djelovati

na elemente korisničkog sučelja aktivnosti. Metode onStop() i onDestroy() se

pokreću kada aktivnost više nije vidljiva, odnosno kada se aktivnost uništava. U

slučaju da se korisnik želi vratiti na aktivnost, a da nije uništena, onda se pokreće

metoda onRestart(). [4]

Page 13: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

13

3.3.3. Namjera

Namjera (engl. Intent) je razred koji opisuje operaciju koja će se izvesti, a

moguće je instancu razreda Intent koristiti za pokretanje aktivnosti, komuniciranje s

pozadinskim uslugama (engl. Service) i pokretanje vlastitih usluga te za slanje

poruka između aktivnosti. Postoje dva tipa namjera: implicitne i eksplicitne, pritom

su implicitne one namjere omogućavaju pozivanje bilo koje druge aplikacije

instalirane na uređaju u svrhu izvršavanja određene funkcionalnosti. Korisniku se

daje na izbor koju će aplikaciju pokrenuti za izvršenje funkcionalnosti. Eksplicitni tip

namjere poziva specifičnu komponentu operacijskog sustava Android poput

pokretanja sljedeće aktivnosti koja se treba izvoditi. Namjera se unutar ove

aplikacije koristi za pokretanje aktivnosti i slanje vrijednosti iz trenutne u sljedeću

aktivnost.

3.3.4. Android Manifest

Svaka Android aplikacija u korijenu svojeg izvornog koda sadrži

AndroidManifest.xml datoteku koja opisuje osnovne informacije o aplikaciji koje su

nužne operacijskom sustavu, alatima za izgradnju (engl. build) i Google Play-u.

Android Manifest datoteka mora sadržavati:

Paket (engl. package) u kojemu se nalazi izvorni kod na koji se referira

Android Manifest. Android alati koriste informaciju kako bi definirali lokaciju

važnih razreda i aktivnosti prilikom izgradnje projekta. Prilikom prevođenja i

izgradnje aplikacije vrijednost paketa se zamjenjuje s identifikacijskim

ključem aplikacije koji se koristi kao jedinstveni ključ za Google Play, kao i za

sam operacijski sustav na kojemu se aplikacija pokreće.

Komponente aplikacije poput aktivnosti, usluga, pružatelja usluga i primatelja

poruka. Svaka komponenta mora imati definirano ime razreda koji opisuje

navedenu komponentu. Uz navedeno, komponente mogu imati definirani

filtar namjere (engl. intent filter) čija je svrha definiranje kako komponenta

počinje s radom. Na primjer, početna glavna aktivnost ima zadani filtar

Page 14: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

14

namjere kojim je zadano da se s tom aktivnošću započinje aplikacija,

odnosno prilikom pokretanja aplikacije korisnik tu aktivnost vidi prvu.

Ikonu i naziv po kojoj korisnik može raspoznati aplikaciju tijekom korištenja

mobilnog uređaja.

Osim navedenih osnovnih informacija koje mora sadržavati manifest, također je

moguće navesti dopuštenja i sklopovska ili programska svojstva koja su potrebna

za izvođenje aplikacije na uređaju. Kada je potrebno pristupiti korisničkim podacima

ili određenim sustavskim komponentama, onda se koriste dopuštenja (engl.

permissions) koja traže od korisnika pristup resursu. Svaki permission je definiran

jedinstvenom labelom. Od operacijskog sustava Android 6.0 korisnika se traži

dopuštenje za određeni resurs prilikom pokretanja aplikacije. Konkretno, u ovom

završnom radu se traži dopuštenje za pristup internetu. Sklopovska i programska

svojstva su potrebna u slučaju da aplikacija koristi određene komponente ili

funkcionalnost koju uređaj mora imati. Svojstva se navode labelom pod nazivom

„uses-feature“ te imenom konkretnog svojstva, i informacijom koja definira je li

funkcionalnost nužna. Takav mehanizam omogućava sprječavanje instalacije

aplikacija na uređaje s kojima nije kompatibilna, odnosno s uređajima koji nemaju

traženu funkcionalnost. Navedene informacije nisu nužne, ali su potrebne, ako

aplikacija koristi određeni resurs operacijskog sustava ili traži pristup korisničkim

podacima. [7]

3.4. Grafičko korisničko sučelje

Grafičko korisničko sučelje je pisano deklarativno u XML kodu pomoću kojeg se

definira raspored elemenata na ekranu prilikom pokretanja određene aktivnosti, ali

je moguće i dinamički mijenjati izgled grafičkog korisničkog sučelja pisanjem koda

u Javi kojim se dodaje novi objekt. Razredi „View“ i „ViewGroup“ služe za definiranje

korisničkog sučelja dodavanjem instanci navedenih razreda. [8]

Objekt razreda „View“ predstavlja osnovnu komponentu grafičkog sučelja s

kojom korisnik može međudjelovati te je odgovoran za iscrtavanje i pokretanje

funkcionalnosti s obzirom na određeni događaj (engl. event handling). Izgled ekrana

Page 15: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

15

određene aktivnosti je određen stablastom strukturom objekata koji se postavljaju

unutar jednog ili više XML datoteka te je njima moguće manipulirati preko

jedinstvenog „android:id“ ključa koji omogućuje pokazivanje na točno određeni

element. Dodavanje „android:id“ vrijednosti je opcionalno, ali može biti nužno ako je

potrebno dodavati funkcionalnost određenom elementu. Moguće je definirati

dodatne atribute određenog elementa koji pobliže određuju poziciju elementa u

spremniku ili mijenjaju izgled samog elementa.[9]

Razred ViewGroup preuzima navedene funkcionalnosti od razreda View preko

nasljeđivanja. Pritom ViewGroup služi za definiranje spremnika (engl. container) i

rasporeda elemenata (engl. layout) unutar kojeg se mogu spremati dodatni

ViewGroup objekti ili widgeti koji su također podrazredi razreda View. Postoje

različiti spremnici elemenata koji se koriste ovisno o tome kakva se funkcionalnost

želi postići, ali je potrebno paziti na izvedbu layout-a jer može doći do sporijeg

izvođenja aplikacije u slučaju korištenja i kombiniranja elemenata koje ne

preporučuje dokumentacija. [10]

3.4.1. Butter Knife

Za podatkovno povezivanje (engl. Data binding) se koristi Butter Knife biblioteka

čija funkcionalnost zamjenjuje funkciju findViewById() i dodatni programski kod.

Butter Knife biblioteka služi primarno kao konvencija koja se koristi za podatkovno

povezivanje u programskom jeziku Java u svrhu boljeg i preglednijeg programskog

koda te predstavlja efikasan način mapiranja varijable i određenog elementa u XML

datoteci. Mapiranje je izvedeno pomoću vrijednosti „id“ pojedinog elementa koji se

povezuje s varijablom tipa razreda funkcionalnosti koja je sukladna elementu na koji

se veže. Korištenje Butter Knife biblioteke gubi na popularnosti pojavom

programskog jezika Kotlin koji omogućava podatkovno povezivanje bez pozivanja

funkcije, već uz direktno upravljanje elementima preko njihove „id“ vrijednosti. [11]

Page 16: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

16

3.5. Komunikacija sa poslužiteljem

3.5.1. Retrofit

Retrofit je radni okvir napisan u Javi koji omogućava jednostavno razvijanje

REST klijenta za Android aplikaciju. Praktičan je za korištenje jer pruža

funkcionalnost konverzije podatka iz POJO-a (engl. Plain Old Java Object) u

strukturirani tip podatka koji je naveden pri pokretanju klijenta. Pri konverziji se

najčešće koristi JSON tip podatka, odnosno njemu pripadni pretvarač Gson, iako

korisnici mogu napisati vlastiti pretvarač podataka ili koristiti XML ili Protocol Buffers

pretvarač podataka. Naravno, prije dohvaćanja podataka potrebno je napraviti

sučelje s metodama koje sadrže prikladnu HTTP anotaciju poput „@GET“,

„@POST“, „@DELETE“ ili „@PUT“ kojima se određuje zahtjev te razred koji služi

kao predložak za stvaranje objekta koji nastaje konverzijom iz dobivenog odgovora.

Retrofit klijent se temelji na OkHttp biblioteci za komunikaciju s HTTP zahtjevima.

[12]

Page 17: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

17

4. Implementacija aplikacije za preporučivanje

filmova

4.1. Funkcionalnost i organizacija aplikacije

Slika 4.1 Dijagram obrazaca uporabe

Prikazani obrazac uporabe pokazuje koje su funkcionalnosti omogućene korisniku i

kakva je organizacija aplikacije za preporučivanje. Donja slika (4.2) objašnjava

Page 18: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

18

slijednu komunikaciju između sudionika sustava unutar obrasca uporabe za

zatraživanje preporuke filma.

Slika 4.2 Sekvencijski dijagram obrasca obrade podataka

4.2. Nefunkcionalni zahtjevi aplikacije

Više korisnika može unositi informacije o ocjenama filmova u isto vrijeme

Aplikacija mora biti kontinuirano spojena internetskom vezom sa servisom

koji sadrži bazu podataka s filmovima kako bi aplikacija radila

U slučaju kratkotrajnog gubitka internetske veze, podaci se moraju naknadno

pohraniti u Firebase bazu podataka

Page 19: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

19

4.3. Izvedba korisničkog sučelja

Na slici 5.1 je prikazan primjer hijerarhijske ovisnosti razreda View i

ViewGroup te je slikom 5.2 prikazan rezultat prikazane hijerarhije. Primjer prikazuje

izvedbu koja je definirana statički preko XML-a i dinamički pomoću Java koda koji u

ovome slučaju služi za dodavanje elemenata. Statički dio je na lijevoj strani strukture

hijerarhijske ovisnosti te se odnosi na sve elemente razreda View, dok je dinamički

dio napravljen dodavanjem elementa unutar spremnika RecyclerView. Dinamičko

dodavanje se pokušava optimizirati prilikom prikazivanja podataka na ekranu. Zbog

toga se stvaraju vlastiti podrazredi razreda Adapter i ViewHolder. Adapter

popunjava listu s elementima, dok ViewHolder inicijalizira vrijednosti određenog

elementa. Na slici 5.2 se može vidjeti primjer dinamičkog dodavanja elemenata

pretraživanjem filmova po nazivu ili generiranjem popularnih filmova gumbom

„Popular movies“.

Slika 4.3 Hijerarhijska struktura elemenata

Page 20: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

20

Slika 4.4 Rezultat prikazane hijerarhije

4.4. Izvor podataka

Prvi uvjet za rješavanje problema preporučivanja filmova je pristup bazi

podataka velikog broja filmova iz koje ćemo dohvaćati informacije koje prikazujemo

korisniku. Baza podataka korištena u rješenju problema je u sklopu internetskog

servisa TMDb s pozamašnom količinom upisanih filmova kao i funkcionalnosti koja

omogućuje dohvat po različitim parametrima. Dohvat filma se definira po upitu s

parametrima prikazanim na slici. Povratna informacija koja se dobiva od GET

zahtjeva je u JSON formatu. Slika 6.1 pokazuje kako je definiran odgovor na zahtjev

te kakvu je informaciju moguće dobiti.

Page 21: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

21

Slika 4.5 Parametri po kojima se dohvaćaju podaci sa TMDb [13]

Slika 4.6 Informacije koje se vraćaju klijentu sa TMDb poslužitelja [13]

4.5. Spremanje podataka i njihova obrada

Sve je veći broj Android aplikacija kojima je potrebna informacija o identitetu

korisnika. Znanje o identitetu korisnika može poslužiti na puno načina, primarno za

povezivanje određenog korisnika s njegovim sadržajem koji je pohranjen u bazi

podataka. Tako se teži personaliziranju aplikacije prema korisniku koji ju koristi. U

ovom slučaju spremanje podataka o korisnicima je nužno kako bi se mogle raditi

Page 22: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

22

procjene ovisno o prikupljenim podacima koje korisnik unosi ocjenjivanjem filmova.

Prethodno navedeni uvjet o potrebi spremanja podataka rezultira korištenjem

poslužitelja koji će upravljati korisničkim podacima unutar vlastite baze podataka.

Pri rješavanju problema autentifikacije korisnika i spremanja podataka o korisniku

se koristila Firebase tehnologija koja sadrži sučelje za komunikaciju Android klijent

aplikacije sa Google-ovim poslužiteljem koji sprema i autentifikacijske podatke

korisnika i koji stvara račun unutar navedene aplikacije. Za spremanje podataka se

koristi Firebase Realtime Database koja automatski mijenja podatke prilikom slanja

s android klijenta te ih pohranjuje u JSON formatu. Podaci unutar baze su

strukturirani od korisničkog identifikacijskog ključa koji sadrži listu filmova i njihovih

pripadajućih ocjena. [14]

4.6. Firebase autentifikacija

Firebase autentifikacija je sučelje za povezivanje Android klijenta s Firebase

poslužiteljem. Korisnikovim podatcima se dodaje posebni znakovni niz koji

označava jedinstveni korisnikov identifikacijski ključ. Ono što čini Firebase

autentifikaciju praktičnom je izravni pristup usluzi Firebase pomoću jednostavnog

upita koji dohvaća trenutnog korisnika koji koristi aplikaciju na određenom uređaju

u tom trenutku. Autentifikacija se može izvesti na više načina tako da se postojeće

sučelje nadograđuje s vlastitim mehanizmima. Na ovoj aplikaciji je Firebase

autentifikacija izvedena jednostavnim stvaranjem računa pomoću Email adrese i

lozinke. [15]

4.7. Firebase Realtime Database

Firebase Realtime Database je NoSQL baza podataka koja se nalazi na Google

oblaku. Izvedba Firebaseove baze podataka rezultira automatskim preslikavanjem

promjena koje poziva Android klijent što omogućava brže izvođenje aplikacije te

izbjegavanje dohvaćanja zastarjelih podataka. Uz navedeno, Firebase sadrži

mehanizam koji čini aplikaciju otpornom na zatajenja, odnosno osigurava naknadno

Page 23: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

23

slanje podataka u slučaju kratkotrajnog gubitka internetske veze. Ponovnim

povezivanjem na poslužitelja se osvježavaju podatci u bazi podataka bez obzira na

to što je korisnik pozvao navedenu funkcionalnost tijekom gubitka povezanosti s

Firebase poslužiteljem. Svi podatci u Firebase bazi podataka se spremaju u JSON

formatu, te se pohranjuju u stablastu strukturu. Struktura počinje od ključa koji

označava glavni čvor (čvor roditelj) unutar kojeg se spremaju podatci (čvorovi

djeca). Korištenje baze podataka je izvedeno na način navođenja čvorova po kojima

se putuje te je time određeno mjesto u strukturi baze podataka gdje će se nalaziti

određeni objekt. Prilikom spremanja se šalje POJO (plain old java object) koji se

pretvara u JSON format te sprema.

Stablasta struktura baze podataka zahtjeva način oblikovanja čiji je cilj smanjiti

redundanciju i odvojiti zasebne entitete u vlastite strukture. Najpoznatije dobre

prakse spremanja u Firebase bazu podataka su:

Izbjegavanje ugniježđenih podataka

Povezivanje dvaju struktura dupliciranjem podatka (radi jednostavnosti

pretraživanja)

Podijeliti podatke u zasebne strukture kako bi se ubrzalo povlačenje

podataka sa poslužitelja

Slika 4.7 Struktura podataka

Slika 7.1 prikazuje glavni čvor „moviepick-b31d6“ i njegove djeca čvorove

„user-data“ i „movie-data“ koji sadrže informacije o korisničkim preferencijama,

odnosno informacije o filmovima. Među njima je naveden i čvor „genre_data“ koji

povezuje određenog korisnika sa žanrom kojeg taj korisnik preferira.

Page 24: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

24

Slika 4.8 Struktura podataka

Slika 7.2 prikazuje čvorove-djecu koja određuju pojedini element unutar

hijerarhije. Pritom su elementi unutar „movie_data“ čvora identifikacijski ključevi

filmova koji su dobiveni sa TMDb servisa, dok su unutar „genre_data“ i „movie_data“

definirani identifikacijski ključevi korisnika dobiveni sa Firebase autentifikacijske

usluge.

Slika 4.9 Struktura podataka o žanru

Čvor pojedinog korisnika unutar „genre_data“ prikazuje listu sa identifikacijskim

ključevima pojedinog žanra koji su dohvaćeni sa servisa TMDb.

Page 25: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

25

Slika 4.10 Struktura podataka o filmu

Slika 7.4 prikazuje hijerarhijsku strukturu podataka o filmovima koje su

korisnici pogledali. Kada se ocijeni određeni film onda se dodaje u prikazanu

strukturu. Struktura filma se sastoji od njegovog identifikacijskog ključa te općih

informacija o filmu poput datumu izlaska filma, nazivu filma, prosječna ocjena

korisnika sa TMDb baze podataka.

Na slici 7.5 su prikazani temeljni podatci o filmovima koje je korisnik ocijenio.

Polje elemenata filmova je definirano identifikacijskim ključem korisnika. Unutar

svakog elementa koji opisuje filmove stoji identifikacijski ključ filma, ocjena koju je

dao korisnik i prosječna ocjena korisnika iz TMDb baze podataka.

Page 26: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

26

Slika 4.11 Struktura podataka ocjene filma korisnika

4.8. Dohvaćanje i obrada korisničkih podataka

Komunikacija s poslužiteljem TMDb je izvedena pomoću radnog okvira

Retrofit, dok je komunikacija s Firebase poslužiteljem izvedena pomoću alata za

razvoj programske potpore Firebase. Aplikacija komunicira sa TMDb

poslužiteljem kako bi se dohvatili podatci o filmovima koje će korisnik ocjenjivati

ili pregledavati. Prilikom ocjenjivanja se podaci šalju na poslužitelj Firebase.

Obrada korisničkih podataka je izvedena preko instance zasebnog razreda

koji dohvaća podatke o korisnicima iz Firebase baze podataka i traži korisnike

koji imaju ocijenjene iste filmove. Na temelju izračuna se dobiva korelacija

između korisnika pa se može zaključiti postoji li sličan korisnik onome koji je

zatražio preporuku filma. Obrada završava uspješno, ako postoji dovoljno jaka

korelacija između dvaju korisnika te se po završetku pronalazi film koji je sličan

korisnik ocijenio s 7.5 ili više. Identifikacijski ključ pronađenog filma se šalje kao

Page 27: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

27

rezultat koji se koristi za dohvaćanje informacija o filmu. Obrada može završiti

neuspjehom, u slučajevima kada:

Nema drugih korisnika u bazi podataka.

Postojeći korisnici nisu ocijenili dovoljan broj istih filmova.

Ne postoji korisnik sa zadovoljavajućom korelacijom s obzirom na

korisnika koji je zatražio preporučivanje

Korisnik koji je zatražio preporučivanje nije ocijenio dovoljan broj

filmova

U slučaju neuspjeha, algoritam vraća null vrijednost koja daje do znanja da je

potrebno koristiti alternativni način preporučivanja.

Slika 4.12 Pozivanje metoda za računanje korelacije između dvaju korisnika

Traženog korisnika se uspoređuje s ostalim korisnicima u bazi podataka tako

da se uzimaju jedan po jedan i te se za svaki par računa korelacija. Ako nema drugih

korisnika u bazi onda nije moguće provesti algoritam. Korelaciju je moguće

izračunati samo ako su korisnici ocijenili minimalan broj istih filmova. Izračunata

korelacija se uspoređuje s minimalnom vrijednosti jake korelacije i ovisno o

vrijednosti se šalje ili Prvim pronalaskom korisnika sa „jakom“ korelacijom se poziva

metoda za preporučivanje filma. Nakon pronalaska sličnog korisnika se poziva

metoda koja pokušava pronaći film koji je taj korisnik ocijenio 7.5 ili više, a da ga

pritom nije ocijenio drugi korisnik.

Page 28: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

28

Slika 4.13 Računanje Pearsonove korelacije unutar metode calculateCorelation()

4.9. Tijek izvođenja aplikacije

Aplikacija počinje s izvođenjem tako da se prvo pokreće aktivnost za prijavu koja

traži od korisnika upisivanje E-mail adrese i lozinke s kojom je izradio račun. Nakon

upisivanja podataka se stišće gumb s natpisom „Log in“ kojim se otvara aktivnost

za prikaz glavnog izbornika. U slučaju da korisnik nema izrađen korisnički račun

onda stišće na plavi natpis „Create an account“ te se onda prebacuje na aktivnost

za registraciju.

Page 29: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

29

Slika 4.14 Prijava i glavni izbornik

Glavni izbornik je središte aplikacije s kojeg je moguće dalje pokretati

funkcionalnosti za preporučivanje, pretraživanje baze podataka, pregled ocijenjenih

filmova i gumb za odjavu iz sustava. Aktivnost za preporučivanje filmova se pokreće

pritiskom na gumb pod nazivom „Recommend a movie“, pretraživanje filmova

pomoću „Search movie database“, pregled ocijenjenih filmova preko „Watched

movies“ te odjava preko gumba „Log out“.

Slika 8.2 prikazuje registraciju koja se sastoji od dvaju aktivnosti, koje služe

za spremanje podataka o korisniku na bazu podataka Firebase. Prva aktivnost traži

od korisnika unos E-mail adrese, korisničkog imena i lozinke koju će imati njegov

račun. Osim navedenih informacija korisnik mora obavezno označiti barem jedan

žanr tako da označi kućicu pored imena žanra.

Page 30: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

30

Slika 4.15 Dvije aktivnosti registracije

Druga aktivnost za registraciju traži od korisnika pretraživanje i ocjenjivanje

filmova. Filmovi se mogu pretraživati po naslovu filma te se pritom dohvaćaju svi

filmovi naziva sličnog navedenom. Alternativa pretraživanja po naslovu je

generiranje trenutno popularnih filmova. Pritiskom na gumb „Popular movies“ se

dohvaćaju trenutno aktualni filmovi sa servisa TMDb. Aktivnost za ocjenjivanje filma

otvara se pritiskom na sliku određenog filma u listi ispod gumba „Continue“.

Gumbom „Continue“ se spremaju podatci, završava registracija te se pokreće glavni

izbornik.Aktivnost za ocjenjivanje filmova sadrži sliku i osnovne informacije o filmu

na temelju kojih korisnik može znati je li gledao film ili ne. Pritiskom na zvjezdice se

određuje ocjena filma i pritiskom na tipku „Save rating“ se sprema ocjena u bazu

podataka. Na slikama 7.4 i 7.5 su prikazane aktivnost pretraživanja filmova i

aktivnost davanja preporuke korisniku.

Page 31: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

31

Slika 4.16 Aktivnost za ocjenu filma Slika 4.17 Aktivnost za pretraživanje filmova

Slika 4.18 Aktivnost preporučivanja filma

Page 32: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

32

5. Zaključak

Aplikacija za preporučivanje filmova je uspješno napravljena uz korištenje

tehnologija koje se široko primjenjuju prilikom razvoja aplikacija za operacijski

sustav Android. Trenutna aplikacija osigurava osnovnu funkcionalnost za

pretraživanje, ocjenu filmova te dobivanje preporuke. Moguće je i daljnje

nadograđivanje koje bi omogućilo pretraživanje filmova po različitim drugim

kriterijima kao prema prezimenu glumca, ocjeni i slično. Pisanjem ovog rada sam

stekao osnovna znanja o tehnologijama i razvoju aplikacija za Android operacijski

sustav koja će iznimno poslužiti u daljnjem obrazovanju i poboljšanju.

Page 33: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

33

6. Literatura

[1] Recommender Systems — User-Based and Item-Based Collaborative Filtering,

https://medium.com/@cfpinela/recommender-systems-user-based-and-item-

based-collaborative-filtering-5d5f375a127f,

lipanj 2019.

[2] Pearsons correlation,

http://www.statstutor.ac.uk/resources/uploaded/pearsons.pdf,

lipanj 2019.

[3] Pearson correlation,

https://statistics.laerd.com/statistical-guides/pearson-correlation-coefficient-

statistical-guide.php

lipanj 2019.

[4] Distribution dashboard,

https://developer.android.com/about/dashboards/,

lipanj 2019.

[5] Activity

https://developer.android.com/reference/android/app/Activity,

lipanj 2019.

[6] Activity Lifecycle,

https://developer.android.com/guide/components/activities/activity-lifecycle,

lipanj 2019.

[7] App Manifest Overview,

https://developer.android.com/guide/topics/manifest/manifest-intro,

lipanj 2019.

[8] Layouts,

https://developer.android.com/guide/topics/ui/declaring-layout,

Page 34: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

34

lipanj 2019.

[9] View,

https://developer.android.com/reference/android/view/View,

lipanj 2019.

[10] ViewGroup,

https://developer.android.com/reference/android/view/ViewGroup.html,

lipanj 2019.

[11] Say goodbye to findviewbyid with data binding - Butterknife

https://inthecheesefactory.com/blog/say-goodbye-to-findviewbyid-with-data-

binding-library/en,

lipanj 2019.

[12] Retrofit,

https://square.github.io/retrofit/,

lipanj 2019.

[13] Getting movie details – TMDb,

https://developers.themoviedb.org/3/movies,

lipanj 2019.

[14] Introduction to Firebase,

https://hackernoon.com/introduction-to-firebase-218a23186cd7,

lipanj 2019.

[15] Firebase Authentication,

https://firebase.google.com/docs/auth,

lipanj 2019.

[16] Firebase Realtime Database,

https://firebase.google.com/docs/database,

lipanj 2019.

Page 35: Aplikacija za preporučivanje filmova za · 2019-08-12 · 3.3. Android Android je operacijski sustav namijenjen mobilnim uređajima, te je trenutno najzastupljeniji u mobilnoj industriji

35

7. Sažetak

Naslov : Aplikacija za preporučivanje filmova za operacijski sustav Android

Sažetak:

Završni rad opisuje osnovne komponente, njihovo značenje i korištenje u

svrhu pisanja aplikacije za operacijski sustav Android. Ukratko su objašnjene

tehnologije Butter Knife, Retrofit i Firebase koje su olakšale izradu završnog rada.

Aplikacija MoviePick omogućava korisniku izradu računa, pretraživanje filmova po

nazivu ili popularnosti te ocjenjivanje istih. Na temelju prikupljenih informacija se

korisniku šalje preporuka. Ova aplikacija je pisana u programskom jeziku Java.

Ključne riječi: Android, Korisničko sučelje, Filmovi Sustavi za preporučivanje,

Filtriranje temeljeno na suradnji korisnika, Firebase

Summary:

Title: An Android Application for Recommending Movies

Abstract:

Themes of the paper are technologies such as Butterknife, Retrofit and

Firebase which are used in order to create an Android application with primary

function of grading and recommending movies. Application MoviePick provides

functionality for creating accounts, grading movies and receiving recommendations

based on user information which are stored in Firebase Realtime Database.

Application is written in Java.

Keywords: Android, Movies, User interface, Recommender system, Collaborative

filltering, Firebase