Masarykova univerzita Fakulta informatiky

Vínny degustačný lístok pre platformu Android

Bakalárska práca

Marek Scholtz

Brno, jar 2017

Namiesto tejto stránky vložte kópiu oficiálneho podpísaného zadania práce a prehlásenie autora školského diela.

Prehlásenie

Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj.

Marek Scholtz

Vedúci práce: Ing. Petr Adámek

i

Poďakovanie

Rád by som sa poďakoval vedúcemu práce Ing. Petrovi Adámkovi za jeho cenné rady a pomoc pri tvorbe tejto práce. Moja vďaka patrí taktiež Silvii Borzovej za lekciu TeXu a rodine za podporu počas celého štúdia.

iii Zhrnutie

Cieľom tejto bakalárskej práce bolo vytvoriť aplikáciu pre mobilnú platformu Android, ktorá zjednoduší návštevníkovi vinárstva degus- táciu vín a majiteľovi sprevádzanie hostí. V práci sa venujem samot- nému operačnému systému Android, aplikáciám na tejto platforme, ako aj návrhu a implementácii aplikácie. Súčasťou práce je aj analýza aplikácií z rovnakého odvetvia.

iv Kľúčové slová

Android, degustačný lístok, NFC, QR kód, Material design

v

Obsah

1 Úvod 1

2 Operačný systém Android 3 2.1 História ...... 3 2.2 Súčasnosť ...... 3 2.3 Architektúra ...... 4 2.3.1 Jadro operačného systému ...... 4 2.3.2 Hardvérová abstraktná vrstva ...... 4 2.3.3 Knižnice ...... 4 2.3.4 Android Runtime ...... 5 2.3.5 Application framework ...... 5 2.3.6 Aplikácie ...... 5

3 Aplikácie pre Android 7 3.1 Hlavné komponenty aplikácie ...... 7 3.1.1 Activity ...... 7 3.1.2 Service ...... 8 3.1.3 Broadcast receiver ...... 8 3.1.4 Content provider ...... 8 3.2 Vedľajšie komponenty aplikácie ...... 8 3.2.1 Fragment ...... 8 3.2.2 View ...... 10 3.2.3 Layout ...... 11 3.2.4 Intent ...... 11 3.2.5 Resources ...... 11 3.2.6 Manifest ...... 11 3.3 Štruktúra Android aplikácií ...... 11 3.3.1 AndroidManifest.xml ...... 11 3.3.2 Priečinok res ...... 12 3.3.3 Priečinok java ...... 14

4 Aplikácie z oblasti vinárstva 15 4.1 My cellars and tastes ...... 15 4.2 My wine cellar ...... 15 4.3 Delectable Wine ...... 16

vii 5 Analýza a návrh 19 5.1 Požiadavky ...... 19 5.1.1 Funkčné požiadavky ...... 19 5.1.2 Nefunkčné požiadavky ...... 20 5.2 Grafický návrh ...... 21 5.2.1 Material design ...... 21 5.2.2 Základný návrh ...... 21 5.2.3 Zobrazenie vína ...... 21 5.3 Technológie ...... 22 5.3.1 NFC ...... 22 5.3.2 QR kód ...... 23 5.3.3 Sign-In ...... 23 5.3.4 Firebase ...... 24

6 Implementácia 27 6.1 Android Studio ...... 27 6.2 Gradle ...... 27 6.3 Knižnice ...... 27 6.3.1 ZXing Android Embedded ...... 28 6.3.2 MaterialShowcaseView ...... 28 6.3.3 Picasso ...... 28 6.3.4 OkHttp ...... 28 6.3.5 Gson ...... 29 6.4 Komponenty aplikácie ...... 29 6.4.1 LaunchScreenActivity ...... 29 6.4.2 MainActivity ...... 29 6.4.3 TastingTicketFragment ...... 29 6.4.4 LoadTastingTicketActivity ...... 30 6.4.5 CompleteOfferFragment ...... 31 6.4.6 ShoppingCartFragment ...... 31 6.4.7 HistoryFragment ...... 31 6.4.8 PreferencesFragment ...... 32 6.4.9 AddWineActivity ...... 33

7 Záver 35

Bibliografia 37

viii Zoznam obrázkov

2.1 Architektúra operačného systému Android [5] 6 3.1 Fragmenty emailovej aplikácie [7] 9 3.2 Životný cyklus aktivity [8] 10 3.3 Životný cyklus fragmentu [9] 10 3.4 Jedna ikona aplikácie, 5 rôznych veľkostí 13 3.5 Linear Layout [12] 13 3.6 Relative Layout [12] 13 4.1 My cellars and tastes (zoznam vín) 16 4.2 My wine cellar (štatistika) 16 4.3 Delectable Wine (nástenka) 17 4.4 Delectable Wine (zobrazenie vína) 17 5.1 Diagram prípadov užitia 20 5.2 Navigačný panel 22 5.3 Jednoduché zobrazenie vína 22 5.4 Zobrazenie vína po rozkliknutí 22 5.5 NFC tagy [19] 23 5.6 QR kód 23 5.7 Nástroje platformy Firebase [22] 25 6.1 Aplikačné skratky 30 6.2 Degustačný lístok 30 6.3 Nákupný košík 32 6.4 História 32

ix

1 Úvod

Mobilné telefóny sa za posledné roky stali neoddeliteľnou súčasťou dnešného moderného sveta. Nadobudli obrovské spektrum funkcií, ktoré ich umožňujú využiť aj na iné činnosti ako sú telefonovanie alebo posielanie SMS správ. Do špecifikácie pribudli názvy ako Wi-Fi na pri- pojenie na internet, Bluetooth na komunikáciu s ďalšími zariadeniami, gyroskop na zistenie aktuálnej polohy samotného zariadenia, GPS (Global Positioning System) na zistenie geografickej polohy či NFC (Near Field Communication) na čítanie dát z NFC tagov alebo bez- kontaktné platby. Príchod smartfónov naviac zjednodušil užívateľom inštaláciu ďal- ších funkcionalít a vývojárom ich implementáciu. Medzi najznámejšie mobilné platformy patria Android od spoločnosti Google, iOS od firmy Apple či Windows Phone od Microsoftu. Najrozšírenejší znich, Android, si počas svojej takmer desaťročnej komerčnej existencie vy- budoval obrovskú popularitu. Svoje miesto si dnes drží na viac ako dvoch tretinách mobilných zariadení [1]. Smartfóny a tablety priniesli do sveta nový trend, kedy si žiadna vplyvnejšia spoločnosť nemôže dovoliť absenciu vlastnej mobilnej aplikácie a prostredníctvom nej ponúkať užívateľom svoje služby. Ovplyvnili všetky druhy odvetví, okrem iného aj vinárstvo. Cieľom tejto bakalárskej práce bolo navrhnúť a naimplementovať univerzálnu mobilnú aplikáciu pre vinárstva a vínne pivnice, zjed- nodušujúcu užívateľovi ich návštevu a majiteľovi sprevádzanie hostí. Hlavnou prioritou bol interaktívny degustačný lístok, ktorý si náv- števník načíta pred začiatkom degustácie a aplikácia mu zoznam ochutnávaných vín v jednoduchej a prehľadnej forme vypíše. Užívateľ bude môcť u každého z vín na degustačnom lístku zanechať hodno- tenie pomocou hviezdičiek, prípadne textovú poznámku. Aplikácia ďalej umožní prezrieť si kompletnú ponuku vinárstva a možnosť ob- jednať vybrané vína. V histórii užívateľ nájde svoje minulé návštevy, degustované vína a výpis z prípadnej objednávky.

1

2 Operačný systém Android

Android je plnohodnotná mobilná platforma vyvíjaná spoločnosťou Google primárne určená pre dotykové zariadenia ako sú smartfóny a tablety. Jeho používateľské rozhranie je založené na priamej mani- pulácií použitím dotykových gest. Okrem základnej verzie operačného systému Google vyvíja aj An- droid Wear pre inteligentné hodinky, Android TV pre televízie a An- droid Auto pre autá. Varianty tohto operačného systému sa nachádzajú aj v notebookoch, herných konzolách, digitálnych kamerách či inej elektronike. Zdrojový kód operačného systému Android je vydávaný pod open source licenciou, čo znamená, že vývojári môžu modifikovať systém pre každé zariadenie.

2.1 História

Android bol pôvodne vyvíjaný rovnomennou spoločnosťou od roku 2003. Google v roku 2005 tento startup odkúpil a Android Inc. sa stal jeho dcérskou spoločnosťou. 5. novembra roku 2007 vzniklo konzor- cium Open Handset Alliance, ktoré zahŕňalo spoločnosti zaoberajúce sa výrobou mobilných zariadení, čipov alebo aplikácií, ako napríklad Google, Sony, , Qualcomm a podobne. Jeho cieľom bolo vyvi- núť otvorený štandard pre mobilné zariadenia. V ten istý deň toto konzorcium ohlásilo svoj prvý produkt, Android. Google dal jasne najavo, že s platformou Android má na mobilných zariadeniach veľké ambície. Už v roku 2008 bol v Spojených štátoch predstavený prvý ko- merčný telefón s Androidom 1.0, HTC Dream, známy aj ako T-Mobile G1. Zároveň s týmto zariadením bol uvoľnený balíček nástrojov pre vývojárov vo verzii 1.0 [2].

2.2 Súčasnosť

Operačný systém Android si dnes drží svoje miesto na 65,19 % všet- kých mobilných telefónov a tabletov [1]. K máju 2017 je aktuálnou verziou Android 7.1.2 Nougat, ktorá bola uvoľnená začiatkom apríla

3 2. Operačný systém Android

2017. V percentuálnom zastúpení jednotlivých verzií operačného sys- tému vedie Android 6.0 Marshmallow s 31,2 %, nasledovaný verziou 5.1 Lollipop s 23,3 % [3].

2.3 Architektúra

Operačný systém Android je rozdelený do 5 vrstiev (obrázok 2.1). Každá vrstva má svoj účel a nemusí byť striktne oddelená od ostatných vrstiev [4].

2.3.1 Jadro operačného systému Najnižšou vrstvou architektúry je jadro operačného systému, ktoré tvorí abstraktnú vrstvu medzi používaným hardvérom a zvyškom softvéru vo vyšších vrstvách. Jadro systému Android je postavené na Linuxe vo verzii 2.6. Využíva mnoho jeho vlastností, ako sú podpora správy pamäte, správa sietí, zabudované ovládače, správa procesov alebo súbežný beh aplikácií, ktoré bežia ako samostatné procesy s pri- oritou stanovenou systémom. Táto vlastnosť prispieva k stabilite a tiež k ochrane systému [4].

2.3.2 Hardvérová abstraktná vrstva Hardvérová abstraktná vrstva poskytuje jednotné rozhranie ovláda- júce rôzne fungujúci hardvér. Skladá sa z viacerých knižničných mo- dulov, z ktorých každý implementuje rozhranie pre konkrétny typ hardvérového zariadenia, ako je fotoaparát alebo Wi-Fi. Ak apliká- cia uskutoční výzvu na prístup k hardvérovému zariadeniu, systém Android načíta modul práve pre toto zariadenie [5].

2.3.3 Knižnice Mnoho základných komponentov a služieb systému Android, ako napríklad Android Runtime alebo hardvérová abstraktná vrstva, sú postavené z natívneho kódu, ktorý vyžaduje natívne knižnice napí- sané v C a C++. Platforma Android poskytuje Java rozhrania, ktoré umožňujú aplikáciám prístup k týmto knižniciam. Napríklad, kniž- nica OpenGL ES je dostupná pomocou rozhrania Java OpenGL API

4 2. Operačný systém Android

a tak môžeme do aplikácii jednoducho pridať podporu pre vykresľo- vanie 2D a 3D grafiky [5].

2.3.4 Android Runtime

Vrstva Android Runtime obsahuje aplikačný virtuálny stroj Dalvik, ktorý bol vyvíjaný od roku 2005 špeciálne pre Android. Dalvik Virtual Machine (DVM) je registrovo orientovaná architektúra, ktorá využíva základné vlastnosti linuxového jadra, ako je správa pamäte alebo práca s vláknami. V tejto vrstve sú tiež obsiahnuté základné knižnice progra- movacieho jazyka Java. Knižnice sa svojím obsahom blížia platforme Java Standard Edition. Hlavný rozdiel je v neprítomnosti knižníc pre užívateľské rozhranie (AWT a Swing), ktoré boli nahradené knižnicami užívateľského rozhrania pre Android [4].

2.3.5 Application framework

Vrstva application framework je pre vývojárov najdôležitejšia. Posky- tuje prístup k veľkému počtu služieb, ktoré môžu byť použité priamo v aplikáciách. Tieto služby môžu sprístupňovať dáta iných aplikácií, prvky používateľského rozhrania, upozorňovací stavový riadok, apli- kácie bežiace na pozadí, hardvér používaného zariadenia a mnoho dalších funkcií [4].

2.3.6 Aplikácie

Najvyššiu vrstvu systému tvoria aplikácie, ktoré využívajú bežní pou- žívatelia. Môže ísť o aplikácie predinštalované alebo dodatočne stia- hnuté z obchodu Google Play. Napríklad emailový klient, SMS apli- kácia, kalendár, mapy, prehliadač, kontakty a dalšie aplikácie aj od tretích strán [4].

5 2. Operačný systém Android

Obr. 2.1: Architektúra operačného systému Android [5] 6 3 Aplikácie pre Android

Aplikácie pre platformu Android je možné tvoriť vo viacerých jazy- koch ako napríklad C++, C# alebo Python, najpoužívanejším je však programovací jazyk Java. Výsledkom je APK súbor, ktorý obsahuje všetok obsah potrebný na bezproblémový beh aplikácie. Životný cyklus každej aplikácie prebieha v tzv. sandboxe, ktorý izoluje dáta aplikácie a vykonávanie jej kódu od všetkých ostatných aplikácií. Implementuje bežné bezpečnostné funkcionality ako kryp- tografia, povolenia a medziprocesovú komunikáciu. Android ďalej implementuje princíp čo najmenších privilégií. To znamená, že každá aplikácia má predvolene prístup len ku kompo- nentom, ktoré nevyhnutne vyžaduje pre svoju prácu a k žiadnym iným [6].

3.1 Hlavné komponenty aplikácie

Komponenty sú dôležité stavebné bloky Android aplikácií. Každý komponent je vstupným bodom, cez ktorý môže systém alebo užívateľ vstúpiť do aplikácie. Existujú 4 typy aplikačných komponentov: activity (aktivita), service (služba), broadcast receiver a content provider [6].

3.1.1 Activity Activity je jedna obrazovka užívateľského rozhrania. Aplikácia obsa- huje jednu alebo viac aktivít, ktoré spravujú rôzne fázy programu. Každá aktivita je zodpovedná za uloženie jej stavu, aby sa doň mohla neskôr vrátiť. Každá aktivita má svoj vlastný životný cyklus (obrázok 3.2) a môže sa nachádzať v 5 rôznych stavoch:

• starting stav v momente spustenia aktivity

• running aktivita beží a je v popredí

• paused stav, kedy je aktivita prekrytá iným objektom

• stopped aktivita nie je viditeľná pre užívateľa

7 3. Aplikácie pre Android

• destroyed pri nedostatku pamäte je aktivita ukončená

Vývojár nemá kontrolu nad tým, v akom stave jeho program je. Avšak, pri zmene stavu je na to upozornený pomocou volania metódy podľa aktuálneho stavu [7].

3.1.2 Service Service je komponent bežiaci v pozadí bez priamej interakcie s po- užívateľom. Môže napríklad prehrávať hudbu v pozadí, zatiaľ čo je užívateľ v inej aplikácii, alebo prijímať dáta zo siete bez blokovania užívateľa. Iný komponent, ako napríklad aktivita, môže service spustiť, spojiť sa a komunikovať s ním [7].

3.1.3 Broadcast receiver Broadcast receiver je komponent, ktorý podobne ako service, užívateľské rozhranie neobsahuje. Používa sa na načúvanie systémových ozná- mení. Podľa druhu podnetu rôzne reaguje. Aplikácia obsahujúca broadcast receiver pritom vôbec nemusí bežať. Príklad použitia môže byť oznámenie o nízkom stave batérie, prípadne zapnutie budíka ako reakcia na daný čas [6].

3.1.4 Content provider Content provider je aplikačné rozhranie na zdieľanie dát medzi apliká- ciami, ale aj medzi jednotlivými aktivitami. Aplikácia môže uchovávať dáta v súboroch, SQLite databáze alebo na webe, a aj napriek tomu k nej budú mať prístup aj iné oprávnené aplikácie. Napríklad Google poskytuje prístup ku kontaktom. Všetky informácie ako mená, tele- fónne čísla, adresy a podobne sú poskytnuté aj iným aplikáciami, ktoré ich chcú použiť [6].

3.2 Vedľajšie komponenty aplikácie

3.2.1 Fragment Fragment bol predstavený spolu s Androidom 3.0 Honeycomb urče- ným pre tablety, ktoré boli hlavným podnetom pre jeho vznik. Frag-

8 3. Aplikácie pre Android ment reprezentuje časť užívateľského rozhrania aktivity. V rámci jednej aktivity je možné kombinovať viacero fragmentov a jeden fragment môže byť využitý viacerými aktivitami. Podobne ako aktivita, každý fragment má svoj životný cyklus (obrázok 3.3). Príkladom využitia fragmentov môže byť emailová aplikácia (obrá- zok 3.1). Fragment A obsahuje zoznam prijatých emailov a fragment B obsah vybraného emailu. Vďaka veľkému displeju dokáže tablet zobra- zovať fragment A aj fragment B v jeden okamih a teda musia byť oba fragmenty súčasťou jednej aktivity. Smartfón po vybraní konkrétneho emailu z fragmentu A spustí novú aktivitu obsahujúcu fragment B [7].

Obr. 3.1: Fragmenty emailovej aplikácie [7]

9 3. Aplikácie pre Android

Obr. 3.2: Životný cyklus aktivity [8]

Obr. 3.3: Životný cyklus fragmentu [9]

3.2.2 View

View reprezentuje základný stavebný blok grafického rozhrania. Tieto komponenty sú obsiahnuté v aktivitách, prípadne vo fragmentoch. Môžu byť vytvorené priamo v kóde alebo pomocou XML súborov. Každé view má zoznam atribútov a vlastností, ktoré definujú jeho vzhľad a funkciu [7].

10 3. Aplikácie pre Android

3.2.3 Layout Layout definuje vizuálnu štruktúru používateľského rozhrania ajeto zoznam komponentov z triedy view. Reprezentuje rozloženie prvkov v položke zoznamu alebo celého fragmentu, prípadne aktivity [7].

3.2.4 Intent Intent je abstraktný popis operácie, ktorá sa má vykonať. Používa sa na spustenie niektorého z vyššie uvedených hlavných komponentov. Na spustenie aktivity sa používa metóda startActivity(Intent) alebo na spustenie komponentu service startService(Intent) [7].

3.2.5 Resources Resources je trieda prístupu k zdrojom aplikácie (ikony, zvuky, XML súbory a podobne). Systém zdrojov operačného systému Android sle- duje všetky nekódové prostriedky priradené k aplikácii. Ich inštanciu je možné získať jednoducho pomocou metódy getResources() [7].

3.2.6 Manifest Posledným vedľajším komponentom Android aplikácií je manifest. Je to konfiguračný súbor s informáciami nevyhnutnými pre spustenie aplikácie, ktorý si popíšeme v dalšej kapitole [10].

3.3 Štruktúra Android aplikácií

3.3.1 AndroidManifest.xml Každá Android aplikácia musí vo svojom koreňovom adresári obsa- hovať súbor AndroidManifest.xml. Tento súbor poskytuje základné informácie o aplikácii operačnému systému, ktorý ho musí prečí- tať pred samotným spustením aplikácie. Obsahuje zoznam povolení, ktoré aplikácia vyžaduje, názov aplikácie, odkaz na ikonu či tému aplikácie alebo definíciu každého z vyššie uvedených hlavných kom- ponentov [10].

11 3. Aplikácie pre Android

3.3.2 Priečinok res Priečinok res obsahuje všetky zdroje rozdelené v podpriečinkoch: podpriečinok anim XML súbory definujúce jednoduché animácie. Tie umožňujú uskutoč- niť jednoduché transformácie na grafickom objekte ako zmena pozície, veľkosti či priehľadnosti [11]. podpriečinok animator XML súbory definujúce pokročilejšie animácie. Na rozdiel od vyš- šie uvedených dokážu animovať takmer všetko. Umožňujú meniť vlastnosť objektu v závislosti od času bez ohľadu na to, či je objekt vykresľovaný na obrazovku, alebo nie [11]. podpriečinok color XML súbory definujúce zoznam farieb pre UI prvok v rôznych stavoch. Ak v rozhraní nastavíme ako pozadie nejakému grafickému objektu súbor z priečinka color, bude mať tento objekt farbu pozadia podľa svojho aktuálneho stavu. Napríklad pri stlačení a podržaní objekt dostane farbu podľa android:state_pressed [11]. podpriečinok drawable XML súbory obsahujúce vektorový obrázok alebo bitmapové súbory, uložené v rôznych denzitách pre rôzne displeje: ~120dpi ldpi nízka denzita ~160dpi mdpi stredná denzita ~240dpi hdpi vysoká denzita ~320dpi xhdpi extra vysoká denzita ~480dpi xxhdpi extra extra vysoká denzita ~640dpi xxxhdpi extra extra extra vysoká denzita Hustota pixelov je pomer medzi veľkosťou displeja a jeho rozlí- šením. Podľa denzity svojho displeja si zariadenie vyberie správny obrázok [11].

12 3. Aplikácie pre Android

podpriečinok mipmap Bitmapové súbory uložené rovnako ako drawable v rôznych denzitách (obrázok 3.4), ktoré definujú ikonu aplikácie [11].

Obr. 3.4: Jedna ikona aplikácie, 5 rôznych veľkostí

podpriečinok layout XML súbory definujúce rozmiestnenie grafického rozhrania. Kore- ňovým elementom musí byť už konkrétny UI prvok alebo objekt rozširujúci triedu ViewGroup. Tým je zväčša LinearLayout pre jed- noduché horizontálne alebo vertikálne usporiadanie prvkov (obrá- zok 3.5), prípadne RelativeLayout pre náročnejšie zobrazenia (obrá- zok 3.6). Medzi najpoužívanejšie UI prvky patrí TextView na zobra- zenie textu, ImageView na zobrazenie obrázka, EditText ako textový vstup či Button na vyvolanie nejakej akcie. Každému z elementov je možné nastaviť veľkosť, pozíciu, odsadenie a podobne [11].

Obr. 3.5: Linear Layout [12] Obr. 3.6: Relative Layout [12]

13 3. Aplikácie pre Android podpriečinok menu XML súbory, ktoré obsahujú ponuky aplikácie (navigačný panel, kon- textové menu) [11]. podpriečinok raw Ľubovoľné súbory, ktoré sa otvárajú pomocou triedy InputStream [11]. podpriečinok values XML súbory obsahujúce jednoduché hodnoty ako textové reťazce, číselné hodnoty a farby. Názov súboru je ľubovoľný, avšak všetky z nich musia mať koreňový element resources, v ktorého vnútri sú už elementy obsahujúce niektoré konkrétne hodnoty: array vopred pripravené, nie nutne homogénne polia color farby aplikácie dimen hodnoty veľkostí grafických objektov string textové reťazce s možnosťou lokalizácie style formát a vzhľad grafického rozhrania [11] podpriečinok xml Ľubovoľné XML súbory ako napríklad zoznam možností v nastave- niach aplikácie alebo zoznam aplikačných skratiek [11].

3.3.3 Priečinok java V neposlednom rade priečinok java, ktorý obsahuje zdrojový kód v jazyku Java, triedený podľa názvov balíčkov. V ňom sa nachádza celá logika aplikácie [13].

14 4 Aplikácie z oblasti vinárstva

V obchode Google Play (starší názov Android Market) sa nachádza hneď niekoľko aplikácií pohybujúcich sa vo vinárskom sektore. Väč- šina z nich ponúka databázu vín, iné sa zaoberajú správou vlastného vinárstva.

4.1 My cellars and tastes

Aplikácia My cellars and tastes1 (obrázok 4.1) umožňuje majiteľom vinárstiev spravovať ich pivnice a vína v nich uskladnené. Užívateľ si o každom víne môže evidovať množstvo informácií, ktoré apliká- cia automaticky rozdelí do podkategórií podľa spoločných znakov. Aplikácia ponúka aj rozšírené nastavenia v podobe zálohovania da- tabázy alebo jej export vo formáte CSV. Ponúka nie veľmi prehľadné užívateľské rozhranie v Material design.

4.2 My wine cellar

Titul My wine cellar2 (obrázok 4.2) naopak slúži pre návštevníka vín- nych pivníc, ktorý si môže uchovávať informácie o degustovaných vínach alebo navštívených vinárstvach. Užívateľovi je umožnené ulo- žiť len základné informácie o víne a pomocou čísla v rozmedzí 0 až 100 dané víno ohodnotiť. Za finančný príplatok je možné k vínu doložiť aj fotografiu. Aplikácia ponúka aj štatistiku týkajúcu sa celkového počtu ochutnaných vín alebo percentuálneho zastúpenia jednotlivých farieb uložených vín. Podobne ako aplikácia uvedená vyššie, obsahuje aj možnosť zálohovať databázu alebo jej export do formátu CSV. Užíva- teľské rozhranie v Material design je veľmi jednoduché a intuitívne.

1. https://play.google.com/store/apps/details?id=com.mycellar 2. https://play.google.com/store/apps/details?id=it.pierluigi.mywinecellar

15 4. Aplikácie z oblasti vinárstva

Obr. 4.1: My cellars and tastes Obr. 4.2: My wine cellar (štatis- (zoznam vín) tika)

4.3 Delectable Wine

Aplikácia Delectable Wine3 (obrázky 4.3, 4.4) obsahuje rozsiahlu on- line databázu vín. Pred tým, ako je možné túto aplikáciu používať, je nutné zaregistrovať sa. Titul funguje ako sociálna sieť plná milovníkov vína, ktorí ich spoločne hodnotia a komentujú. Každé víno má svoju vlastnú stránku so základnými informáciami a hodnoteniami. Medzi pokročilejšie funkcie patrí nájdenie konkrétneho druhu vína podľa fotografie či možnosť kúpy vo vybraných štátoch. Aplikácia ponúka moderný a prehľadný vzhľad.

3. https://play.google.com/store/apps/details?id=com.delectable.mobile

16 4. Aplikácie z oblasti vinárstva

Obr. 4.3: Delectable Wine (ná- Obr. 4.4: Delectable Wine (zo- stenka) brazenie vína)

17

5 Analýza a návrh

Hoci tituly v predošlej kapitole pochádzajú z odvetvia vinárstva, ani jeden z nich sa nezaoberá samotnou degustáciou vína. Práve absencia tejto funkcionality podmienila vznik tejto bakalárskej práce.

5.1 Požiadavky

Požiadavky sú špecifikácie toho, čo by malo byť implementované. Spravidla sa delia na 2 základné druhy: funkčné a nefunkčné. Funkčné požiadavky špecifikujú to, čo by mal systém užívateľovi ponúknuť. Nefunkčné požiadavky špecifikujú vlastnosti a obmedzenia kladené na systém [14].

5.1.1 Funkčné požiadavky

Primárnou funkciou aplikácie je interaktívny degustačný lístok, ktorý nahradzuje nepohodlnú tvrdú podložku, lístok vo forme papiera a pero. Hlavnou výhodou interaktívneho degustačného lístka je fakt, že jeho obsah môže byť menený aj priamo počas degustácie. Majite- ľovi je preto umožnené v ľubovoľnom čase pridať na degustačný lístok nové víno. Po degustácií zväčša nasleduje zakúpenie vín podľa výberu náv- števníka. Preto je do aplikácii pridaná funkcia nákupného košíka, ktorého obsah odošle návštevník po degustácií ako objednávku pro- stredníctvom emailu priamo majiteľovi. Avšak, užívateľ môže mať záujem aj o vína, ktoré sa na aktuálnej degustácii nevyskytli a tak chýbajú aj na degustačnom lístku. Preto aplikácia obsahuje aj možnosť prezrieť si kompletnú ponuku vinárstva a aj z nej pridať vybrané vína do nákupného košíka. História ponúka užívateľovi pohlaď na minulé návštevy, degustované vína a prípadné objednávky.

19 5. Analýza a návrh

Obr. 5.1: Diagram prípadov užitia

5.1.2 Nefunkčné požiadavky

Za minimálnu podporovanú verziu operačného systému Android je zvolená verzia 4.1 Jelly Bean, čím je pokrytých viac ako 95 % všet- kých mobilných zariadení [3]. Aplikácia ponúka anglickú, slovenskú a českú lokalizáciu. Hlavný dôraz je kladený na jednoduchosť a in- tuitívnosť užívateľského rozhrania a ako dizajnový jazyk využíva moderný Material design.

20 5. Analýza a návrh 5.2 Grafický návrh

5.2.1 Material design Ešte v roku 2013 vyzerali všetky produkty spoločnosti Google nekon- zistentne. Rozdiely v dizajne by sa našli dokonca aj medzi rovnakým produktom bežiacom na viacerých platformách. Google však už od roku 2011 tvrdo pracoval na zjednotení dizajnu, aby v máji roku 2014 na známej konferencii Google I/O predstavil spolu s Androidom 5.0 Lollipop finálnu verziu s názvom Material design. Tento vizuálny jazyk definuje grafické rozhranie nielen mobilným aplikáciám, ale aj webu, hodinkám, televízorom a podobne. Material design je inšpirovaný materiálmi ako papier a atrament. Tie sa v apli- káciách správajú ako materiály z reálneho sveta a dodržiavajú všetky zákony fyziky [15]. Material design na svojich rozsiahlych stránkach poskytuje množ- stvo definícii a pravidiel pre každú časť aplikácie či už je to layout, farba, typografia, štýl písania alebo animácie. Google navyše zverej- nil zoznam ikon v Material design, ktoré vývojári môžu využiť aj v komerčných produktoch.

5.2.2 Základný návrh Ako najvýraznejší stavebný prvok aplikácie bol zvolený navigačný panel (obrázok 5.2), ktorý sa cez celú výšku obrazovky vysúva z ľavej strany a ponúka navigáciu do hlavných fragmentov aplikácie, nasta- vení, pomoci a informácií o aplikácií. Prvým fragmentom je degus- tačný lístok, na ktorom sa zobrazia vína pripravené na degustáciu. Druhý obsahuje kompletnú ponuku vín daného vinárstva. Tretím je nákupný košík, v ktorom sa zobrazujú všetky vína, pri ktorých užívateľ nastavil počet žiadaných fliaš aspoň na jednu a tlačidlo vyvolávajúce objednávku. Štvrtým hlavným fragmentom je história, ktorá obsahuje všetky navštívené vinárstva, degustované vína a výpis z objednávky.

5.2.3 Zobrazenie vína Samotné zobrazenie položky víno v jednoduchej forme obsahuje jeho názov, farbu v podobe ikony, počet žiadaných fliaš a v prípade výskytu na degustačnom lístku aj počet udelených hviezdičiek (obrázok 5.3). Po

21 5. Analýza a návrh kliknutí na položku sa zobrazia podrobnosti ako šarža, ročník, obsah cukru a alkoholu, objem fľaše, cena, popis chute a vône a v prípade výskytu vína na degustačnom lístku aj možnosť udeliť hviezdičky a pridať poznámku (obrázok 5.4).

Obr. 5.3: Jednoduché zobraze- nie vína

Obr. 5.4: Zobrazenie vína po rozkliknutí Obr. 5.2: Navigačný panel

5.3 Technológie

5.3.1 NFC Vzhľadom na to, že obsah degustačného lístka nie je pri každej náv- števe vínnej pivnice rovnaký, bolo nutné vyriešiť spôsob, ktorým si návštevník pred degustáciou lístok načíta. Ako najjednoduchší spôsob sa javí technológia NFC, pomocou ktorej dokáže smartfón rýchlo prijať síce malé, no dostačujúce množstvo dát na ďalšie spracovanie [16]. Hlavnú rolu hrajú programovateľné NFC tagy (obrázok 5.5), ktorých

22 5. Analýza a návrh

obsah sa dá jednoducho editovať pomocou aplikácií tretích strán. Pred- povede však hovoria, že ešte aj v roku 2018 budú NFC čip obsahovať len necelé dve tretiny zo všetkých zariadení [17]. Použitím len tech- nológie NFC by tak aplikácia prišla o veľké množstvo potenciálnych užívateľov.

5.3.2 QR kód Ako alternatíva k NFC technológii bolo zvolené načítavanie pomo- cou QR (Quick Response) kódov (obrázok 5.6). Fotoaparátom dnes už disponujú všetky smartfóny, preto sa počet znevýhodnených uží- vateľov pri načítavaní degustačného lístka znížil na nulu. QR kód je dvojrozmerný čiarový kód zložený z malých čiernych štvorcov vo vnútri veľkého bieleho štvorca. Výhodou QR kódov je, že dáta sú za- kódované ako vertikálne, tak aj horizontálne. Tradičný čiarový kód obsahuje dáta zašifrované len vo vertikálnom smere. QR kód môže obsahovať okrem textového reťazca aj informácie o kontakte, položku v kalendári, URL odkaz, SMS šablónu či geografickú polohu [18].

Obr. 5.5: Sony Xperia NFC Obr. 5.6: QR kód tagy [19]

5.3.3 Google Sign-In Návštevník vínnej pivnice nesmie počas degustácie pridávať na degus- tačný lístok vína a taktiež jej majiteľ si nebude z vlastného vinárstva

23 5. Analýza a návrh vína objednávať. Preto bolo nutné rozlíšiť návštevníka a majiteľa vínnej pivnice a podľa toho prispôsobiť aj aplikáciu. Jednou z možností je ukryť do niektorého UI prvku funkciu naviac a to takú, že pri viacná- sobnom kliknutí do tohto prvku sa aplikácia prepne do administrá- torského režimu. To by však bolo neúčinné, ak by majiteľ vinárstva navštívil inú vínnu pivnicu, v ktorej by bol tiež administrátorom. Toto riešenie navyše trpí viacerými nedostatkami, ako napríklad únikom ukrytého vzoru. Ako riešenie tohto problému bolo zvolené prihlasovanie pomocou Google účtu [20]. Entita WineCellar obsahuje okrem iného aj emailovú adresu majiteľa, na ktorú sa má odoslať prípadná objednávka. Ak sa emailová adresa užívateľa prihláseného pomocou Google Sign-In zhoduje s emailovou adresou majiteľa v entite WineCellar, aplikácia sa automaticky prepne do administrátorského režimu. Avšak ak majiteľ navštívi iné vinárstvo, táto rovnosť sa zneguje a aplikácia sa prepne späť do režimu návštevníka. Google Sign-In okrem prepínania užívateľského a administrátor- ského režimu prináša benefity aj samotnému návštevníkovi. Napríklad pri vytváraní objednávky vín užívateľ nemusí ručne vypisovať svoje osobné údaje, podľa ktorých majiteľ rozlíši svojich hostí, ale aplikácia tieto informácie získa práve z prihláseného Google účtu.

5.3.4 Firebase

Firebase je komplexná mobilná a webová vývojárska platforma unifi- kovaná skrz Android, iOS a web. Vývojárom pomáha tvoriť kvalitné aplikácie a rozširovať užívateľskú základňu. Platforma Firebase ob- sahuje množstvo nástrojov, ako napríklad databázu v reálnom čase, úložisko dát či zasielanie notifikácií (obrázok 5.7). Jej spektrum funkcií je tak rozmanité, že zbavuje vývojára potreby implementovať vlastný server [21]. Aplikácia Wine Cellar implementuje spojenie s platformou Fire- base a ako kľúčový nástroj používa Cloud Messaging. Ten umožňuje bezplatné doručovanie správ a notifikácií medzi zariadeniami. Vy- užíva sa v okamihu, keď majiteľ vinárstva pridáva priamo počas degus- tácie na lístok nové víno, ktoré je pomocou tohto nástroja rozposlané všetkým aktuálnym návštevníkom.

24 5. Analýza a návrh

Obr. 5.7: Nástroje platformy Firebase [22]

25

6 Implementácia

Ako vývojové prostredie bolo použité Android Studio pre operačný systém Windows a ako kompilačný systém Gradle. Programovanie zjednodušili aj knižnice s už vopred naimplementovanými žiadanými funkcionalitami.

6.1 Android Studio

Android Studio je oficiálne vývojové prostredie pre platformu An- droid. Google ho predstavil v roku 2013 na Google I/O a prvá stabilná verzia sa stala verejne dostupnou o rok neskôr v decembri. Vývojové prostredie vychádza z IntelliJ IDEA od českej spoločnosti JetBrains. Android Studio tak ponúka kompletný proces vývoja aplikácie od návrhu až po zverejnenie na obchode Google Play. Medzi užitočné funkcie patrí inteligentný editor kódu, ktorý svojim napovedaním výrazne urýchľuje programovanie, funkcia instant run uplatňujúca zmenu v kóde priamo počas behu aplikácie, či emulátor s bohatými nastaveniami. Android Studio podporuje okrem smartfónov a tabletov vývoj aj na Android Wear, Android TV a Android Auto [23].

6.2 Gradle

Gradle je primárny open source kompilačný systém využívaný An- droid Studiom. Súbor nevyhnutný pre bezproblémovú kompiláciu je build.gradle. Tento súbor okrem iného obsahuje cieľovú API verziu, minimálnu API verziu, na ktorej bude aplikácia fungovať, unikátne ID či verziu aplikácie. Do build.gradle sa pridávajú aj prípadné knižnice, ktoré si popíšeme nižšie [24].

6.3 Knižnice

Pridaním vhodnej knižnice do súboru build.gradle si môže vývojár značne zjednodušiť implementáciu aplikácie. Aplikácia Wine Cellar obsahuje hneď niekoľko knižníc, ktoré už implementujú žiadanú fun- kcionalitu.

27 6. Implementácia

6.3.1 ZXing Android Embedded

Knižnica ZXing Android Embedded implementuje skenovanie a čí- tanie z QR kódov. Jej použitie je veľmi jednoduché. Stačí si vytvo- riť novú inštanciu triedy IntentIntegrator, nastavit jej žiadané pa- rametre ako orientáciu či zvuk pri nasnímaní, a pomocou metódy initiateScan() spustiť CaptureActivity. Tá automaticky zachytí QR kód, dekóduje ho a výsledok pošle rodičovskej aktivite do metódy onActivityResult() [25].

6.3.2 MaterialShowcaseView

Knižnica MaterialShowcaseView slúži na zobrazenie pomoci užívate- ľovi. Využíva sa v prípade, ak chce vývojár svojím užívateľom jednodu- chým spôsobom vysvetliť význam ovládacích prvkov či zobrazení. Zo- brazuje sa pomocou metódy show() na triede MaterialShowcaseView, ktorej vopred nastavíme žiadané parametre. Knižnica stmaví celú obrazovku okrem miesta, ktoré chce užívateľovi priblížiť a zobrazí pomocný text [26].

6.3.3 Picasso

Picasso je knižnica slúžiaca na jednoduché stiahnutie obrázka z in- ternetu a umiestnenie priamo do konkrétneho ImageView. O všetko sa postará trieda Picasso, ktorej hlavnými atribútmi sú URL odkaz na konkrétny obrázok a ImageView, ktorému chceme obrázok nasta- viť. Knižnica ponúka aj možnosť zmeniť veľkosť stiahnutého obrázka, prípadne ho orezať [27].

6.3.4 OkHttp

Knižnica OkHttp zjednodušuje prácu s HTTP protokolom. Pred vy- konaním požiadavky je nutné vytvoriť novú inštanciu triedy Request a nastaviť jej URL odkaz. Metóda execute() zavolaním na inštan- ciu triedy OkHttpClient s nastavenou požiadavkou vráti objekt typu Response, ktorého telo ukrýva obsah požadovanej webovej lokality [28].

28 6. Implementácia

6.3.5 Gson Knižnica Gson slúži na jednoduché prevody Java objektov do ob- jektu JSON (JavaScript Object Notation) a naopak pomocou funkcií fromJson() a toJson(). Dokáže pracovať s ľubovoľným typom objek- tov a taktiež vnorenými kolekciami [29].

6.4 Komponenty aplikácie

6.4.1 LaunchScreenActivity Ihneď po zapnutí aplikácie sa užívateľovi zobrazí jednoduchá aktivita s logom aplikácie. Tá následne vyvolá spustenie hlavnej aktivity a je viditeľná po dobu, kým sa hlavná aktivita nenačíta. Aplikácia taktiež implementuje tzv. aplikačné skratky (obrázok 6.1) predstavené v Androide 7.1 Nougat, ktoré umožňujú prejsť z domov- skej obrazovky smartfónu priamo do niektorej časti aplikácie. Táto aktivita zachytí spôsob, akým bola aplikácia spustená a v prípade po- užitia skratky pridá hlavnej aktivite argument s identifikačný číslom fragmentu, ktorý sa má zobraziť.

6.4.2 MainActivity Hlavná aktivita obsahuje navigačný panel, ktorý sa vysúva z ľavej strany obrazovky. Je základným prvkom pri pohybe v aplikácii a jej hlavnou úlohou je zobrazovať fragmenty podľa užívateľových príka- zov. Obsahuje broadcast receiver, ktorý kontroluje stav siete a podľa toho povoľuje, resp. zakazuje prístup do fragmentov, ktoré pre svoju prácu vyžadujú internetové pripojenie.

6.4.3 TastingTicketFragment Prvý fragment obsahuje aktuálny degustačný lístok (obrázok 6.2). Po zvolení tohto fragmentu hlavná aktivita zistí, či zariadenie disponuje NFC čipom. Ak áno, aplikácia ponúkne dialógové okno s možnosťou načítať NFC tag alebo vyfotografovať QR kód, v opačnom prípade prejde automaticky na snímanie QR kódu. NFC tag, prípadne QR kód obsahujú internetový odkaz na zoznam vín vo formáte XML. Tie aktivita LoadTastingTicketActivity sparsuje a zobrazí vo fragmente

29 6. Implementácia vo forme ListView. V prípade horších svetelných podmienok priamo vo vínnej pivnici fragment ponúka zasvietenie LED diódy, ak ňou samozrejme zariadenie disponuje. Otvorením degustačného lístka u návštevníka sa aplikácia taktiež pripojí na nástroj Cloud Messaging vývojarskej platformy Firebase a očakáva notifikáciu s prípadným novým vínom.

Obr. 6.1: Aplikačné skratky Obr. 6.2: Degustačný lístok

6.4.4 LoadTastingTicketActivity Ako už názov napovedá, úlohou tejto aktivity je načítanie URL odkazu jednou z vyššie uvedených metód a sparsovanie stiahnutého XML súboru. Aktivita dostane ako argument premennú typu boolean, ktorá v prípade, že si užívateľ vybral načítanie pomocou NFC tagu obsa- huje hodnotu true, naopak pri načítaní z QR kódu obsahuje hodnotu false.

30 6. Implementácia

V prvom prípade aktivita uvedie NFC čip do stavu čakania na NFC tag, ktorý URL odkaz obsahuje. V druhom prípade použije aplikácia knižnicu ZXing Android Embedded, ktorá dekóduje QR kód s URL odkazom. Po načítaní URL prichádza na rad stiahnutie XML súboru a jeho parsovanie pomocou triedy XmlPullParser. Tá XML súbor číta ria- dok po riadku a vína postupne pridáva do Listu, ktorý je následne zobrazený vo fragmente degustačného lístka.

6.4.5 CompleteOfferFragment

Druhým fragmentom je kompletná ponuka vínnej pivnice. Vzhľadom na to, že kompletná ponuka je jednotná pre všetkých zákazníkov bez ohľadu na čas, nie je nutné načítavanie URL odkazu. Ten je po celú dobu rovnaký a uložený ako atribút entity WineCellar. Pri načíta- vaní XML súboru, na ktoré URL odkazuje, je scenár rovnaký ako pri degustačnom lístku.

6.4.6 ShoppingCartFragment

Ďalším fragmentom v poradí je nákupný košík, ktorý obsahuje všetky vína z degustačného lístka, prípadne kompletnej ponuky, pri ktorých užívateľ zadal záujem aspoň o jednu fľašu (obrázok 6.3). Pri vyvolaní objednávky sa otvorí mailová aplikácia s vopred vy- plnenými poľami nového emailu. Cieľová emailová adresa je adresa majiteľa vínnej pivnice a je jedným z atribútov entity WineCellar. Predmetom sa stáva meno a priezvisko kupujúceho, ktoré aplikácia zistí práve z prihláseného Google účtu. Text emailu tvoria objednané vína s počtom kusov a celkovou cenou.

6.4.7 HistoryFragment

V poradí štvrtým fragmentom je história návštev a nákupov (obrá- zok 6.4). Aplikácia zobrazuje v prehľadnom zozname všetky návštevy vinárstiev, degustované vína a v prípade objednávky aj počet zakú- pených fliaš. Fragment taktiež umožňuje jednotlivé položky histórie chronologicky usporiadať.

31 6. Implementácia

Obr. 6.3: Nákupný košík Obr. 6.4: História

6.4.8 PreferencesFragment

Posledným fragmentom aplikácie je fragment s nastaveniami. Prvou možnosťou je nastavenie témy. Užívateľ si môže podľa svojich prefe- rencií vybrať medzi svetlou, prípadne tmavou témou. Každá aktivita pri svojom spustení kontroluje práve toto nastavenie a podľa neho prispôsobí svoj vzhľad. Druhým nastavením je prihlásenie do Google účtu. Aplikácia im- plementuje Google Sign-In a kliknutím do tohto nastavenia sa otvorí nová aktivita prihlásenia do služby Google, ktorá vráti úspešné pri- hlásenie s informáciami o účte, prípadne neúspešné prihlásenie do metódy onActivityResult().

32 6. Implementácia

6.4.9 AddWineActivity Aktivita AddWineAcitivity je vyvolaná v prípade, keď sa majiteľ roz- hodne priamo počas degustácie pridať na degustačný lístok nové víno. Po kliknutí na tlačidlo plus aktivita uvedie NFC čip do stavu čakania na NFC tag. Tie sú rozmiestnené po celej vínnej pivnici pri každom víne a obsahujú unikátnu šaržu daného vína. Po zaregistrovaní NFC tagu nájde aktivita k načítanej šarži celý objekt víno z kompletnej ponuky. Ten následne prevedie do JSON ob- jektu a pomocou serveru Firebase a jeho funkcií Cloud Messaging ho rozpošle všetkým návštevníkom. Tí notifikáciu s JSON objektom prijmú v metóde onMessageReceived(), aplikácia objekt rozparsuje a výsledné víno pridá na koniec degustačného lístka. Na prácu s ob- jektmi JSON je použitá knižnica Gson.

33

7 Záver

Cieľom tejto bakalárskej práce bolo vytvoriť aplikáciu pre mobilnú plat- formu Android, ktorá zjednoduší návštevníkovi vinárstva degustáciu vín a majiteľovi sprevádaznie hostí. Tento cieľ bol úspešne naplnený a aplikácia bola testovaná okrem samotného emulátoru aj na mno- hých fyzických zariadeniach rôznych značiek, denzít displejov, verzií operačného systému a podobne. Táto bakalárska práca mi umožnila spojiť všetky svoje znalosti z od- vetvia programovania na operačný systém Android získané z interne- tových tutoriálov do mojej prvej komplexnej aplikácie. Okrem iného som sa naučil implementovať NFC funkcionalitu priamo v aplikácii, prihlasovanie do Google účtu či prácu s knižnicami alebo serverom Firebase. Najbližším krokom bude publikácia v obchode Google Play, čím sa aplikácia stane dostupnejšia. Ďalším plánom je osloviť viaceré vínne pivnice a rozšíriť tak túto aplikáciu. Budúci vývoj samotnej aplikácie zahŕňa grafické zjednotenie ikon a pozadí či nový fragment srôz- nymi informáciami o konkrétnom vinárstve. Objednávku bude možné odoslať nie len emailom ale aj priamo na server pomocou REST API.

35

Bibliografia

1. Mobile/Tablet Market Share [online]. United States: Net Applications, 2017 [cit. 2017-05-04]. Dostupné z: https : / / www . netmarketshare.com/operating- system- market- share.aspx? qprid=8&qpcustomd=1. 2. Android History [online]. United States: Android Central, 2017 [cit. 2017-05-02]. Dostupné z: http://www.androidcentral.com/android- history. 3. Dashboard [online]. United States: Google Inc., 2017 [cit. 2017-05-04]. Dostupné z: https://developer.android.com/about/dashboards/ index.html. 4. Android (operačný systém) [online]. United States: Wikipedia Inc., 2017 [cit. 2017-05-04]. Dostupné z: https://sk.wikipedia.org/wiki/ Android_(opera%C4%8Dn%C3%BD_syst%C3%A9m). 5. Platform Architecture [online]. United States: Google Inc., 2017 [cit. 2017-05-03]. Dostupné z: https://developer.android.com/guide/ platform/index.html. 6. Application Fundamentals [online]. United States: Google Inc., 2017 [cit. 2017-05-03]. Dostupné z: https://developer.android.com/guide/ components/fundamentals.html. 7. BURNETTE, Ed. Hello, Android: Introducing Google’s Mobile Develop- ment Platform. 4th ed. United States: Pragmatic Bookshelf, 2015. ISBN 978-1-68050-037-0. 8. The Activity Lifecycle [online]. United States: Google Inc., 2017 [cit. 2017-05-07]. Dostupné z: https://developer.android.com/guide/ components/activities/activity-lifecycle.html. 9. Fragments [online]. United States: Google Inc., 2017 [cit. 2017-05-07]. Dostupné z: https://developer.android.com/guide/components/ fragments.html. 10. App Manifest [online]. United States: Google Inc., 2017 [cit. 2017-05-05]. Dostupné z: https://developer.android.com/guide/topics/ manifest/manifest-intro.html.

37 BIBLIOGRAFIA

11. Providing Resources [online]. United States: Google Inc., 2017 [cit. 2017-05-05]. Dostupné z: https://developer.android.com/guide/topics/ resources/providing-resources.html. 12. Layouts [online]. United States: Google Inc., 2017 [cit. 2017-05-07]. Do- stupné z: https://developer.android.com/guide/topics/ui/ declaring-layout.html. 13. Projects Overview [online]. United States: Google Inc., 2017 [cit. 2017-05-06]. Dostupné z: https://developer.android.com/studio/projects/ index.html. 14. JIM ARLOW, Ila Neustadt. UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design. 2nd ed. United States: Addison- Wesley Professional, 2005. ISBN 978-0321321275. 15. Material design [online]. United States: Google Inc., 2014 [cit. 2017-05-08]. Dostupné z: https://material.io/guidelines/#introduction- goals. 16. About Near Field Communication [online]. United States: Square, Inc., 2017 [cit. 2017-05-09]. Dostupné z: http://nearfieldcommunication. org/about-nfc.html. 17. NFC-Enabled Cellphone Shipments to Soar Fourfold in Next Five Years [online]. United States: IHS Technology, 2014 [cit. 2017-05-06]. Do- stupné z: https://technology.ihs.com/490062/nfc-enabled- cellphone-shipments-to-soar-fourfold-in-next-five-years. 18. WATERS, Joe. QR Codes For Dummies: Portable Edition. 1st ed. United States: For Dummies, 2012. ISBN 978-1-118-33703-5. 19. Sony Xperia sola officially announced with camera gestures and NFC tags [online]. United States: Android Community, 2012 [cit. 2017-05-09]. Dostupné z: https://androidcommunity.com/sony-xperia-sola- officially-announced-with-camera-gestures-and-nfc-tags- 20120313/. 20. Adding Sign-In [online]. United States: Google Inc., 2015 [cit. 2017-05-09]. Dostupné z: https://developer.android.com/training/sign- in/index.html. 21. Documentation [online]. United States: Google Inc., 2017 [cit. 2017-05-09]. Dostupné z: https://firebase.google.com/docs/.

38 BIBLIOGRAFIA

22. A Look at the New Firebase: A Powerful Google Platform [online]. United States: Sprouti, 2016 [cit. 2017-05-08]. Dostupné z: http://sprouti. com/sites/47544. 23. Meet Android Studio [online]. United States: Google Inc., 2016 [cit. 2017-05-10]. Dostupné z: https://developer.android.com/studio/ intro/index.html. 24. Configure Your Build [online]. United States: Google Inc., 2017 [cit. 2017-05-06]. Dostupné z: https://developer.android.com/studio/ build/index.html. 25. ZXing Android Embedded [online]. United States: GitHub, 2017 [cit. 2017-05-06]. Dostupné z: https : / / github . com / journeyapps / zxing-android-embedded. 26. MaterialShowcaseView [online]. United States: GitHub, 2017 [cit. 2017-05-06]. Dostupné z: https://github.com/deano2390/MaterialShowcaseView. 27. Picasso [online]. United States: GitHub, 2017 [cit. 2017-05-06]. Do- stupné z: http://square.github.io/picasso/. 28. OkHttp [online]. United States: GitHub, 2017 [cit. 2017-05-06]. Do- stupné z: http://square.github.io/okhttp/. 29. Gson User Guide [online]. United States: GitHub, 2017 [cit. 2017-05-06]. Dostupné z: https://github.com/google/gson/blob/master/ UserGuide.md.

39