• No results found

Development of an interactive mobile application for mental fitness

N/A
N/A
Protected

Academic year: 2021

Share "Development of an interactive mobile application for mental fitness"

Copied!
84
0
0

Loading.... (view fulltext now)

Full text

(1)UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO. Nik Prodanović. RAZVOJ INTERAKTIVNE MOBILNE APLIKACIJE ZA MENTALNI FITNES Diplomsko delo. Maribor, avgust 2019.

(2) UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO. Nik Prodanović. RAZVOJ INTERAKTIVNE MOBILNE APLIKACIJE ZA MENTALNI FITNES Diplomsko delo. Maribor, avgust 2019.

(3) RAZVOJ INTERAKTIVNE MOBILNE APLIKACIJE ZA MENTALNI FITNES Diplomsko delo. Študent:. Nik Prodanović. Študijski program:. Visokošolski strokovni študijski program Informatika in tehnologije komuniciranja. Smer:. Razvoj informacijskih sistemov. Mentor:. doc. dr. Boštjan Šumak, univ. dipl. inž. rač. in inf.. Lektorica:. Ana Žagar, mag. prof. slov. j. in knj..

(4) Zahvala Zahvaljujem se mentorju doc. dr. Boštjanu Šumaku za pomoč, koristne napotke in vodenje pri izdelavi diplomskega dela. Posebej se zahvaljujem družini za podporo, motivacijo in spodbudo ves čas študija.. I.

(5) Razvoj interaktivne mobilne aplikacije za mentalni fitnes. Ključne besede: mentalni fitnes, Xamarin, razvoj mobilne rešitve, kognitivne sposobnosti. UDK: 004.777(043.2). Povzetek. Mentalni fitnes je skupek vaj za trening kognitivnih sposobnosti, katerih namen je ohraniti ali izboljšati te sposobnosti, saj se s staranjem možganov zmanjšajo. Cilj diplomskega dela je bil izdelati interaktivno mobilno aplikacijo za mentalni fitnes, ki omogoča vaje za treniranje kognitivnih sposobnosti. V diplomskem delu so predstavljena nekatera priljubljena ogrodja za medplatformski razvoj aplikacij, analizirane obstoječe aplikacije za mentalni fitnes in predstavljena uporabljeno ogrodje in uporabljene knjižnice pri razvoju rešitve. Iz analize anketiranja in rezultatov vaj je bilo ugotovljeno, da bi uporabniki aplikacijo priporočili drugim, da je uporabniški vmesnik premalo originalen in da so uporabniki pri večini vaj izboljšali rezultate.. II.

(6) Development of an interactive mobile application for mental fitness. Keywords: mental fitness, Xamarin, development of mobile solution, cognitive abilities. UDK: 004.777(043.2). Abstract. Mental fitness is a set of exercises for training cognitive abilities, designed to preserve or improve these abilities, as they decrease with the ageing of the brain. The objective of the diploma thesis was to create an interactive mobile application for mental fitness, which provides exercises for training cognitive abilities. The diploma thesis presents some popular frameworks for creating cross-platform applications. It also analyses existing applications for mental fitness, presents the Xamarin framework and the libraries used to develop the solution. The analysis of the questionnaire and exercise results has shown that users would recommend the application to others, that the user interface lacks originality and that users have improved their results in most exercises.. III.

(7) KAZALO 1. UVOD ........................................................................................................................ 1 1.1 Opis področja .......................................................................................................... 1 1.2 Cilji in omejitve ........................................................................................................ 3 1.3 Raziskovalna vprašanja, predvidene metode dela .................................................. 3. 2. KOGNITIVNE SPOSOBNOSTI ...................................................................................... 5 2.1 Pozornost ................................................................................................................ 5 2.2 Zaznavanje............................................................................................................... 6 2.3 Spomin..................................................................................................................... 7 2.4 Logika in razum ....................................................................................................... 7 2.5 Procesiranje ............................................................................................................. 8 2.6 Motorika .................................................................................................................. 8. 3. ANALIZA IZBRANIH OBSTOJEČIH MOBILNIH REŠITEV ZA MENTALNI FITNES ........... 9 3.1 Aplikacija Lumosity .................................................................................................. 9 3.2 Aplikacija Peak....................................................................................................... 10 3.3 Aplikacija Train Your Brain .................................................................................... 11 3.4 Analiza in primerjava izbranih mobilnih rešitev .................................................... 12. 4. OGRODJA ZA MEDPLATFORMSKI RAZVOJ APLIKACIJ ............................................. 14 4.1 Prednosti in slabosti .............................................................................................. 14 4.2 Ogrodja na trgu ..................................................................................................... 15 4.2.1 Flutter............................................................................................................. 16 4.2.2 React Native ................................................................................................... 16 4.2.3 Ionic................................................................................................................ 16. IV.

(8) 4.3 Analiza izbranih orodij na trgu .............................................................................. 17 5. PREDSTAVITEV UPORABLJENEGA OGRODJA IN KNJIŽNIC ...................................... 18 5.1 Xamarin ................................................................................................................. 18 5.2 SQLite .................................................................................................................... 19 5.3 Xamarin Essentials................................................................................................. 19 5.4 Google Firebase..................................................................................................... 20 5.5 Microcharts ........................................................................................................... 22. 6. RAZVOJ MOBILNE APLIKACIJE ZA MENTALNI FITNES ............................................. 23 6.1 Opis aplikacije in razvoja ....................................................................................... 23 6.2 Struktura projekta ................................................................................................. 24 6.3 Ikona aplikacije ...................................................................................................... 25 6.4 Registracija in prijava ............................................................................................ 28 6.5 Shranjevanje v podatkovno bazo Firebase ........................................................... 32 6.6 Shranjevanje podatkov v lokalno podatkovno bazo ............................................. 35 6.7 Ustvarjanje časovnika............................................................................................ 38 6.8 Vaje za mentalni fitnes .......................................................................................... 40 6.8.1 Skrivanje elementov ...................................................................................... 41 6.8.2 Pomnjenje števil............................................................................................. 42 6.8.3 Izbira barv ...................................................................................................... 43 6.8.4 Računanje ...................................................................................................... 44 6.8.5 Odzivni čas ..................................................................................................... 45 6.8.6 Odštevanje ..................................................................................................... 45 6.9 Izdelava uporabniškega vmesnika......................................................................... 46 6.10 Pregled rezultatov ............................................................................................... 49. 7. ANALIZA UČINKOVITOSTI APLIKACIJE ..................................................................... 53. V.

(9) 7.1 Vprašalnik .............................................................................................................. 53 7.2 Rezultati vprašalnika ............................................................................................. 56 7.2.1 Uporaba aplikacije ......................................................................................... 58 7.2.2 Zahtevnost vaj ................................................................................................ 60 7.2.3 Uporabniški vmesnik...................................................................................... 61 7.3 Analiza rezultatov vaj ............................................................................................ 63 8. SKLEP ....................................................................................................................... 66. Kazalo slik Slika 3.1: Aplikacija Lumosity (začetni zaslon, meni vaj, primer prikaza rezultata vaje) 10 Slika 3.2: Aplikacija Peak (začetni zaslon, meni vaj, primer prikaza rezultata vaje) ....... 11 Slika 3.3: Aplikacija Train Your Brain (začetni zaslon z vajami, primer vaje) .................. 12 Slika 5.1: Primerjava Xamarin.Native in Xamarin.Forms [28] ......................................... 19 Slika 6.1: Struktura projektov ......................................................................................... 24 Slika 6.2: Konstruktor razreda App ................................................................................. 25 Slika 6.3: Ikona aplikacije Mentalni fitnes ...................................................................... 26 Slika 6.4: Struktura ikon za aplikacijo Android ............................................................... 26 Slika 6.5: Nastavitev lokacije ikone za aplikacijo Android .............................................. 27 Slika 6.6: Generator sredstev za aplikacijo UWP ............................................................ 27 Slika 6.7: Razred uporabnik ............................................................................................ 28 Slika 6.8: Stran za registracijo uporabnika ...................................................................... 29 Slika 6.9: Ponudnik za avtentikacijo in metoda za registracijo ....................................... 30 Slika 6.10: Stran za prijavo v aplikacijo ........................................................................... 30 Slika 6.11: Preverjanje internetne povezave .................................................................. 31 Slika 6.12: Metoda za prijavo uporabnika ...................................................................... 31 Slika 6.13: Razred za rezultat .......................................................................................... 32 Slika 6.14: Nastavitev ponudnika za dostop do podatkovne baze Firebase ................... 33 Slika 6.15: Rezultat vaje v podatkovni bazi Firebase ...................................................... 33. VI.

(10) Slika 6.16: Metoda za dodajanje rezultata v podatkovno bazo Firebase ....................... 34 Slika 6.17: Metoda za pridobitev rezultatov iz podatkovne baze Firebase .................... 35 Slika 6.18: Razred za lokalni rezultat .............................................................................. 36 Slika 6.19: Povezava z lokalno podatkovno bazo in kreiranje tabele ............................. 36 Slika 6.20: Pridobitev uporabnikovih lokalnih rezultatov iz podatkovne baze............... 36 Slika 6.21: Shranjevanje lokalnega rezultata v podatkovno bazo .................................. 37 Slika 6.22: Brisanje lokalnega rezultata iz podatkovne baze .......................................... 37 Slika 6.23: Ponudnik za lokalno podatkovno bazo.......................................................... 38 Slika 6.24: Konstruktor časovnika ................................................................................... 38 Slika 6.25: Metoda za začetek odštevanja ...................................................................... 39 Slika 6.26: Metoda za ustavitev časovnika ..................................................................... 40 Slika 6.27: Metoda za vrnitev na prejšnjo stran aplikacije ............................................. 40 Slika 6.28: Mreža pri vaji »Skrivanje elementov« ........................................................... 42 Slika 6.29: Število pri vaji »Pomnjenje števil« ................................................................ 43 Slika 6.30: Izbor barv pri vaji »Izbira barv« ..................................................................... 44 Slika 6.31: Račun pri vaji »Računanje« ........................................................................... 45 Slika 6.32: Gumb pri vaji »Odzivni čas« .......................................................................... 45 Slika 6.33: Gumb pri vaji »Odštevanje« .......................................................................... 46 Slika 6.34: Začetna stran aplikacije ................................................................................. 47 Slika 6.35: Meni za kognitivno sposobnost spomin ........................................................ 47 Slika 6.36: Dodatni podatki o vaji »Skrivanje elementov« ............................................. 48 Slika 6.37: Prikaz rezultata vaje ...................................................................................... 48 Slika 6.38: Rezultati posameznih kategorij in vaj............................................................ 49 Slika 6.39: Prenos podatkov iz lokalne v podatkovno bazo Firebase ............................. 50 Slika 6.40: Pridobitev rezultatov vaj iz podatkovne baze Firebase................................. 50 Slika 6.41: Prikaz posameznih rezultatov in grafikona ................................................... 51 Slika 6.42: Metoda za ustvarjanje grafa.......................................................................... 52 Slika 7.1: Primer lestvice ocen nasprotujočih si lastnosti ............................................... 54. VII.

(11) Kazalo tabel Tabela 1.1: Raziskovalna vprašanja in metode dela ......................................................... 4 Tabela 3.1: Primerjava obstoječih aplikacij za mentalni fitnes ...................................... 13 Tabela 4.1: Ogrodja za medplatformski razvoj aplikacij ................................................. 17 Tabela 5.1: Cenik za uporabo platforme Firebase [34] .................................................. 21 Tabela 6.1: Pregled implementiranih vaj za mentalni fitnes .......................................... 40 Tabela 7.1: Vprašanja za oceno uporabniškega vmesnika ............................................. 55 Tabela 7.2: Statistika ocen za uporabniški vmesnik ....................................................... 63. Kazalo grafov Graf 7.1: Spol anketirancev ............................................................................................. 57 Graf 7.2: Starostna skupina anketirancev ....................................................................... 57 Graf 7.3: Rezultati vprašanja »Na kateri platformi ste raje uporabljali aplikacijo?« ...... 58 Graf 7.4: Rezultati vprašanja »Boste aplikacijo uporabljali še naprej?« ........................ 59 Graf 7.5: Rezultati vprašanja »Bi uporabo aplikacije priporočali drugim?« ................... 59 Graf 7.6: Rezultati vprašanj o izboljšanju rezultata vaj .................................................. 60 Graf 7.7: Rezultati vprašanja o zahtevnosti posameznih vaj .......................................... 61 Graf 7.8: Rezultati ocen kategorij uporabniškega vmesnika .......................................... 62 Graf 7.9: Delež rezultatov posameznih vaj ..................................................................... 64 Graf 7.10: Izboljšanje rezultatov vaj ............................................................................... 65. VIII.

(12) SEZNAM KRATIC API – Application Programming Interface (aplikacijski programski vmesnik) CSS – Cascading Style Sheets (kaskadne stilske podloge) HTML – Hyper Text Markup Language (hipertekstni označevalni jezik) iOS – iPhone Operating System (operacijski sistem naprav iPhone) JSON – JavaScript Object Notation (JavaScript objektni zapis) LINQ – Language Integrated Query (jezikovno integrirane poizvedbe) SDK – Software development kit (programsko razvojno okolje) SQL – Structured Query Language (strukturiran poizvedovalni jezik) UEQ – User Experience Questionnaire (vprašalnik za uporabniško izkušnjo) UWP – Universal Windows Platform (univerzalna Windows platforma) XAML – Extensible Application Markup Language (razširjeni aplikacijski označevalni jezik). IX.

(13) 1 UVOD 1.1 Opis področja Področje, na katerem temelji diplomsko delo, je mentalni fitnes. Mentalni fitnes je izraz, ki opisuje skupek mentalnih vaj, katerih cilj je izboljšati oziroma okrepiti posameznikov um in kognitivne sposobnosti. Sposobnosti so lahko preproste, kot na primer pomnjenje določenega imena, ali kompleksne, ko se med seboj povezuje več različnih kognitivnih sposobnosti. Mentalni fitnes lahko pomaga osebam premagati nekatere ovire, ki jih ovirajo na mentalni ravni. Izraz je pogosto uporabljen na področju psihologije in mentalnega zdravstva. Prav tako je pogosto uporabljen pri izvajalcih mentalnega fitnesa, kot so šole, organizacije in splošna populacija. Izraz povzroča tudi nekaj zmede, predvsem v krogih znanstvenikov in v njihovi literaturi, saj ne definira natančno, kaj vse spada ali ne spada pod ta izraz. S pomočjo vaj mentalnega fitnesa ne rešimo problema, ampak se naučimo, kako bolje obvladati probleme ali nastali položaj [1]. Mentalne vaje so se pojavile z boljšim razumevanjem človeškega uma. Poskusi razumevanja uma segajo vse do antične Grčije, vendar se je kognitivna znanost, ki proučuje delovanje uma, začela razvijati šele v petdesetih letih 19. stoletja. Šele takrat so bile narejene študije, ki so dokazale, da je človeški um omejen. Ena izmed prvih študij je pokazala, da je kratkoročni spomin omejen. Sledile so ji še druge študije, ki so temeljile na študiji človeškega uma [2]. Kognitivna znanost se osredotoča na študijo uma in njegovih procesov. Združuje več področij, med katere spadajo jezikoslovje, psihologija, umetna inteligenca, filozofija, nevroznanost in družbene vede [3]. Z boljšim razumevanjem uma so se pojavile vaje, ki so namenjene točno določenim kognitivnim sposobnostim. Danes vemo, da na primer branje knjige, reševanje križank, ugank in problemov izboljšajo različne kognitivne sposobnosti. Eden izmed razlogov za začetek uporabe mentalnega fitnesa in treniranje kognitivnih sposobnosti je staranje možganov. Staranje naših možganov postaja vedno bolj opazno, saj se povprečna življenjska doba populacije na Zemlji zvišuje. Leta 2000 je bila. 1.

(14) povprečna življenjska doba 66,5 leta, leta 2016 pa se je povišala za 5,5 leta. To je povprečna življenjska doba 72 let [4]. Ob nadaljevanju tako hitre rasti povprečne življenjske dobe bo vedno več starejšega prebivalstva, ki ima slabše kognitivne sposobnosti. Posledica niso samo slabše kognitivne sposobnosti, ampak se povečajo možnosti za pojav bolezni, kot je na primer demenca. Izvajanje vaj za kognitivne sposobnosti lahko upočasni pojav ali posledice bolezni, ali jo celo prepreči. Učinek je odvisen od začetka izvajanja vaj [5]. Včasih so bile vaje na voljo samo na papirju, z digitalizacijo pa so se vaje pojavile v digitalni obliki. Takšna oblika omogoči, da lahko vaje izvajamo vedno in povsod. Različne vaje so na voljo na spletu, kjer so dostopne vsem, ki imajo internetno povezavo. To je lahko težava, saj nimamo vedno dostopa do internetne povezave. Velike spletne strani, ki ponujajo vaje, niso prilagojene za manjše zaslone mobilnih naprav in so neuporabne. V primeru, da nimamo dostopa, lahko uporabimo vaje v fizični obliki, ki pa jih je težje vzeti s seboj, saj zasedejo več prostora. Zaradi razpršenosti vaj so se za lažje izvajanje vaj pojavile aplikacije, ki združujejo različne vaje, ki so bile včasih na voljo samo posamezno ali samo na papirju. Uporaba aplikacije je boljša, saj ne zasede fizičnega prostora in je lahko, po prenosu, na voljo brez internetne povezave. Obstoječe aplikacije za mentalni fitnes so večinoma na voljo le na računalniku ali mobilnem telefonu. V diplomskem delu smo se osredotočili na izdelavo aplikacije za mentalni fitnes, ki je na voljo za računalnik in mobilni telefon. Za razvoj smo uporabili ogrodje Xamarin, ki omogoča medplatformski razvoj aplikacij. Ker je aplikacija na voljo na več platformah, lahko vaje mentalnega fitnesa izvajamo na računalniku, če se odpravimo na pot, pa so nam iste vaje dostopne na mobilnem telefonu.. 2.

(15) 1.2 Cilji in omejitve Cilji diplomskega dela so: •. spoznanje področja mentalnega fitnesa in kognitivnih sposobnosti,. •. izboljšava oziroma preoblikovanje sedanjih rešitev za mentalni fitnes,. •. razvoj rešitve, ki izboljša mentalne rezultate posameznika,. •. izdelava aplikacije v razvojnem okolju za medplatformski razvoj aplikacij,. •. oblikovanje preglednega uporabniškega vmesnika.. Pri razvoju rešitve smo se osredotočili na razvoj aplikacije Android in UWP (ang. Universal Windows Platform) v razvojnem okolju Xamarin. Omejitev je velikost zaslona na napravi. Ne moremo vnaprej predvideti, kakšne velikosti je zaslon, saj imajo naprave zaslone najrazličnejših velikosti. Zaradi tega smo pri razvoju rešitve elemente uporabili tako, da se dinamično prilagodijo velikosti zaslona.. 1.3 Raziskovalna vprašanja, predvidene metode dela Zastavili smo si raziskovalna vprašanja in metode dela, ki so vidni v tabeli 1.1. Najprej smo se posvetili proučevanju literature o mentalnem fitnesu in kognitivnih sposobnostih. Posamezne kognitivne sposobnosti smo podrobneje proučili. Pri tem smo uporabili raziskovanje po spletu. Nato smo izbrali in analizirali obstoječe aplikacije za mentalni fitnes. Raziskali in proučili smo prednosti in slabosti ogrodji za medplatformski razvoj aplikacij v primerjavi z orodji za izdelavo domorodnih aplikacij. Proučili smo različna ogrodja za medplatformski razvoj aplikacij in jih predstavili. Predstavili smo uporabljeno ogrodje ter uporabljene knjižnice pri razvoju rešitve SQL. V programskem okolju Visual Studiu smo z ogrodjem Xamarin izdelali Android in aplikacijo UWP. Na koncu smo anketirali uporabnike aplikacije in analizirali dobljene rezultate.. 3.

(16) Tabela 1.1: Raziskovalna vprašanja in metode dela. Raziskovalno vprašanje. Metoda dela. Kakšna literatura na temo mentalnega fitnesa že obstaja?. Proučevanje literature in raziskovanje po spletu. Kakšne so obstoječe aplikacije za mentalni fitnes? Metoda proučevanja podobnih rešitev Katera ogrodja za medplatformski razvoj aplikacij so najbolj priljubljena?. Metoda proučevanja ogrodij za medplatformski razvoj aplikacij. Kako se medplatformski razvoj aplikacije razlikuje od razvoja domorodne aplikacije?. Metoda proučevanja razvoja aplikacije in primerov. Ali aplikacija nudi dobro uporabniško izkušnjo in vpliva na kognitivne sposobnosti?. Anketiranje uporabnikov aplikacije. 4.

(17) 2 KOGNITIVNE SPOSOBNOSTI Kognitivne sposobnosti so sposobnosti možganov, ki jih uporabljamo vsakodnevno. Poznamo tako preproste kot bolj kompleksne sposobnosti. Sposobnosti pomagajo pri učenju novih stvari, reševanju problemov, pomagajo se spomniti, zaznavati in procesirati [6]. Za lažjo opredelitev so sposobnosti razdeljene v več vrst. Razdelitev teh ni natančno določena, zato lahko v literaturi in spletnih virih najdemo različne razlage in načine razdelitve. Najpogosteje se pojavi razdelitev na šest kognitivnih sposobnosti. Te so pozornost, zaznavanje, spomin, logika in razum, procesiranje in motorika [7].. 2.1 Pozornost Pozornost je sposobnost, ki omogoča, da se lažje zberemo ali osredotočimo na določen objekt, misel, akcijo in okolje za dlje časa. Poznamo tri vrte pozornosti. To so vzdrževana, deljena in selektivna pozornost [7]. Vzdrževana pozornost je sposobnost koncentracije na eno stvar za dlje časa. Pri tem nič ne zmoti koncentracije. Večina ljudje, ko omeni pozornost, misli ravno na vzdrževano pozornost [8]. Primer je koncentracija pri učenju ali branju knjige. V primeru dobre vzdrževane pozornosti nas pri tem ne zmoti noben šum ali zvok okolice. Deljeno pozornost uporabimo v primeru, ko hkrati izvajamo več dejavnosti. Ravno zaradi večopravilnosti lahko pri tej vrsti pozornosti hitro naredimo napako. Čeprav ta vrsta pozornosti omogoča istočasno izvajanje več dejavnosti, naši možgani tega niso zmožni. V resnici lahko procesiramo samo eno dejavnost naenkrat. Pri izvajanju več dejavnosti se dejavnosti preklapljajo [8]. Primer je sposobnost zapisati številko med tem, ko jo narekuje sogovorec. Selektivna pozornost je sposobnost osredotočenosti na eno stvar, medtem ko druge dejavnosti motijo pozornost. Pri tem je mogoče preklopiti osredotočenost med več dejavnostmi [8]. Primer je sposobnost osredotočiti se na sogovornika med tem, ko smo v zelo glasnem okolju.. 5.

(18) 2.2 Zaznavanje Zaznavanje je sposobnost prepoznave naše okolice, misli ali interpretacija skozi naša čutila in možgane [7]. V osnovi je zaznavanje razdeljeno glede na naša čutila. To so vid, sluh, dotik, vonj in okus, po katerih so poimenovane tudi različne vrste zaznavanj. Vizualno zaznavanje omogoča interpretacijo videne okolice. Zvočno zaznavanje omogoča obdelavo slišanega. Zaznavanje z dotikom omogoča interpretacijo informacij z dotikom. Zaznavanje vonjav omogoča interpretacijo vonjav. Okus omogoča interpretacijo okusov. Vsa interpretacija se dogaja v možganih. Poznamo tudi druge vrste zaznavanja. Nekatere izmed njih so [9]: •. Prostorsko zaznavanje, ki omogoča zavedanje okolice in tega, kje v okolici se nahajamo. Povezano je s čutnim zaznavanjem in zaznavanjem premikanja. Uporabljeno je na primer pri hoji, risanju ali vožnji;. •. Vestibularno zaznavanje skrbi za interpretacijo sile okoli nas, glede na položaj. Povezano je z zaznavanjem zvoka. Pomaga pri ravnotežju, da ne pademo in pomaga pri naši pokončni drži;. •. Zaznavanje premikanja je sposobnost interpretacije premikanja in hitrosti nas in okolice. Povezano je z vizualno zaznavo, prostorskim zaznavanjem, zaznavanjem dotika, percepcijo in vestibularnim zaznavanjem.. •. Zaznavanje srbenja, ki je povezano z zaznavanjem dotika.. •. Toplotno zaznavanje je zaznavanje toplote na koži. Povezano je s čutilom dotika.. •. Zaznavanje časa omogoča interpretacije sprememb in njihovo časovno razporeditev. Uporabljeno je na primer pri zaznavanju tiktakanja ure. Nekomu se zdi tiktakanje ure hitro, drugemu počasno.. Zaznavanje se ne zgodi takoj, ampak ima več faz. To so izbor, organizacija in interpretacija. V fazi izbora se pridobijo informacije, ki smo jih zaznali. Nato se v fazi organizacije te informacije združijo. Na koncu v fazi interpretacije se organizirane informacije interpretirajo in rezultat je končna informacija [9].. 6.

(19) 2.3 Spomin Spomin je sposobnost, ki je razdeljena na dva dela. To sta kratkoročni in dolgoročni spomin [7]. Mentalni fitnes vsebuje vaje za izboljšavo kratkoročnega spomina. S ponavljanjem teh vaj lahko izboljšamo dolgoročni spomin. Kratkoročni spomin, kot pove že ime, hrani informacije za kratek čas. V tem delu spomina se informacije samo procesirajo. Z večkratnim ponavljanjem akcij se lahko izboljša dolgoročni spomin. Tako neka akcija pride v navado in postane del dolgoročnega spomina [7]. Dolgoročni spomin omogoča hranjenje informacij za dlje časa, ne bi jih pozabili. Bolj kot je ta del spomina razvit, dlje časa se ohranijo informacije za kasnejšo uporabo [7]. Razlika med vrstama spomina je velika. Kratkoročni spomin hrani informacije, ki so hitro pozabljive. Pozabimo jih dokaj hitro in jih lahko v celoti izgubimo, če jih ne ponavljamo. Dolgoročni spomin pa deluje na bolj pasiven način. Vsebuje na primer naše navade ali informacije o pomembnem dogodku. Te je dosti težje pozabiti. Če v dolgoročnem spominu izgubimo informacijo, še ne pomeni, da je v celoti izgubljena. Še vedno je hranjena v spominu. Nazaj se lahko pridobi z namigi ali z dodatnimi informacijami, ki vsebujejo spomin na prvotno informacijo [10]. Primer je, ko se začnemo učiti voziti kolo. Skozi vaje se naučimo voziti kolo. Posamezne vaje so za kratek čas shranjene v kratkoročnem spominu. S ponavljanjem vaj se spomin vožnje kolesa prenese v dolgoročni spomin. Tudi če dlje časa ne vozimo kolesa, se bomo naslednjič hitro spomnili, saj je informacije, shranjene v dolgoročnem spominu, težje pozabiti.. 2.4 Logika in razum Logika in razum sta sposobnosti, ki omogočata interpretacijo stavkov in situacije. Ti dve sposobnosti omogočata inovativnost, racionalno razmišljanje, reševanje problemov in sprejemanje odločitev. Potrebni sta tudi pri obvladanju vsakodnevnih situacij [7]. Eden izmed načinov izboljšanja sposobnosti logike in razuma je učenje matematičnega računa. Na začetku je postopek izračuna videti zahteven. Skozi ponavljanje vaj in ustreznih tehnik računanja se izboljša sposobnost logike in razuma. Ob naslednji. 7.

(20) pojavitvi podobnega računa tega lahko izračunamo brez potrebe ponovnega učenja tehnik in reševanja vaj.. 2.5 Procesiranje Procesiranje je sposobnost, ki se nanaša na hitrost procesiranja in procesiranje vizualnih (slik, besedila) in zvočnih informacij (govora, zvoka). Hitrost procesiranja vključuje tako hitrost našega razmišljanja kot hitrost našega odziva. Procesiranje vizualnih in zvočnih informacij je prejemanje informacij s pomočjo naših čutil. S pomočjo vida so prejete vizualne informacije, kot so slike, napisane besede in druge informacije, ki so vidne. S sluhom so prejete zvočne informacije, kot so glasba, govor in druge slišne informacije. Pri prepoznavi vizualnih in zvočnih informacij se uporabijo informacije, ki so shranjene v našem dolgoročnem spominu [7]. Tako se bo na primer, če imamo radi neko pesem in jo velikokrat poslušamo, ta shranila v dolgoročni spomin. Naslednjič, ko bomo slišali samo del melodije te glasbe, se bomo spomnili, katera pesem je to. Vsakič, ko se spomnimo, katera pesem je to, se izboljša hitrost procesiranja.. 2.6 Motorika Motorika je sposobnost, ki omogoča natančno in usklajeno gibanje mišic v določeni situaciji. Sposobnost se deli na dve kategoriji, fino in grobo motoriko. Fina motorika je uporabljena v primeru majhnih in natančnih gibov, kot je na primer držanje pisala. Groba motorika pa je nasprotje fine motorike in je uporabljena v primeru večjih gibov, kot je na primer hoja [11]. Z izboljšavo sposobnosti se izboljšajo koordinacija, odzivni čas, natančnost premikanja in občutek. Primer uporabe te sposobnosti je vožnja z avtomobilom v situaciji, ko se na semaforju prižge rdeča luč. Avtomobil je treba zaustaviti. Potreben čas med zaznavo rdeče luči in pritiskom zavore je odzivni čas. Z vsako ponovitvijo situacije se sposobnost izboljša in odzivni čas se zmanjša.. 8.

(21) 3 ANALIZA IZBRANIH OBSTOJEČIH MOBILNIH REŠITEV ZA MENTALNI FITNES Preden smo začeli z razvojem aplikacije, smo raziskali obstoječe rešitve. Za iskanje rešitev smo uporabili trgovino Play Store na pametnem telefonu z operacijskim sistemom Android. V trgovini je na voljo več kot 100 različnih aplikacij za mentalni fitnes. Za primerjavo smo izbrali tri priljubljene aplikacije glede na število prenosov in oceno aplikacije. Upoštevali smo tudi, da se aplikacije med seboj dovolj razlikujejo. Izbrali smo dve aplikaciji, ki imata največje število prenosov (Peak in Lumosity) in eno aplikacijo (Train Your Brain), ki ima eno izmed najboljših ocen.. 3.1 Aplikacija Lumosity Aplikacija Lumosity ima najslabšo oceno izmed primerjanih aplikacij. Na voljo je samo na mobilnih napravah s sistemom iOS (ang. iPhone Operating System) in Android. Za primerjavo smo uporabili različico aplikacije 2019.05.15.1910288 na sistemu Android, ki zasede 150 MB prostora. V aplikacijo smo se morali obvezno prijaviti. Brez prijave v aplikacijo te ne moremo uporabljati. Na voljo imamo tudi naročnino, s katero dobimo dodatne funkcionalnosti v aplikaciji. Cena naročnine je 11,95 € mesečno ali 59,95 € letno. Aplikacija ima na voljo 54 vaj za treniranje različnih kognitivnih sposobnosti. Čeprav je iger veliko, so brezplačno na voljo samo tri igre na dan. Te igre so ponujene takoj ob zagonu aplikacije, kot je razvidno iz slike 3.1. Za dostop do ostalih iger je treba plačati mesečno ali letno naročnino. Aplikacija ima pregled trenutnih rezultatov iger, ki so izračunani iz rezultatov posameznih odigranih iger. Napredek in zgodovina odigranih iger nista na voljo brezplačno. Za vpogled potrebujemo naročnino. Aplikacija ima možnost izbire jezika, in sicer je mogoče izbirati med sedmimi jeziki. To so angleščina, nemščina, španščina, francoščina, japonščina, korejščina in portugalščina.. 9.

(22) Slika 3.1: Aplikacija Lumosity (začetni zaslon, meni vaj, primer prikaza rezultata vaje). 3.2 Aplikacija Peak Aplikacija Peak je na voljo na mobilnih napravah s sistemom iOS in Android. Za primerjavo smo uporabili različico aplikacije 3.27.3 na sistemu Android, ki zasede 147 MB prostora. Tudi ta aplikacija za uporabo nujno potrebuje prijavo uporabnika. Uporabniški vmesnik aplikacije je preprost in barvit, kot je razvidno iz slike 3.2. Aplikacija vsebuje 42 različnih vaj. Vsak dan imamo na voljo nekaj različnih iger. Nekatere od teh lahko igramo samo, če si ogledamo oglas. Za igranje nekaterih moramo plačati. Cena naročnine je 3,99 € za en mesec ali 24,96 € za eno leto. Na voljo imamo tudi možnost enkratnega nakupa v višini 49,99 €. Aplikacija vsebuje pregled rezultatov, ki so razdeljeni po kategorijah iger in ne po posameznih igrah. Vsebuje tudi pregled spreminjanja rezultatov čez čas, iz katerega lahko razberemo napredek. Aplikacija podpira 13 jezikov. Če želimo spremeniti jezik aplikacije, moramo dodatno prenesti podatke o prevodu, kar še dodatno zviša prostor, ki ga zaseda aplikacija.. 10.

(23) Slika 3.2: Aplikacija Peak (začetni zaslon, meni vaj, primer prikaza rezultata vaje). 3.3 Aplikacija Train Your Brain Aplikacija Train Your Brain ima najmanj prenosov, vendar pa ima najboljšo oceno izmed primerjanih aplikacij. Na število prenosov verjetno vpliva tudi videz aplikacije. Ta ni ravno najbolj privlačen, kot je razvidno iz slike 3.3. Na voljo je samo na mobilnih napravah s sistemom Android. Za primerjavo bomo uporabili različico aplikacije 1.21.5 na sistemu Android. Ta zasede najmanj izmed primerjanih aplikacij, in sicer 11,48 MB. Aplikacija za igranje nudi sedem iger, razdeljenih v dve kategoriji. Ob končani igri si je treba ogledati oglas. Rezultati iger se shranjujejo samo lokalno na napravi. Razdeljeni so glede na posamezno igro. Pregleda spreminjanja rezultatov čez čas aplikacija ne omogoča. Aplikacija je na voljo v dveh jezikih (v angleščini in ruščini).. 11.

(24) Slika 3.3: Aplikacija Train Your Brain (začetni zaslon z vajami, primer vaje). 3.4 Analiza in primerjava izbranih mobilnih rešitev Čeprav so vse aplikacije namenjene izboljšanju kognitivnih sposobnosti, se med seboj razlikujejo po številu funkcionalnosti, ki jih nudijo ali imajo na voljo, kot je razvidno iz tabele 3.1. Vse primerjane aplikacije so na voljo za platformo Android, dve pa sta na voljo tudi za platformo iOS. Nobena ni na voljo za platformo Windows. Najvišjo povprečno oceno uporabnikov ima aplikacija Train Your Brain, kar 4,8 od 5. Najnižjo oceno pa ima aplikacija »Lumosity« (4,2 od 5). Za uporabo samo aplikacija Train Your Brain ne zahteva prijave. Shranjevanje rezultatov vaj omogočajo vse aplikacije, vendar aplikacija Train Your Brain omogoča le shranjevanje na mobilnem telefonu. Prav tako ne omogoča pregleda trenutnih rezultatov in pregleda zgodovine rezultatov, medtem ko ostali dve omogočata oboje. Plačljive igre vsebujeta samo aplikaciji Peak in Lumosity. Čeprav vse aplikacije podpirajo več jezikov, nobena izmed njih ne podpira slovenskega jezika. Največ jezikov podpira aplikacija Peak, najmanj pa aplikacija Train Your Brain.. 12.

(25) Aplikacija Peak nudi 42 vaj, ki so razdeljene na sedem kategorij. Te vsebujejo različne vaje za trening vseh kognitivnih sposobnosti. Aplikacija Lumosity ima največ vaj (54 vaj). Razdeljene so v osem kategorij. Za motoriko ne vsebuje posebne kategorije za to kognitivno sposobnost, vendar vsebuje eno ali dve vaji v sklopu drugih kategorij. Aplikacija Train Your Brain vsebuje najmanj vaj za najmanj kognitivnih sposobnosti. Za dve kognitivni sposobnosti (pozornost in logika in razum) ima sedem vaj. Tabela 3.1: Primerjava obstoječih aplikacij za mentalni fitnes. Peak. Lumosity. Train Your Brain. 10.000.000+. 10.000.00+. 1.000.000+. 4,4. 4,2. 4,8. iOS in Android. iOS in Android. Android. Da. Da. Ne. Da (prijava). Da (prijava). Da (lokalno). Da (prijava). Da (prijava). Ne. Da (prijava). Da (naročnina). Ne. Plačljive igre. Da. Da. Ne. Število jezikov. 13. 7. 2. Število vseh vaj. 42. 54. 7. Pozornost,. Pozornost,. Pozornost,. zaznavanje, spomin,. zaznavanje, spomin,. logika in razum. logika in razum,. logika in razum,. procesiranje,. procesiranje,. motorika. motorika. Število prenosov Ocena Platforme Obvezna prijava Shranjevanje rezultatov Pregled trenutnih rezultatov Pregled zgodovine rezultatov. Kognitivne sposobnosti. 13.

(26) 4 OGRODJA ZA MEDPLATFORMSKI RAZVOJ APLIKACIJ Ogrodja za medplatformski razvoj aplikacij omogočajo pisanje ene izvorne kode, nato pa ogrodje poskrbi, da se izvorna koda prevede v kodo, ki se lahko izvaja na različnih platformah. Ogrodja se razlikujejo glede na to, koliko skupne kode omogočajo. Nekatera ogrodja omogočajo skupno kodo za celotno aplikacijo, medtem ko druga omogočajo samo skupno logiko aplikacije. V tem primeru je treba uporabniški vmesnik napisati posebej za vsako platformo. Ogrodja za medplatformski razvoj aplikacij imajo tudi svoje prednosti in slabosti. Te vplivajo na našo odločitev pri izbiri ogrodja in uporabniško izkušnjo, ki jo želimo ponuditi končnim uporabnikom.. 4.1 Prednosti in slabosti Prednosti so [12] [13]: •. Krajši čas razvoja. Bistvena prednost takšnih ogrodij je, da zelo skrajšajo čas, ki je potreben za razvoj aplikacije. Napisati je treba samo eno izvorno kodo, kar zelo skrajša čas razvoja aplikacije;. •. Več uporabnikov aplikacije. Zaradi aplikacije, ki deluje na več platformah, je mogoče pridobiti več uporabnikov, ki bodo uporabljali aplikacijo. Za več platform, kot je razvita aplikacija, več potencialnih uporabnikov je mogoče pridobiti;. •. Nižji stroški in krajši čas posodobitve. Zaradi pisanja ene izvorne kode se znižajo stroški vzdrževanja in skrajša čas, ki je potreben za posodobitev aplikacije. Takoj, ko dodamo nove funkcionalnosti v programsko kodo, lahko aplikacijo ponudimo na več platformah. Stroški so nižji predvsem zaradi manjšega števila potrebnih razvijalcev, saj razvoj poteka na enem projektu in ni več projektov za vsako aplikacijo posebej.. 14.

(27) Slabosti so [12] [13]: •. Skupna koda. Slabosti ogrodij za medplatformski razvoj aplikacij se pojavijo zaradi ene izvorne kode. To kodo ogrodje uporabi za izgradnjo aplikacij za različne platforme. Bolje kot ogrodje pretvori kodo, manj so očitne slabosti aplikacije v primerjavi z domorodnimi aplikacijami;. •. Omejitve pri uporabi elementov. Pri izdelavi aplikacije so na voljo elementi, ki so podprti na vseh ciljnih platformah. Zaradi tega nekaterih elementov, ki so na voljo samo za določene domorodne aplikacije, ne moremo uporabiti, ker jih ogrodje ne omogoča. V primeru, da želimo te uporabiti na vseh ciljnih platformah, preverimo, ali ogrodje omogoča namestitev razširitev. Razširitve vsebujejo dodatno kodo, ki je potrebna za uporabo elementa na več platformah;. •. Omejitve pri uporabi tehnologij. Paziti je treba, katere tehnologije uporabljamo. Če želimo uporabiti tehnologijo (na primer senzor prstnega odtisa) na vseh ciljnih platformah, se moramo prepričati, ali ogrodje podpira API (ang. Application Programming Interface) za dostop do tehnologije na vseh platformah;. •. Počasnost in velikost aplikacije. Zaradi skupne kode se lahko zgodi, da aplikacije niso najboljše optimizirane, kar lahko povzroči, da aplikacija deluje počasneje in porabi več sistemskih virov. Posledica slabe optimizacije je tudi večja velikost aplikacije.. 4.2 Ogrodja na trgu Na trgu je na voljo več različnih ogrodij za medplatformski razvoj aplikacij. Najbolj priljubljena izmed teh so ogrodja Xamarin, React Native, Flutter, Adobe PhoneGap/Apache Cordova in Ionic. Ogrodje Xamarin je imelo v ZDA 31 % delež med ogrodij za razvoj mobilnih aplikacij v letu 2019 [14]. To ogrodje smo uporabili za razvoj rešitve, zato smo za predstavitev konkurenčnih orodij izbrali orodja Flutter, React Native in Ionic.. 15.

(28) 4.2.1 Flutter Flutter je ogrodje, ki ga je razvilo podjetje Google. Prva stabilna različica ogrodja je izšla leta 2018. Omogoča izdelavo aplikacij Android in iOS. Za razvoj aplikacij se uporablja programski jezik Dart, ki je bil razvit pod okriljem podjetja Google z namenom izdelati optimiziran programski jezik, ki bo omogočal razvoj aplikacij na različnih platformah. Jezik je oblikovan z namenom optimizacije uporabniškega vmesnika in hitrega delovanja na vseh podprtih platformah [15]. Dart ni zelo razširjen. Uporablja ga samo 1,9 % programerjev [16]. Razlog manjše uporabe je, da se trenutno uporablja samo v ogrodju Flutter, kjer se uporablja za pisanje programske logike in za izdelavo uporabniškega vmesnika. Med aplikacije, ki so bile razvite z ogrodjem Flutter, spadajo aplikacije Alibaba, Google Ads, AppTree in Hamilton Musical [17].. 4.2.2 React Native Odprtokodno ogrodje React Native je razvilo podjetje Facebook. Leta 2015 so predstavili prvo različico. Ogrodje omogoča razvoj aplikacij Android in iOS [18]. Razvoj aplikacij poteka v programskem JavaScript, ki je najbolj priljubljen programski jezik. Uporablja ga kar 67,8 % programerjev [16]. Zaradi tega programskega jezika je ogrodje na voljo velikemu številu programerjev, ki želijo medplatformski razvoj aplikacij. Med aplikacije, ki so bile razvite z ogrodjem React Native, spadajo aplikacije Facebook, Instagram, Skype, Discord in Uber [19].. 4.2.3 Ionic Ionic je odprtokodno ogrodje, ki ga je razvilo podjetje Drifty. Ogrodje je nastalo leta 2013. Omogoča razvoj za platforme Android, iOS in Windows. Za razliko od razvoja drugih primerjanih ogrodij, je to ogrodje namenjeno za razvoj hibridnih aplikacij [20]. Za razvoj aplikacije je potrebno znanje jezikov HTML (ang. Hyper Text Markup Language), CSS (ang. Cascading Style Sheets) in JavaScript. Izdelana aplikacija je podobna spletni strani in se izvaja v WebView, ki deluje kot brskalnik znotraj aplikacije [21]. Od različice. 16.

(29) Ionic 4 naprej lahko za izdelavo uporabniškega vmesnika izbiramo med knjižnicami, ki jih bomo uporabljali. Izbiramo lahko med ogrodji Angular, React in Vue.js. Pred različico Ionic 4 smo lahko uporabili samo ogrodje Angular [22]. Izvajanje aplikacije poteka v WebView, kar lahko povzroči počasnejše delovanje naše aplikacije. Posledica je tudi omejen dostop do virov mobilnega telefona, kot sta na primer kamera in pomnilnik. Med aplikacije, ki so bile razvite z ogrodjem Ionic, spadajo aplikacije Untappd, McDonalds Turčija, Vertfolio in McLaren Automotive [23].. 4.3 Analiza izbranih orodij na trgu Ogrodja so v osnovi med seboj zelo podobna. Največja razlika je glede podprtih programskih jezikov, kot je razvidno iz tabele 4.1. Flutter in React native za razvoj rešitve potrebujeta znanje enega programskega jezika, medtem ko Xamarin in Ionic potrebujeta znanje več programskih jezikov. Xamarin podpira C# in XAML (ang. Extensible Application Markup Language), Ionic pa HTML, CSS, JavaScript in TypeScript. Najstarejše ogrodje je Xamarin, najnovejše orodje pa Flutter. Vsa ogrodja so v lasti različnih lastnikov. Ogrodja Xamarin, Flutter in React Native so v lasti podjetij, ki spadajo med 10 največjih tehnoloških podjetij na svetu (Microsoft, Google, Facebook). [24]. Vsa ogrodja podbirajo platformi Android in iOS. Xamarin in Ionic dodatno podpira še platformo Windows. Tabela 4.1: Ogrodja za medplatformski razvoj aplikacij. Podprti. Xamarin. Flutter. React Native. Ionic. C#, XAML. DART. JavaScript. HTML, CSS,. programski jeziki. JavaScript, TypeScript. Leto izida. 2011. 2018. 2015. 2013. Trenutni lastnik. Microsoft. Google. Facebook. Drifty. Podprte. Windows,. iOS,. iOS, Android. iOS, Android,. platforme. Android, iOS. Android. Windows. 17.

(30) 5 PREDSTAVITEV UPORABLJENEGA OGRODJA IN KNJIŽNIC 5.1 Xamarin Xamarin je ogrodje, ki ga je leta 2011 naredilo podjetje Xamarin. Ogrodje je namenjeno medplatformskemu razvoju aplikacij Android, iOS in Windows. Razvoj aplikacij poteka večinoma v programskem jeziku C#. Podjetje je leta 2016 kupilo podjetje Microsoft. Sledila je vgradnja obstoječega ogrodja v obstoječe razvojno okolje Visual Studio. Ogrodje je postalo veliko bolj prepoznavno in dostopno. Ogrodje Xamarin pri razvoju uporablja več kot 15.000 podjetij [25]. Razvijalci ogrodja želijo omogočiti razvoj aplikacij za še več platform. Dodatne platforme, ki so še v fazi razvoja, so Samsung Tizen, macOS, GTK# in WPF. Preden izberemo ciljne platforme, moramo upoštevati minimalne zahteve posameznih platform. Za razvoj aplikacij iOS je potreben iOS 8 ali novejši, za razvoj aplikacij Android je potreben operacijski sistem Android 5.0 (API 21), za razvoj aplikacij UWP pa je potreben operacijski sistem Windows 10 [26]. Xamarin omogoča razvoj tako imenovanih Xamarin.Forms ali Xamarin.Native. Razlikujeta se po načinu razvoja in razdelitvi kode, kot je vidno na sliki 5.1. Prvi način omogoča pisanje skupne kode za logiko v programskem jeziku C# in uporabniški vmesnik aplikacije v jeziku XAML. Drugi omogoča pisanje skupne kode samo za logiko. Za vsako platformo je treba napisati svoj uporabniški vmesnik. Oba načina omogočata medplatformski razvoj aplikacij, vendar ima Xamarin.Native, zaradi skupne logike, manj omejitev. Med aplikacije, ki so bile razvite s pomočjo ogrodja Xamarin, spadajo aplikacije Microsoft Azure, Taxfyle, Microsoft News in BBC Good Food [27].. 18.

(31) Slika 5.1: Primerjava Xamarin.Native in Xamarin.Forms [28]. 5.2 SQLite SQLite-net-pcl je odprtokodna knjižnica, ki nudi hranjenje podatkov za aplikacije.NET, Mono in Xamarin v podatkovni bazi SQLite. Ta baza je ena izmed priljubljenejših izbir za shranjevanje podatkov. Samo preko paketa NuGet ima knjižnica približno 1.780.000 prenosov [29]. Knjižnica uporablja SQLitePCLRaw, ki deluje kot ovoj preko SQLite in tako omogoča uporabo podatkovne baze SQLite na različnih platformah. Knjižnica je narejena tako, da se lahko preprosto integrira v obstoječe projekte, ki temeljijo na platformi.NET. Omogoča vse operacije CRUD. To je kratica za operacije ustvarjanja (Create), branja (Read), posodobitve (Update) in brisanja (Delete). Vse operacije podpirajo sinhron in asinhron način izvajanja. Izvajanje operacij lahko sprožimo s klicanjem ustreznih metod, ki so vgrajene v knjižnico ali pa jih zapišemo kot stavek SQL (ang. Structured Query Language). [30]. Pri razvoju smo knjižnico dodali v projekt, kot paket NuGet.. 5.3 Xamarin Essentials Zaradi razvoja aplikacije za več platform je potrebna podpora za več operacijskih sistemov. Različni sistemi nudijo različne načine za dostop do na primer kamere, kompasa in informacije o preostanku baterije. Dostop do teh mogoča API. Xamarin Essentials je knjižnica, ki jo je razvilo podjetje Microsoft. Prva stabilna različica je bila na. 19.

(32) voljo 1. 12. 2018 [31]. Knjižnica poskrbi, da se za različne platforme kliče ustrezen API, zato ni potrebno poznavanje klicev za vsak operacijski sistem. Potrebno je samo znanje programskega jezika C# in uporabe knjižnice Xamarin Essentials. Za delovanje knjižnice moramo upoštevati minimalno podporo. Minimalne različice aplikacij, ki so v celoti podprte, so aplikacije iOS (različica 10.0 ali novejša), Android (API 19 ali novejši) in UWP (različica 10.0.16299.0 ali novejša) [32]. Pri razvoju rešitve smo knjižnico vključili v projekt kot paket NuGet. API smo uporabili za preverjanje internetne povezave in shranjevanje skupnih nastavitev aplikacije.. 5.4 Google Firebase Firebase je platforma, ki omogoča uporabo oblačnih storitev in zalednega sistema. Storitev lahko uporabimo z nekaj kliki in z nekaj nastavljanja nastavitev. Platforma ponuja različne storitve, ki pomagajo pri izdelavi aplikacije. Te so podatkovna baza, avtentikacija, orodje za strojno učenje, oblačne funkcije, gostovanje in oblačna shramba. Na voljo so tudi storitve za izboljšavo kakovosti aplikacije. Te so sporočanje napak, spremljanje delovanja aplikacije in testiranje aplikacije na različnih napravah. Platforma ponuja tudi storitve, ki pomagajo s stališča podjetništva. Omogoča pošiljanje in prejemanje sporočil v aplikaciji, analizo aplikacije, napovedi, testiranje aplikacije, oblačno sporočanje, oddaljeno konfiguracijo in dinamične povezave. Firebase privzeto podpira iOS, Android, Splet, Unity in C++ [33]. Na voljo je brezplačno, vendar z omejitvami. Omejeno je število storitev, ki jih lahko uporabljamo. Nekatere so na voljo brezplačno, druge pa so plačljive glede na njihovo uporabo. Večinoma je omejitev nastavljena na število dostopov ali na količino podatkov v določenem časovnem obdobju. Z izbiro plačljivih paketov se zvišajo omejitve uporabe storitev, kot je razvidno iz tabele 5.1.. 20.

(33) Tabela 5.1: Cenik za uporabo platforme Firebase [34]. Spark Plan. Flame Plan. Blaze Plan. Cena na mesec. Brezplačno. 25 $. Glede na porabo. Avtentikacija. 10.000 uspešnih 10.000. uspešnih 0,06 $ na uspešno. klicev na mesec. klicev na mesec. avtorizacijo. Shramba (prostor). 1GiB. 2,5GiB. 0,18 $ na GB. Gostovanje (prostor). 1GB. 10GB. 0,026 $ na GB. baza 1GB. 2,5GB. 5 $ na GB. baza 100. 100.000. 100.000. Podatkovna (prostor) Podatkovna (število povezav). na. podatkovno bazo. Za potrebe izdelave rešitve smo uporabili podatkovno bazo Firebase in avtentikacijo Firebase. Podatkovna baza je ena izmed osrednjih storitev platforme. Deluje v oblaku in temelji na podatkovnih bazah NoSQL. Podatki v tej bazi so shranjeni v zapisu JSON (ang. JavaScript Object Notation). Omogoča sinhronizacijo podatkov JSON v realnem času in dostop do podatkov iz različnih platform. Zaradi gostovanja v oblaku lahko izdelamo aplikacije brez potrebe po vzpostavitvi lastnega strežnika. Za dostop do podatkovne baze uporabimo SDK (ang. Software development kit). Ta je na voljo tako za mobilne naprave kot za splet. Poskrbljeno je tudi za varnost. Privzeto lahko izberemo, kakšen bo dostop do podatkovne baze. Izbiramo lahko med načinom testiranja in načinom, ki onemogoči dostop za vse. Prvi način omogoči dostop do podatkovne baze vsem, ki imajo povezavo do podatkovne baze. Ta način je najprimernejši v času razvoja aplikacije. Kasneje je priporočljivo omejiti dostop. Drugi način dostop do baze omogoča samo razvijalcem. Ti dve izbiri sta ponujeni na začetku ob vzpostavitvi podatkovne baze. Kasneje lahko oziroma je priporočljivo, da sami napišemo, na kakšen način omejimo dostop do podatkovne baze. Nastavimo lahko na primer, da imajo dostop do podatkovne baze samo registrirani uporabniki [35]. Pri razvoju rešitve smo za dostop do podatkovne baze. 21.

(34) Firebase uporabili knjižnico FirebaseDatabase.net (različica 4.0.1), ki smo jo v projekt dodali kot paket NuGet. Avtentikacija Firebase omogoča registracijo, prijavo in ponastavitev gesla uporabnika. Vsi podatki o uporabniških računih so shranjeni na platformi Firebase. Podprtih je več načinov prijave, kot so prijava z elektronskim naslovom in geslom, računom Google, Twitter in Facebook. Podpira tudi več različnih računov, ki imajo isti elektronski naslov. Nastavimo lahko tudi vsebino elektronskega sporočila v primeru prejetja ob registraciji, spremembi gesla in spremembi elektronskega naslova [36]. Pri razvoju rešitve smo za povezavo uporabili knjižnico FirebaseAuthentication.net (različica 3.2.0), ki smo jo v projekt dodali kot paket NuGet.. 5.5 Microcharts Knjižnica Michrochats ponuja kreiranje različnih grafikonov, kot so stolpčni, raztreseni, črtni, tortni in kolobarni grafikon. Izris grafikonov je podprt za aplikacije UWP, iOS, Android in macOS [37]. Za uporabo v Xamarin.Forms morata biti v projekt dodana paketa NuGet Mirocharts (različica 0.7.1) in Microcharts.Forms (različica 0.7.1). Prvi vsebuje razrede in metode za kreiranje grafikona in nastavitev podatkov, drugi pa omogoča uporabo v Xamarin.Forms in skrbi za prikaz grafikona na več platformah.. 22.

(35) 6 RAZVOJ MOBILNE APLIKACIJE ZA MENTALNI FITNES 6.1 Opis aplikacije in razvoja Aplikacija za mentalni fitnes je namenjena izvajanju vaj z namenom vzdrževanja ali izboljšanja kognitivnih sposobnosti. Aplikacija je bila razvita z ogrodjem Xamarin, ki omogoča medplatformski razvoj aplikacij. Za razvoj rešitve je bil uporabljen projekt Xamarin.Forms. Pri ustvarjanju projekta smo projektu dodali še projekte za aplikacije Android, iOS in UWP. Kodo za delovanje aplikacije smo pisali v programskem jeziku C#, za prikaz strani in elementov na strani pa smo uporabili jezik XAML. Pred razvojem projekta smo si zastavili osnovne funkcionalnosti, ki jih bo aplikacija omogočala: •. registracija in prijava uporabnika,. •. izbira vaj za različne kognitivne sposobnosti,. •. shranjevanje rezultatov vaj v podatkovno bazo,. •. shranjevanje rezultatov vaj v primeru izpada internetne povezave,. •. pregled najboljših rezultatov posamezne igre,. •. pregled zgodovine rezultatov vaj,. •. dostop do podatkov na vseh podprtih platformah.. Najprej smo proučili strukturo projektov, nato pa smo nastavili ikono aplikacije. Sledila je implementacija registracije in prijave z uporabo avtentikacije Firebase. Uporaba aplikacije je na voljo brez povezave, vendar s prijavo dobimo dodatne možnosti, kot sta shranjevanje in pregled rezultatov. V naslednjem koraku smo pripravili metode za shranjevanje rezultatov vaj. Za shranjevanje rezultatov je bila uporabljena podatkovna baza Firebase, ki za dostop potrebuje internetno povezavo. Zaradi možnosti izgube internetne povezave smo omogočili tudi shranjevanje rezultatov v lokalno podatkovno bazo SQLite. Sledila je izdelava časovnika, ki je uporabljen za odštevanje igralnega časa. Za mentalni fitnes smo nato izdelali različne vaje, ki omogočajo treniranje različnih. 23.

(36) kognitivnih sposobnosti. Vaje smo nato dodali v pregleden meni, ki je razdeljen po vrstah kognitivnih sposobnosti. Meniju je bil dodan še podmeni, ki se odpre ob izbiri elementa menija. Podmeni vsebuje vse vaje, ki so na voljo za trening izbrane kognitivne sposobnosti. V primeru izbire vaje je dobro, da se uporabniku prej prikažejo informacije o vaji, zato je bila ustvarjena stran, ki uporabniku predstavi potrebne informacije za vajo. Za hiter pregled doseženega rezultata vaje smo izdelali stran, ki vsebuje dosežen rezultat. Sledila je izdelava strani za pregled vseh doseženih rezultatov, ki je na voljo samo prijavljenim uporabnikom. Za lažjo predstavo napredka smo izdelali graf, ki omogoča hitrejši pregled rezultatov.. 6.2 Struktura projekta Ustvarjen projekt Xamarin.Forms je razdeljen na štiri dele, kot je razvidno na sliki 6.1. Trije projekti so namenjeni vsak za svojo aplikacijo, ki so bile izbrane ob ustvarjanju projekta. Vsak projekt ima v imenu projekta zapisano vrsto aplikacije, na primer MentalFitness.Android. Eden izmed projektov oziroma skupna knjižnica vsebuje vso skupno kodo za vse ostale tri projekte za aplikacije. V imenu tega projekta ni zapisana vrsta aplikacije.. Slika 6.1: Struktura projektov. Skupen projekt privzeto vsebuje generirane datoteke in druge elemente, ki jih ustvari Visual Studio. Element Dependencies vsebuje vse potrebno za delovanje aplikacije.. 24.

(37) Datoteki App.xaml in App.xaml.cs sta zagonski datoteki aplikacije. Prva je namenjena dodajanjem skupnih virov, kot so na primer stili, skozi celotno aplikacijo. Vsebina datoteke je v celoti v jeziku XAML. Druga datoteka pa je začetna točka aplikacije. Ta se zažene takoj ob zagonu aplikacije. Privzeto vsebuje konstruktor, ki je viden na sliki 6.2. Konstruktor vsebuje inicializacijo komponent in nastavi privzeto začetno stran aplikacije. Vsebina datoteke je v programskem jeziku C#. Obe datoteki se zaženeta samo ob zagonu aplikacije. public App() { InitializeComponent(); MainPage = new Pages.MainPage(); } Slika 6.2: Konstruktor razreda App. Tudi ostali projekti vsebujejo svoje elemente. Dodajanje ali spreminjanje datotek v teh projektih vpliva samo na aplikacijo projekta. Za razvoj rešitve smo uporabili samo skupen projekt, razen za nastavitev ikone aplikacije.. 6.3 Ikona aplikacije Ustvarjen projekt je imel nastavljeno privzeto ikono za aplikacijo. To ikono smo zamenjali z lastno. Uporabili smo ikono, ki predstavlja začetne črke besed imena aplikacije (glej sliko 6.3). Za razliko od privzete ikone zamenjana ikona bolj izstopa, je hitreje vidna in jasno predstavlja izdelano aplikacijo. Pri izdelavi ikone smo morali paziti, da je ikona jasno razvidna pri različnih velikostih, saj se zahtevane velikosti za različne aplikacije razlikujejo. Sliko ikone smo morali dodati v vsak projekt aplikacije in ne v skupni projekt, saj Xamarin.Forms ne omogoča uporabe skupnih virov za slike.. 25.

(38) Slika 6.3: Ikona aplikacije Mentalni fitnes. Aplikacija Android zahteva ikone velikosti hdpi (ločljivost 72 x 72), mdpi (ločljivost 48 x 48), xhdpi (96 x 96), xxhdpi (144 x 144) in xxxhdpi (192 x 192). Vse ikone morajo imeti enako poimenovanje, zato smo vsem nastavili ime »ic_mental_fitness.png«. Pravilno poimenovanje ikone smo nato vstavili v podmape v mapi Resources, ki se nahaja v projektu za aplikacijo Android (glej sliko 6.4). Podmape so razdeljene glede na velikosti ikon in imajo ime, ki vsebuje zahtevano velikost ikone (hdpi, mdpi xhdpi, xxhdpi, xxxhdpi), zato smo ustrezne velikosti ikon dodali v ustrezne podmape. V tej mapi se nahaja tudi privzeta ikona aplikacije »icon.png«.. Slika 6.4: Struktura ikon za aplikacijo Android. Dodane ikone so samo vključene v aplikacijo Android. Za prikaz ikone v aplikaciji je treba spremeniti nastavljeno privzeto ikono aplikacije. To smo spremenili v datoteki MainActivity.cs, kjer se nahaja atribut Activity. Atribut vsebuje nekaj osnovnih. 26.

(39) nastavitev aplikacije. Za spremembo privzete ikone smo nastavitvi »Icon« nastavili ime nove ikone, kot je vidno na sliki 6.5. [Activity( Label = "Mentalni Fitness", Icon = "@mipmap/ic_mental_fitness", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation )]. Slika 6.5: Nastavitev lokacije ikone za aplikacijo Android. Za aplikacijo UWP je priporočljivo, da je resolucija slike večja od ločljivosti 400 x 400 slikovnih točk. Ikono je treba nastaviti v datoteki Package.appxmanifest, ki je v projektu za aplikacijo UWP. Pod zavihkom Visual Assets smo uporabili generator, ki je viden na sliki 6.6. Generatorju smo nastavili pot datoteke z ikono in izbrali gumb generiraj. Nato je generator ustvaril vse potrebne velikosti ikon. Ikone je tudi pravilno poimenoval in dodal na ustrezno lokacijo.. Slika 6.6: Generator sredstev za aplikacijo UWP. 27.

(40) 6.4 Registracija in prijava Aplikacija omogoča shranjevanje podatkov uporabnika, zato potrebujemo podatek, kateri uporabnik uporablja aplikacijo. Tako vemo, kateri podatki pripadajo določenemu uporabniku. Zaradi tega je prijava v aplikacijo obvezna. Za registracijo in prijavo uporabnika smo uporabili avtentikacijo, ki jo ponuja storitev Firebase. Storitev omogoča različne načine za prijavo uporabnika in je na voljo na različnih platformah. V aplikaciji smo uporabili način prijave s pomočjo elektronskega naslova in gesla. Za implementacijo registracije. in. prijave. v. aplikaciji. smo. uporabili. programsko. knjižnico. FirebaseAuthenticaion. Najprej smo si pripravili razred (glej sliko 6.7), ki vsebuje vse podatke uporabnika, ki jih lahko nastavi ob registraciji. Zaradi izbranega načina prijave nujno potrebujemo podatek o elektronskem naslovu in geslu uporabnika. Uporabnik lahko opcijsko vnese tudi uporabniško ime. public class User { public string public string public string public string }. Username { get; set; } Email { get; set; } Password { get; set; } PasswordCheck { get; set; }. Slika 6.7: Razred uporabnik. Za registracijo smo ustvarili stran (glej sliko 6.8), ki vsebuje vnosna polja za elektronski naslov, uporabniško ime, dve polji za geslo in gumb za potrditev registracije. Uporabnik mora obvezno vnesti podatke v vsa polja, razen v polje uporabniško ime. Geslo mora uporabnik, zaradi preverjanja napak pri vnosu gesla, vnesti dvakrat. Ob kliku na gumb registriraj smo preverili pravilnost vnesenih podatkov in klicali metodo, ki ustvari račun uporabnika. Po uspešni registraciji smo uporabniku prikazali stran za prijavo. V primeru, da uporabnik ni izpolnil vseh vnosnih polj, se geslo ne ujema ali pa je pri registraciji prišlo do napake, smo uporabniku prikazali besedilo s primerno informacijo.. 28.

(41) Slika 6.8: Stran za registracijo uporabnika. Za uporabo registracije s pomočjo storitve Firebase smo najprej ustvarili ponudnika. Ponudnik vsebuje podatke, potrebne za povezavo, pri vzpostavitvi povezave s storitvijo in omogoči uporabo metod, ki skrbijo za izvajanje avtentikacije. Ponudnika smo ustvarili s pomočjo programske knjižnice FirebaseAuthenticaionn (glej sliko 6.9). Za dostop do storitve potrebujemo unikaten ključ za API, ki se imenuje Web API Key. Ta omogoča uporabo storitve. Brez ustreznega ključa uporaba avtentikacije ni mogoča. Ključ smo pridobili iz nadzorne plošče Firebase. Po pridobitvi ustreznega ključa smo s pomočjo knjižnice ustvarili ponudnika FirebaseAuthProvider. Temu smo dodali nastavitev FirebaseConfig, ki smo ji nastavili prej pridobljen Web API Key. Po nastavitvi ponudnika smo ustvarili metodo FirebaseCreateUser (glej sliko 6.9), ki skrbi za registracijo uporabnika. Metoda se kliče ob kliku na gumb za registracijo, pri tem pa se v metodo prenesejo vsi vneseni podatki uporabnika. V metodi smo registracijo uporabnika izvedli preko prej ustvarjenega ponudnika za avtentikacijo. Preko ponudnika smo klicali metodo, ki smo ji nastavili elektronski naslov, geslo in uporabniško ime uporabnika. V primeru uspešne registracije smo uporabniku v storitvi Firebase ustvarili uporabniški račun. V primeri neuspešne registracije smo vrnili ustrezno napako in jo. 29.

(42) uporabniku izpisali na strani za registracijo. Nekatere možne napake so: račun že obstaja, elektronski naslov ni veljaven in geslo je prekratko. Firebase.Auth.FirebaseAuthProvider authProvider = new Firebase.Auth.FirebaseAuthProvider( new Firebase.Auth.FirebaseConfig( "AIzaSyB-4dF5q_mba5nvNYjrxy9N4GAaZ6sT64M")); public async Task FirebaseCreateUser(Models.User user) { Firebase.Auth.FirebaseAuthLink auth = await authProvider.CreateUserWithEmailAndPasswordAsync( user.Email, user.Password, user.Username); }. Slika 6.9: Ponudnik za avtentikacijo in metoda za registracijo. Za prijavo uporabnika smo ustvarili stran s prijavo (glej sliko 6.10), ki vsebuje ime aplikacije, vnosni polji za uporabnikov elektronski naslov in geslo, gumbe za prijavo, registracijo in prikaz brez povezave. Stran smo v konstruktorju datoteke App.xaml.cs nastavili kot začetno stran ob zagonu aplikacije.. Slika 6.10: Stran za prijavo v aplikacijo. 30.

(43) Ker je prijava možna samo v primeru internetne povezave, smo ob kliku na gumb za prijavo s pomočjo knjižnice Xamarin Essentials preverili, če je na voljo internetna povezava (glej sliko 6.11). V primeru, da povezava ni na voljo, smo to uporabniku izpisali. public static bool IsInternetConnectionAvaliable() { if(Connectivity.NetworkAccess == NetworkAccess.Internet) return true; return false; } Slika 6.11: Preverjanje internetne povezave. V primeru, da je na voljo povezava, smo klicali metodo FirebaseSignIn (glej sliko 6.12), v kateri smo prijavili uporabnika. Po uspešni prijavi smo uporabniku prikazali glavni meni aplikacije, hkrati pa smo mu na napravo shranili vnesen elektronski naslov. Za shranjevanje smo uporabili razred Preferences iz knjižnice Xamarin Essential, ki kliče ustrezen API operacijskega sistema za hranjenje nastavitev. Shranjen elektronski naslov smo pridobili ob zagonu aplikacije in ga vpisali ustrezno vnosno polje. public async Task FirebaseSignIn(Models.User user) { Firebase.Auth.FirebaseAuthLink auth = await authProvider.SignInWithEmailAndPasswordAsync( user.Email, user.Password); App.AuthData = auth; }. Slika 6.12: Metoda za prijavo uporabnika. V metodi FirebaseSignIn smo za prijavo uporabnika uporabili enakega ponudnika za povezavo s storitvijo Firebase, kot smo ga uporabili pri registraciji uporabnika. Preko ponudnika smo klicali metodo za prijavo in ji nastavili podatke za elektronski naslov in geslo. V primeru uspešne registracije smo pridobili podatke o prijavljenem uporabniku, ki smo jih nato shranili v aplikacijo. Ti podatki med drugim vsebujejo tudi unikatno. 31.

(44) identifikacijsko številko, ki smo jo uporabili za identifikacijo uporabnika pri dostopu do podatkovne baze. V primeru neuspešne prijave smo vrnili ustrezno napako. Nekatere možne napake, ki jih lahko metoda vrne, so: račun ne obstaja, račun je onemogočen, napačno geslo in elektronski naslov ne obstaja.. 6.5 Shranjevanje v podatkovno bazo Firebase Aplikacija za prijavljene uporabnike omogoča shranjevanje rezultatov posameznih vaj. Podatke smo se odločili shranjevati v podatkovno bazo storitve Firebase. Za dostop do podatkovne baze smo uporabili knjižnico FirebaseDatabase.net, s pomočjo katere smo se povezali s podatkovno bazo. Zaradi preglednosti kode smo za uporabo podatkovne baze Firebase ustvarili lasten razred, ki vsebuje metodi za shranjevanje in pridobivanje podatkov. Najprej smo pripravili razred za podatke, ki se shranjujejo v podatkovno bazo (glej sliko 6.13). Podatki, ki smo jih shranili v podatkovno bazo, so unikaten ključ igre in vrste igre, čas igranja, dosežene točke in datum izvajanja vaje. public class GameResult { public int GameId { get; set; } public int TypeId { get; set; } public TimeSpan Time { get; set; } public int Score { get; set; } public DateTime Date { get; set; } } Slika 6.13: Razred za rezultat. Pred uporabo podatkovne baze smo v konstruktorju razreda ustvarili ponudnika, ki skrbi za dostop do podatkovne baze (glej sliko 6.14). Ponudniku smo nastavili spletni naslov podatkovne baze in še dodatno nastavitve podatkovne baze, ki vsebujejo unikaten žeton za avtentikacijo pri povezavi s podatkovno bazo.. 32.

(45) Firebase.Database.FirebaseClient firebaseClient; public FirebaseHelper() { if (App.IsSignedIn && App.AuthData != null) { firebaseClient = new Firebase.Database.FirebaseClient( "https://mentalfitness.firebaseio.com/", new Firebase.Database.FirebaseOptions() { AuthTokenAsyncFactory = GetAuthToken }); } }. Slika 6.14: Nastavitev ponudnika za dostop do podatkovne baze Firebase. V razredu smo ustvarili še dve metodi. Ena je namenjena pridobitvi podatkov iz podatkovne baze, druga pa vstavljanju podatkov v podatkovno bazo. Za shranjevanje podatkov smo ustvarili metodo AddScore (glej sliko 6.16), ki shrani rezultat vaje v podatkovno bazo (glej sliko 6.15). Preden smo v metodi poskusili shraniti podatke, smo preverili, ali je uporabnik prijavljen. Najprej smo preko ponudnika klicali metodo Child s parametrom »results«, s katero smo dostopali do rezultatov, nato pa smo še enkrat klicali metodo Child, le da smo tokrat v metodo vstavili unikatno identifikacijsko številko prijavljenega uporabnika, ki smo jo shranili ob prijavi. Na koncu smo klicali metodo PostAsync, s katero smo podatke shranili v podatkovno bazo.. Slika 6.15: Rezultat vaje v podatkovni bazi Firebase. 33.

(46) public async Task AddScore(Models.GameResult result) { if (App.IsSignedIn && App.AuthData != null) { firebaseClient = new Firebase.Database.FirebaseClient( "https://mentalfitness.firebaseio.com/"); await firebaseClient .Child("results") .Child(App.AuthData.User.LocalId) .PostAsync<Models.GameResult>(result); } }. Slika 6.16: Metoda za dodajanje rezultata v podatkovno bazo Firebase. Za pridobitev podatkov iz podatkovne baze smo ustvarili metodo GetUserScores (glej sliko 6.17), ki vrne samo seznam vseh rezultatov vaj prijavljenega uporabnika. Preden smo klicali metodo za pridobitev podatkov, smo preverili, ali je uporabnik prijavljen. Podatke smo pridobili s pomočjo prej ustvarjenega ponudnika za povezavo s podatkovno bazo. Preko ponudnika smo klicali enake metode Child, kot pri metodi za shranjevanje v podatkovno bazo, le da smo tokrat namesto metode PostAsync uporabili metodo OnceAsync, s katero smo pridobili ustrezne podatke. Ob uspešni pridobitvi podatkov smo jih vstavili v seznam in jih vrnili. V primeru napake smo vrnili samo prazen seznam.. 34.

(47) public async Task<List<Models.GameResult>> GetUserScores() { List<Models.GameResult> results = new List<Models.GameResult>(); if (App.IsSignedIn && App.AuthData != null) { var returnedItems = await firebaseClient .Child("results") .Child(App.AuthData.User.LocalId) .OnceAsync<Models.GameResult>(); foreach (var item in returnedItems) { results.Add(item.Object); } } return results; }. Slika 6.17: Metoda za pridobitev rezultatov iz podatkovne baze Firebase. 6.6 Shranjevanje podatkov v lokalno podatkovno bazo V primeru, da prijavljen uporabnik med uporabo aplikacije izgubi internetno povezavo, se rezultati ne morejo shraniti v podatkovno bazo Firebase. Zato smo v takem primeru rezultate shranili v lokalno podatkovno bazo SQLite. V lokalni bazi smo shranili lokalne rezultate (glej sliko 6.18), ki vsebujejo enake podatke kot rezultata vaj, le da smo razredu dodali še dodatna podatka za unikaten ključ in identifikacijsko številko prijavljenega uporabnika. Unikaten ključ predstavlja primarni ključ v podatkovni bazi in je nujen. Identifikacijska številka uporabnika je potrebna za določanje, kateremu uporabniku pripadajo podatki.. 35.

(48) Slika 6.18: Razred za lokalni rezultat. Najprej smo si zaradi lažje preglednosti ustvarili nov razred, ki skrbi za povezavo z lokalno podatkovno bazo. V konstruktorju razreda (glej sliko 6.19) smo se z metodo SQLiteAsyncConnection povezali z lokalno podatkovno bazo. Nato smo ustvarili tabelo, ki hrani lokalne rezultate. V razred smo nato dodali še metode za shranjevanje, pridobitev in brisanje podatkov v lokalni bazi. readonly SQLiteAsyncConnection db = null; public SQLiteHelper(string dbPath) { db = new SQLiteAsyncConnection(dbPath); db.CreateTableAsync<Models.LocalGameResult>().Wait(); }. Slika 6.19: Povezava z lokalno podatkovno bazo in kreiranje tabele. V metodi za pridobitev podatkov (glej sliko 6.20) smo preko povezave podatkovne baze dostopali do tabele s podatki, nato pa s pomočjo poizvedbe LINQ (ang. Language Integrated Query) poiskali samo rezultate prijavljenega uporabnika. Najdene podatke smo pretvorili v seznam in jih vrnili. public async Task<List<Models.LocalGameResult>> GetUserResults() { return await db.Table<Models.LocalGameResult>() .Where(x => x.UserId == App.AuthData.User.LocalId) .ToListAsync(); } Slika 6.20: Pridobitev uporabnikovih lokalnih rezultatov iz podatkovne baze. 36.

(49) V metodi za shranjevanje podatka (glej sliko 6.21) smo prejeti podatek o rezultatu vaje, ki smo ga uporabili pri sestavi lokalnega rezultata. Temu rezultatu smo dodali uporabnikovo identifikacijsko številko, da vemo, kateremu uporabniku pripada rezultat. Rezultat smo nato z metodo InsertAsync zapisali v lokalno podatkovno bazo. public async Task<int> SaveResult(Models.GameResult result) { return await db.InsertAsync(new Models.LocalGameResult() { Date = result.Date, GameId = result.GameId, Score = result.Score, Time = result.Time, TypeId = result.TypeId, UserId = App.AuthData.User.LocalId }); }. Slika 6.21: Shranjevanje lokalnega rezultata v podatkovno bazo. Z metodo za brisanje rezultata (glej sliko 6.22) smo iz lokalne podatkovne baze odstranili lokalni rezultat in vrnili število uspešnih brisanj. public async Task<int> DeleteResult(Models.LocalGameResult result) { return await db.DeleteAsync(result); } Slika 6.22: Brisanje lokalnega rezultata iz podatkovne baze. Po napisanih metodah smo ustvarili lastnost za pridobitev ponudnika, ki skrbi za dostop do podatkovne baze (glej sliko 6.23). V primeru, da ta še ni nastavljen, smo ustvarili nov objekt razreda za lokalno podatkovno bazo, ki smo ga naredili. Preko konstruktorja smo mu nastavili pot lokacije podatkovne baze.. 37.

(50) public static Helper.SQLiteHelper database; public static Helper.SQLiteHelper Database { get { if (database == null) { database = new Helper.SQLiteHelper( Path.Combine(GetFolderPath(SpecialFolder.LocalApplicationData), "MentalFitnessDatabase.db3")); } return database; } }. Slika 6.23: Ponudnik za lokalno podatkovno bazo. 6.7 Ustvarjanje časovnika Časovnik smo za odštevanja igralnega časa uporabili pri vseh vajah, zato smo za lažjo uporabo ustvarili poseben razred. Ob ustvarjanju časovnika smo preko konstruktorja (glej sliko 6.24) nastavili čas, od katerega odštevamo metodo, klicano ob vsakem intervalu časovnika in metodo, klicano po zaključenem časovniku.. public CustomTimer( int gameTime, Action<int> intervalAction, Func<Task> endAction) { this.gameTime = gameTime; this.remainingTime = gameTime; this.intervalAction = intervalAction; this.endAction = endAction; }. Slika 6.24: Konstruktor časovnika. Za začetek odštevanja smo razredu dodali metodo StartTimer (glej sliko 6.25). V metodi smo najprej ponastavili žeton za preklic, nato pa smo zagnali časovnik, ki ima čas intervala 1 s. Vsak interval smo preverili, če je nastavljen žeton za preklic. V primeru vrednosti žetona true smo ustavili časovnik. Za vsak interval smo preverili, če je časovnik. 38.

References

Related documents

We will argue that it is hard for any model of misclassification to be able to reconcile our estimates with a sizeable gender difference in the incidence of competitive contracts, a

Findings of the study further show that the following are the factors motivating mergers and acquisitions among firms listed on the Nairobi Stock Exchange (according to the

The second set of combined model topology parameter estimation case studies were performed on the complete wind turbine system model consisting of the turbine blade model,

Afterwards, we account for the ways a governance broker meets his goals in dyadic and polyadic relationships, bringing forward distinctive courses of action: clinical

Unfortunately, current systems are not efficient for a wide range of utiliza- tion due to high idle power, hence, to attain efficiency at all levels of utilization we must construct

We ran a two-day Wikipedia trace-driven workload against our real, Nap- SAC power proportional cluster, measuring request rate, provisioned capacity, power con- sumption,

This will connect you with a range of people who are happy to help including TILG team members, Higher Horizons Hub Officers and the various speakers who you will hear

In addition to the above methods, there are more media or instruments that are very effective in the economic development of the ummah if managed properly by professional managers,