Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Mobiln´ı klient pro syst´ em publikov´ an´ı gamebook˚ u
Plzeˇ n 2015
Pavel Pˇrib´an ˇ
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 4. kvˇetna 2015 Pavel Pˇrib´an ˇ
Podˇ ekov´ an´ı R´ad bych podˇekoval Ing. Ladislavu Peˇsiˇckovi za vstˇr´ıcnost, trpˇelivost, odborn´e rady a cenn´e pˇripom´ınky, kter´e mi pomohly tuto bakal´aˇrskou pr´aci vypracovat.
Abstract The purpose of this bachelor thesis is to create mobile client (application) for the Android platform, which can read gamebooks that are created in the system which is being developed. Gamebook is a book that allows reader to make decisions and partly influence the story of the book. In the first part of this work there is a comparison of applications that can read gamebooks. The second part describes the system for creating and publishing gamebooks which is being developed. Mobile client is part of this system. The last part contains design of the client and description of implementation including verification of functionality.
Abstrakt C´ılem t´eto bakal´aˇrsk´e pr´ace je vytvoˇrit mobiln´ıho klienta (aplikaci) pro platformu Android, kter´ y umoˇzn ˇuje proch´azet gamebooky vytvoˇren´e ve vyv´ıjen´em syst´emu. Gamebook je kniha, ve kter´e se ˇcten´aˇr rozhoduje jak se bude pˇr´ıbˇeh vyv´ıjet. V prvn´ı ˇc´asti pr´ace jsou porovn´any nˇekter´e dostupn´e aplikace, kter´e umoˇzn ˇuj´ı proch´azen´ı gamebook˚ u. Druh´a ˇc´ast pr´ace popisuje vyv´ıjen´ y syst´em, ve kter´em je moˇzn´e gamebooky vytv´aˇret a publikovat. Souˇca´st´ı tohoto syst´emu je i mobiln´ı klient. Posledn´ı ˇc´ast obsahuje n´avrh klienta a popis implementace vˇcetnˇe ovˇeˇren´ı jeho funkcionality.
Obsah ´ 1 Uvod 1.1 C´ıle pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Existuj´ıc´ı aplikace 2.1 Charakteristika gamebooku . . . . . . . 2.2 Vybran´e mobiln´ı aplikace . . . . . . . . . 2.2.1 Aplikace The Forging of a Legend 2.2.2 Aplikace Choice of Broadsides . . 2.2.3 Aplikace Lone Wolf Saga . . . . . 2.3 Srovn´an´ı testovan´ ych aplikac´ı . . . . . . 3 Syst´ em pro publikov´ an´ı gamebook˚ u 3.1 Program pro tvorbu gamebooku . . 3.2 Server . . . . . . . . . . . . . . . . 3.2.1 Sluˇzby pro editor . . . . . . 3.2.2 Uˇzivatelsk´e sluˇzby . . . . . 3.2.3 Sluˇzby pro mobiln´ıho klienta 3.3 Mobiln´ı klient . . . . . . . . . . . . 3.4 Reprezentace gamebooku . . . . . . 3.4.1 Struktura XML souboru . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1 1
. . . . . .
2 2 3 3 5 7 10
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
12 13 13 13 14 14 14 16 16
4 N´ avrh mobiln´ıho klienta 4.1 N´avrh s´ıt’ov´e komunikace . . . . . . . . . 4.1.1 Moˇznosti s´ıt’ov´e komunikace . . . 4.1.2 Dostupn´e knihovny . . . . . . . . 4.1.3 Vybran´e ˇreˇsen´ı s´ıt’ov´e komunikace 4.2 Zp˚ usob uloˇzen´ı dat . . . . . . . . . . . . 4.2.1 Sd´ılen´e preference . . . . . . . . . 4.2.2 Ukl´ad´an´ı soubor˚ u . . . . . . . . . 4.2.3 Datab´aze SQLite . . . . . . . . . 4.2.4 Zvolen´ y zp˚ usob pro uloˇzen´ı dat . 4.3 N´avrh UI . . . . . . . . . . . . . . . . . 4.3.1 Aktivita MenuActivity . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
18 19 19 20 22 22 22 24 25 25 26 28
. . . . . . . .
. . . . . . . .
OBSAH
OBSAH 4.3.2 4.3.3 4.3.4 4.3.5
Aktivita GameActivity . . . Aktivita LibraryActivity . . Ostatn´ı aktivity . . . . . . . Pˇr´ıprava grafick´ ych soubor˚ u
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
28 28 29 30
5 Realizace mobiln´ıho klienta 5.1 Struktura aplikace . . . . . . . . . . . . . . . . 5.1.1 Soubor AndroidManifest.xml . . . . . . . 5.2 Pouˇzit´e knihovny . . . . . . . . . . . . . . . . . 5.2.1 Knihovna logback-android . . . . . . . . 5.2.2 Knihovna ActionBarSherlock . . . . . . 5.2.3 Knihovna Nine Old Androids . . . . . . 5.2.4 Knihovna ViewPagerIndicator . . . . . . 5.2.5 Knihovna SlidingMenu . . . . . . . . . . 5.3 Implementace SQLite datab´aze . . . . . . . . . 5.3.1 Vytvoˇren´ı datab´aze . . . . . . . . . . . . 5.3.2 Pˇr´ıstup k dat˚ um . . . . . . . . . . . . . 5.4 Uˇzivatelsk´e funkce . . . . . . . . . . . . . . . . 5.4.1 Import gamebook˚ u . . . . . . . . . . . . 5.4.2 Proch´azen´ı gamebooku . . . . . . . . . . 5.4.3 Knihovna . . . . . . . . . . . . . . . . . 5.5 S´ıt’ov´a komunikace . . . . . . . . . . . . . . . . 5.5.1 Implementace knihovny Volley . . . . . . 5.5.2 Z´ısk´an´ı seznamu dostupn´ ych gamebook˚ u 5.5.3 Staˇzen´ı gamebooku . . . . . . . . . . . . 5.5.4 Hodnocen´ı gamebooku . . . . . . . . . . 5.6 Nastaven´ı aplikace . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
31 31 31 32 32 33 33 33 33 34 35 35 35 36 36 38 38 38 38 39 40 40
. . . . .
42 42 43 43 44 44
6 Testov´ an´ı 6.1 Pr˚ ubˇeh testov´an´ı . . . . . . . . . . 6.2 Testov´an´ı nestandardn´ıch ud´alost´ı . 6.3 V´ ysledky testov´an´ı . . . . . . . . . 6.3.1 Nestandardn´ı ud´alosti . . . 6.4 Moˇzn´a rozˇs´ıˇren´ı . . . . . . . . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
7 Z´ avˇ er
45
Seznam pouˇ zit´ ych zkratek a v´ yraz˚ u
46
Literatura
48
Seznam pˇ r´ıloh
50
OBSAH A Uˇ zivatelsk´ a pˇ r´ıruˇ cka A.1 Poˇzadavky aplikace . . . . . . A.2 Instalace . . . . . . . . . . . . A.3 Ovl´ad´an´ı aplikace . . . . . . . A.3.1 Proch´azen´ı gamebooku A.3.2 Knihovna . . . . . . . A.3.3 Nastaven´ı aplikace . .
OBSAH
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
51 51 51 51 53 54 56
B Obsah CD
60
C Pouˇ zit´ e knihovny
61
´ 1 Uvod V dneˇsn´ı dobˇe vlastn´ı t´emˇeˇr kaˇzd´ y tzv. chytr´ y“ telefon, kter´ y kromˇe telefonov´an´ı ” a psan´ı zpr´av poskytuje mnoho jin´ ych funkc´ı. V´ yrobci a program´atoˇri se snaˇz´ı mnoho ˇcinnost´ı, u ´kon˚ u a n´astroj˚ u bˇeˇzn´eho ˇzivota pˇretransformovat do mobiln´ıch aplikac´ı tak, aby tyto funkce a n´astroje byly kdekoliv a kdykoliv snadno pˇr´ıstupn´e pomoc´ı mobiln´ıho zaˇr´ızen´ı, napˇr. mapy, digit´aln´ı fotoapar´at, bud´ık, r´adio a mnoh´e dalˇs´ı. Jinak tomu nen´ı ani u gamebook˚ u. Gamebook je kniha, ve kter´e se ˇcten´aˇr rozhoduje, jak se bude pˇr´ıbˇeh d´ale vyv´ıjet a do jist´e m´ıry si tak pˇr´ıbˇeh knihy urˇcuje s´am. Po pˇreˇcten´ı urˇcit´e ˇca´sti textu jsou hr´aˇci nab´ıdnuty moˇznosti, pro kter´e se m˚ uˇze rozhodnout. V´ ybˇerem jedn´e z tˇechto moˇznost´ı je hr´aˇc odk´az´an na jinou ˇca´st textu, kter´a na rozhodnut´ı navazuje. T´ımto stylem je vytvoˇrena cel´a kniha. Nˇekter´a rozhodnut´ı mohou z´aviset tak´e na n´ahodˇe, napˇr. hr´aˇc mus´ı hodit kostkou a podle v´ ysledku je odk´az´an d´ale. Spolu s dalˇs´ımi hern´ımi prvky, napˇr. souboji hlavn´ı postavy, je gamebook moˇzn´e oznaˇcit za textovou hru.
1.1
C´ıle pr´ ace
Jedn´ım z c´ıl˚ u t´eto pr´ace je prozkoumat vybran´e mobiln´ı aplikace, kter´e umoˇzn ˇuj´ı proch´azen´ı gamebook˚ u. Dalˇs´ım c´ılem t´eto pr´ace je popsat vyv´ıjen´ y syst´em, kter´ y umoˇzn ˇuje gamebooky vytv´aˇret a publikovat (ˇc´ıst, hr´at). Smyslem popisu syst´emu je vysvˇetlit jeho z´akladn´ı principy fungov´an´ı. Souˇc´ast´ı vyv´ıjen´eho syst´emu bude mobiln´ı klient (mobiln´ı aplikace), kter´ y umoˇzn ˇuje gamebooky vytvoˇren´e pomoc´ı tohoto syst´emu proch´azet. N´avrh a implementace mobiln´ıho klienta je hlavn´ım c´ılem t´eto pr´ace. Po popisu vyv´ıjen´eho syst´emu bude vybr´ana vhodn´a funkcionalita, kterou by mobiln´ı klient mˇel obsahovat. N´aslednˇe bude pops´an n´avrh t´eto funkcionality pro platformu Android. V posledn´ı ˇca´sti pr´ace bude uk´az´ana a vysvˇetlena implementace mobiln´ıho klienta spolu s popisem ovˇeˇren´ı jeho funkcionality. Po pˇreˇcten´ı t´eto pr´ace by mˇel ˇcten´aˇr pochopit, jak´ ym zp˚ usobem vyv´ıjen´ y syst´em bude fungovat a jak´e jsou jeho souˇc´asti. D´ale by se mˇel dozvˇedˇet jakou funkcionalitu mobiln´ı klient obsahuje a jak je tato funkcionalita navrˇzena. Z popisu implementace by mˇel b´ yt pochopen princip, jak´ ym je mobiln´ı klient (aplikace) implementov´an na platformˇe Android.
1
2 Existuj´ıc´ı aplikace D˚ uvodem k prozkoum´an´ı vybran´ ych mobiln´ıch aplikac´ı (umoˇzn ˇuj´ıc´ıch proch´azen´ı gamebooku) je z´ıskat obecn´ y pˇrehled o tˇechto aplikac´ıch (popˇr. syst´emech pro v´ yvoj nebo publikov´an´ı gamebooku), jejich funkˇcnostech a moˇznostech, kter´e nab´ız´ı. Ze z´ıskan´ ych informac´ı je pak moˇzn´e se pˇri implementaci vlastn´ıho mobiln´ı klienta (popˇr. cel´eho syst´emu) inspirovat. Mobiln´ı klient vyv´ıjen´eho syst´emu bude realizov´an na platformˇe Android, proto byl v´ ybˇer existuj´ıc´ıch aplikac´ı, kter´e umoˇzn ˇuj´ı proch´azen´ı gamebook˚ u, zamˇeˇren v´ yhradnˇe na aplikace spustiteln´e na platformˇe Android.
2.1
Charakteristika gamebooku
Gamebook je kniha, kter´a umoˇzn ˇuje ˇcten´aˇri pˇri ˇcten´ı pˇr´ıbˇehu prov´adˇet rozhodnut´ı, kter´a ovlivn´ı v´ yvoj pˇr´ıbˇehu knihy. Zpravidla je kniha ˇclenˇena do odstavc˚ u a kaˇzd´ y odstavec je oˇc´ıslov´an. Po pˇreˇcten´ı odstavce m´a ˇcten´aˇr na v´ ybˇer nˇekolik moˇznost´ı, pro kter´e se m˚ uˇze rozhodnout. Kaˇzd´a moˇznost je oˇc´ıslov´ana. Toto ˇc´ıslo oznaˇcuje ˇ aˇr najde dan´ odstavec, ve kter´em pˇr´ıbˇeh pokraˇcuje pro danou volbu. Cten´ y odstavec a pokraˇcuje v ˇcetbˇe. Pˇr´ıbˇeh se t´ımto zp˚ usobem vˇetv´ı a vznik´a orientovan´ y graf. Orientovan´ y graf [4] je koneˇcn´a mnoˇzina, jej´ıˇz prvky naz´ yv´ame vrcholy (uzly) grafu a hrany grafu. Hrany spojuj´ı jednotliv´e vrcholy, kaˇzd´a hrana m´a urˇcen´ y smˇer a mezi dvˇema vrcholy existuje v jednom smˇeru pouze jedna hrana. Protoˇze ˇcten´aˇr vytv´aˇr´ı rozhodnut´ı a dˇej se vˇetv´ı, tak kniha m˚ uˇze m´ıt v´ıce alternativn´ıch konc˚ u. Pˇri rozhoˇ aˇr pˇri ˇcten´ı m˚ dov´an´ı m˚ uˇze b´ yt tak´e pouˇzit n´ahodn´ y jev. Cten´ uˇze narazit na pokyn od autora, aby pro dalˇs´ı volbu hodil hrac´ı kostkou. Podle toho jak´e ˇc´ıslo na kostce padne, pak ˇcten´aˇr pozn´a, ve kter´em odstavci m´a pokraˇcovat. Hrac´ı kostka m˚ uˇze b´ yt standardn´ı ˇsestistˇenn´a nebo v´ıcestˇenn´a, z´aleˇz´ı na autorovi. Vu ´vodu knihy je ˇcten´aˇr sezn´amen se z´apletkou, prostˇred´ım a hlavn´ı postavou. V nˇekter´ ych knih´ach je moˇzn´e vlastnosti postavy na zaˇc´atku knihy upravit. Vlastnostmi jsou myˇsleny atributy, napˇr. zdrav´ı postavy, s´ıla, inteligence nebo schopnost, kterou postava ovl´ad´a. Pouˇz´ıvan´e vlastnosti nejsou jednoznaˇcnˇe urˇceny a v r˚ uzn´ ych knih´ach se mohou liˇsit. Vlastnosti mohou b´ yt upraveny n´ahodnˇe pomoc´ı hrac´ı kostky a hozen´e hodnoty budou postavˇe pˇriˇcteny k dan´e vlastnosti. Druhou moˇznost´ı je, ˇze hr´aˇc dostane koneˇcn´ y poˇcet bod˚ u, kter´e m˚ uˇze mezi jednotliv´e vlastnosti rozdˇelit. V pr˚ ubˇehu ˇcten´ı, se vlastnosti postavy mohou na z´akladˇe dˇeje mˇenit. Pˇr´ıbˇehy obvykle tak´e obsahuj´ı souboje s nepˇr´ateli, kteˇr´ı se v pˇr´ıbˇehu vyskytuj´ı. Zda ˇcten´aˇr (hr´aˇc) v souboji uspˇeje z´aleˇz´ı na jeho vlastnostech a na n´ahodˇe (napˇr. hodu kostkou). Proto se tˇemto knih´am ˇr´ık´a gamebook z anglick´eho slova game, tedy hra. ˇ anr gamebooku je vˇetˇsinou ps´an Gamebook je tedy moˇzn´e oznaˇcit za textovou hru. Z´ 2
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
ve stylu fantasy nebo sci-fi, ale nen´ı to podm´ınkou. Autor m˚ uˇze zvolit jak´ ykoliv jin´ y ˇz´anr.
2.2
Vybran´ e mobiln´ı aplikace
V n´asleduj´ıc´ıch podkapitol´ach budou pops´any mobiln´ı aplikace, kter´e umoˇzn ˇuj´ı proch´azen´ı gamebook˚ u na platformˇe Android. Vybran´e aplikace pro srovn´an´ı jsou n´asleduj´ıc´ı: 1. The Forging of a Legend dostupn´e z https://play.google.com/store/apps/ details?id=com.gamebook, 2. Choice of Broadsides dostupn´e z https://play.google.com/store/apps/ details?id=com.choiceofgames.broadsides, 3. Lone Wolf Saga dostupn´e z https://play.google.com/store/apps/details? id=com.GDVGames.LoneWolfBiblio. V´ yˇse uveden´e aplikace jsou dostupn´e z obchodu Google play (dostupn´ y z https: //play.google.com), kter´ y je ofici´aln´ım n´astrojem platformy Android pro distribuci aplikac´ı. Vˇsechny aplikace obsahuj´ı pˇr´ıbˇeh v angliˇctinˇe, popˇr. nav´ıc obsahuj´ı i jin´e jazykov´e verze, ale nepodaˇrilo se nal´ezt gamebook aplikaci s pˇr´ıbˇehem v ˇcesk´em jazyce. Aplikace byly testov´any na zaˇr´ızen´ıch Samsung GT-S5839i a Samsung GTS6500 s verz´ı 2.3.6 (Gingerbread) platformy Android a na zaˇr´ızen´ı Sony Xperia M obsahuj´ıc´ı verzi 4.3 (Jelly Bean). Testov´an´ı bylo pˇredevˇs´ım zamˇeˇreno na pohodlnost ovl´ad´an´ı, grafickou str´anku aplikace a hern´ı moˇznosti hr´aˇce. Pˇr´ıbˇeh a ˇz´anr, kter´ y byl v dan´e aplikaci, nebyl posuzov´an, protoˇze to nen´ı c´ılem t´eto pr´ace.
2.2.1
Aplikace The Forging of a Legend
Prvn´ı testovan´a aplikace se jmenuje The Forging of a Legend. Velikost instalace je 10 MB a minim´aln´ı vyˇzadovan´a verze Androidu je 1.6 (Donut). Tento gamebook je moˇzn´e ˇc´ıst (hr´at) v katal´anˇstinˇe, ˇspanˇelˇstinˇe a angliˇctinˇe. Aplikace je dostupn´a zdarma. Ovl´ad´an´ı aplikace nebylo bezchybn´e. Po kliknut´ı na tlaˇc´ıtko nebylo poznat, zda tlaˇc´ıtko bylo opravdu stisknuto, chybˇela zde reakce na stisk, napˇr. zmˇena barvy tlaˇc´ıtka. Tlaˇc´ıtka byla rozm´ıstˇena bl´ızko sebe a nˇekolikr´at se stalo, ˇze bylo stisknuto tlaˇc´ıtko jin´e, neˇz bylo zam´ yˇsleno. Pˇri ˇcten´ı delˇs´ıho textu bylo nutn´e pˇrech´azet na 3
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
dalˇs´ı obrazovku (ot´aˇcet str´anku), ale aplikace obˇcas na pˇretaˇzen´ı prstu nereagovala. Bohuˇzel aplikace neumoˇzn ˇovala ˇcten´ı pˇri tzv. landscape orientaci obrazovky (zobrazen´ı obrazovky na ˇs´ıˇrku), ale pouze v portrait orientaci, tj. zobrazen´ı obrazovky na v´ yˇsku (viz [1]). V´ ybˇer moˇznosti rozhodnut´ı je um´ıstˇen na konci str´anky pod textem, viz obr. 2.1. Velmi praktick´a byla moˇznost zmenˇsit nebo zvˇetˇsit p´ısmo textu knihy.
Obr´azek 2.1: Uk´azka z aplikace The Forging of a Legend
Obr´azek 2.2: Uk´azka animace z aplikace The Forging of a Legend
Grafick´ y vzhled aplikace p˚ usob´ı pˇr´ıjemnˇe a pˇrehlednˇe, v´ yznam jednotliv´ ych ikon na hrac´ı ploˇse je snadno rozpoznateln´ y. Aplikace obsahuje jednoduch´e animace, napˇr´ıklad hod kostkou (obr. 2.2) nebo efekt otoˇcen´ı str´anky pˇri pˇrechodu na jinou obrazovku. Tyto animace jsou doprov´azeny zvukov´ ym efektem. U nˇekter´ ych ˇc´ast´ı textu jsou zobrazeny obr´azky souvisej´ıc´ı s textem, kter´e jsou um´ıstˇeny na konci str´anky pod textem nebo zab´ıraj´ı celou obrazovku. Tyto obr´azky ˇcten´ı velmi oˇziv´ı. Vˇetˇsina postav v tomto gamebooku m´a sv˚ uj obr´azek, kter´ y se zobraz´ı kdyˇz postavu poprv´e potk´ate, viz obr. 2.3. Hern´ı obrazovka, viz obr. 2.1 nebo 2.3, je rozdˇelena na tˇri ˇca´sti, v horn´ı liˇstˇe jsou um´ıstˇeny ikony, kter´e slouˇz´ı pro uloˇzen´ı hry, proch´azen´ı obr´azk˚ u objeven´ ych postav apod. Kromˇe ukl´ad´an´ı hry nemaj´ı tyto funkce ve hˇre ˇz´adn´ y praktick´ y v´ yznam a slouˇz´ı pouze jen jako doplˇ nky a dodateˇcn´e informace pro hr´aˇce. Uprostˇred obrazovky se zobrazuje text a obr´azky. Na doln´ı liˇstˇe jsou um´ıstˇeny dvˇe ikony, pomoc´ı kter´ ych lze zvˇetˇsovat nebo zmenˇsovat text a ikonka soci´aln´ı s´ıtˇe facebook, kter´a umoˇzn ˇuje sd´ılet nˇekter´e ud´alosti ze hry na t´eto soci´aln´ı s´ıti.
4
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
Obr´azek 2.3: Uk´azka obr´azku postavy z aplikace The Forging of a Legend Na poˇca´tku hry m´a hr´aˇc moˇznost nechat si atributy postavy automaticky n´ahodnˇe vygenerovat nebo m˚ uˇze pro kaˇzd´ y atribut h´azet kostkami. Ve hˇre jsou vˇzdy pouˇz´ıv´any dvˇe ˇsestistˇenn´e kostky. Souˇcet tˇechto dvou hozen´ ych hodnot je hr´aˇci pˇriˇcten k dan´emu atributu. V pr˚ ubˇehu hry m˚ uˇze hr´aˇc z´ısk´avat pˇredmˇety, kter´e tyto atributy vylepˇs´ı, a nebo mohou b´ yt tyto atributy ve hˇre vylepˇseny po skonˇcen´ı nˇejak´e ud´alosti, napˇr. po skonˇcen´ı boje. Pˇri souboj´ıch se vyuˇz´ıv´a pouze kostek. Hr´aˇc m´a lich´ y poˇcet pokus˚ u a mus´ı vyhr´at vˇzdy v´ıce neˇz polovinu z nich. Pokus je vyhr´an tak, ˇze hr´aˇc mus´ı hodit hodnotu stejnou nebo vyˇsˇs´ı neˇz je zadan´a. Pokud hod´ı menˇs´ı, pokus je ne´ uspˇeˇsn´ y. V pr˚ ubˇehu hry bylo nabyto dojmu, ˇze z´ıskan´e atributy postavy nemaj´ı na souboje ˇza´dn´ y vliv a jsou pouze o n´ahodˇe. Hru je moˇzn´e bˇehem ˇcten´ı ukl´adat, ale pouze tˇrikr´at za celou hru. Hra je automaticky uloˇzena pˇred kaˇzd´ ym soubojem a tˇri moˇznosti uloˇzen´ı tak nemaj´ı vˇetˇs´ı v´ yznam. Pokud by se hra neukl´adala automaticky a mohl ji ukl´adat pouze hr´aˇc jen tˇrikr´at za celou hru, pak by hra byla mnohem obt´ıˇznˇejˇs´ı a pˇredevˇs´ım zaj´ımavˇejˇs´ı.
2.2.2
Aplikace Choice of Broadsides
Druh´a testovan´a aplikace se jmenuje Choice of Broadsides. Velikost jej´ı instalace je 4.6 MB a minim´aln´ı potˇrebn´a verze Androidu je 2.3 (Gingerbread). Aplikace je dostupn´a v angliˇctinˇe a byla vyvinuta spoleˇcnost´ı Choice of Games LLC.
5
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
Tato spoleˇcnost uˇz vydala pˇres 20 podobn´ ych gamebookov´ ych aplikac´ı. Aplikace jsou v podstatˇe stejn´e, liˇs´ı se pouze t´ematem, ˇza´nrem a obsahem text˚ u. Spoleˇcnost pro psan´ı pˇr´ıbˇeh˚ u vyvinula vlastn´ı skriptovac´ı jazyk ChoiceScript, v´ıce informac´ı viz [5]. Aplikace je dostupn´a zdarma, ale obsahuje reklamy, kter´e je moˇzn´e odstranit zaplacen´ım poplatku. Ovl´ad´an´ı t´eto aplikace je velmi jednoduch´e a umoˇzn ˇuje pouze ˇc´ıst text a rozhodovat se. Pod textem pro danou ˇc´ast odstavce jsou um´ıstˇeny volby, kter´e hr´aˇc m˚ uˇze prov´est, viz obr. 2.4. Uˇzivatel mus´ı nejdˇr´ıve kliknout na danou volbu, a pot´e kliknut´ım na tlaˇc´ıtko pod tˇemito volbami v´ ybˇer potvrdit. Pot´e je hr´aˇci zobrazena obrazovka s nov´ ym textem. V aplikaci nen´ı moˇzn´e prov´adˇet ˇza´dn´a nastaven´ı, napˇr. velikost textu. Aplikace se skl´ad´a z hlavn´ı (hern´ı) obrazovky, d´ale z obrazovky, na kter´e jsou zobrazeny statistiky postavy a z kontextov´eho menu (na zaˇr´ızen´ıch s verz´ı 3.0 (Honeycomb) a vyˇsˇs´ıch je nahrazeno Action Barem). Action Bar je grafick´a komponenta (liˇsta) v horn´ı ˇca´sti obrazovky (pˇr´ıpadnˇe i doln´ı), kter´a by uˇzivateli mˇela usnadnit navigaci v aplikaci a poskytnout pˇr´ım´ y pˇr´ıstup k d˚ uleˇzit´ ym n´astroj˚ um a funkc´ım aplikace. Toto menu obsahuje tlaˇc´ıtko pro restart hry, odkazy na podobn´e aplikace od t´eto firmy, zaplacen´ı za odebr´an´ı reklam z aplikace a dalˇs´ı odkazy. Za v´ yhodu se d´a povaˇzovat to, ˇze aplikace jako jedin´a z testovan´ ych umoˇzn ˇuje ˇcten´ı textu v landscape orientaci obrazovky.
Obr´azek 2.4: Uk´azka z aplikace Choice of Broadsides
Obr´azek 2.5: Uk´azka statistik v aplikaci Choice of Broadsides
6
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
Grafika, tzn. obr´azky nebo ikony, nejsou v t´eto aplikaci pouˇzity a aplikace neobsahuje ˇz´adn´e animace ani zvukov´ y doprovod. Text je ˇclenˇen do pˇrehledn´ ych odstavc˚ u a ˇcten´ı delˇs´ıho textu je tak snadnˇejˇs´ı. Bohuˇzel zde chyb´ı moˇznost zvˇetˇsovat nebo zmenˇsovat velikost p´ısma jako u prvn´ı testovan´e aplikace. Vytvoˇren´ı postavy vˇcetnˇe statistik prob´ıh´a na zaˇc´atku tak, ˇze hr´aˇci jsou poloˇzeny ot´azky a nab´ıdnuty moˇzn´e odpovˇedi, ze kter´ ych si m˚ uˇze vybrat a podle vybran´e odpovˇedi se zlepˇs´ı urˇcit´a vlastnost (atribut) postavy. Uˇzivatel si tak´e mus´ı vybrat svoji slabinu, tzn. dan´a vlastnost se zhorˇs´ı. Schopnosti jsou ohodnoceny procenty, viz obr. 2.5. Vybran´e vlastnosti pak v pˇr´ıbˇehu pˇr´ımo ovlivˇ nuj´ı ˇsanci u ´spˇechu pˇri akci, na kter´e dan´a vlastnost z´avis´ı.
Obr´azek 2.6: Uk´azka z aplikace Lone Wolf Saga
2.2.3
Obr´azek 2.7: Uk´azka boje z aplikace Lone Wolf Saga
Aplikace Lone Wolf Saga
Dalˇs´ı testovanou aplikac´ı je Lone Wolf Saga. Velikost instalace je 7.1 MB, ale po instalaci aplikace je nutn´e jeˇstˇe st´ahnout datab´azi obsahuj´ıc´ı jednotliv´e gamebooky a obr´azky. Tato datab´aze m´a velikost pˇribliˇznˇe 20 MB. Aplikace je lokalizovan´a pouze do anglick´eho jazyka a je urˇcen´a pro zaˇr´ızen´ı s operaˇcn´ım syst´emem Android od verze 2.1 (Eclair). Aplikace je zdarma, ale je moˇzn´e finanˇcnˇe podpoˇrit v´ yvoj´aˇre a autora gamebooku nebo si koupit sloty pro ukl´ad´an´ı pr˚ ubˇehu hry. 7
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
Gamebooky, kter´e jsou obsaˇzeny v t´eto aplikaci existuj´ı tak´e jako fyzick´e knihy (http://lonewolf.mytago.cz/), kter´e jsou na rozd´ıl od aplikace pˇreloˇzeny i do ˇcesk´eho jazyka. ˇ Aplikace se ovl´ad´a pomoc´ı tlaˇc´ıtek rozm´ıstˇen´ ych na obrazovce. Cetba gamebooku prob´ıh´a podobnˇe jako u ostatn´ıch testovan´ ych aplikac´ı. Text je um´ıstˇen na obrazovce a na konci textu jsou tlaˇc´ıtka s moˇzn´ ymi volbami. Hod kostkou (nebo jak´ ykoliv jin´ y n´ahodn´ y jev) zde prob´ıh´a pouze pomoc´ı tlaˇc´ıtka (viz obr. 2.6) bez jak´ekoliv animace. Po stisknut´ı tlaˇc´ıtka je hr´aˇci ozn´amena vygenerovan´a n´ahodn´a hodnota a podle n´ı se hr´aˇci zpˇr´ıstupn´ı akce, kterou m˚ uˇze prov´est. Podobnˇe je implementov´an boj, viz obr. 2.7, kter´ y je moˇzn´e proch´azet po jednotliv´ ych kolech nebo nechat boj odsimulovat cel´ y najednou. Aplikace obsahuje tak´e nab´ıdku (Action Bar), ve kter´e jsou tlaˇc´ıtka pro zobrazen´ı mapy, restart hry, uloˇzen´ı hry a otevˇren´ı statistik a invent´aˇre postavy. Poˇrad´ı tˇechto tlaˇc´ıtek lze upravit v nastaven´ı tak, ˇze nˇekter´e funkce budou zobrazeny pˇr´ımo na obrazovce. Poˇrad´ı sice nem´a vliv na funkˇcnost, ale hr´aˇci m˚ uˇze umoˇznit pohodlnˇejˇs´ı pˇr´ıstup k dan´e vlastnosti.
Obr´azek 2.8: Uk´azka um´ıstˇen´ı obr´azku z aplikace Lone Wolf Saga Grafika je v aplikaci obsaˇzena ve formˇe obr´azk˚ u, kter´e se objevuj´ı mezi textem, viz obr. 2.8, a mapy oblasti, v n´ıˇz se pˇr´ıbˇeh odehr´av´a. Obr´azky jsou obsaˇzen´e v datab´azi, kterou je potˇreba pˇred zah´ajen´ım hry st´ahnout. Aplikace umoˇzn ˇuje nastavit r˚ uzn´a barevn´a sch´emata, kter´a zmˇen´ı barvu pozad´ı a barvu p´ısma. Je tak´e moˇzn´e mˇenit font p´ısma. Uˇzivatel si m˚ uˇze vybrat, zda bude text zobrazen v syst´emov´em fontu nebo v jednom ze dvou font˚ u aplikace. Text se ale u tˇechto dvou font˚ u velmi ˇspatnˇe 8
Existuj´ıc´ı aplikace
Vybran´e mobiln´ı aplikace
ˇcte, coˇz je v aplikaci, kter´a je zaloˇzena na ˇcetbˇe velk´a nev´ yhoda. Velikost textu je moˇzn´e tak´e nastavovat, ale pouze v nastaven´ı aplikace. Urˇcitˇe by bylo vhodnˇejˇs´ı mˇenit velikost textu pˇr´ımo ve hˇre jako u prvn´ı testovan´e aplikace. Text tak´e nen´ı moˇzn´e ˇc´ıst v landscape orientaci obrazovky.
Obr´azek 2.9: Uk´azka vytv´aˇren´ı profilu hr´aˇce v aplikaci Lone Wolf Saga
Obr´azek 2.10: Uk´azka, jak schopnost umoˇzn ˇuje v´ıce voleb v aplikaci Lone Wolf Saga
Pˇri prvn´ım spuˇstˇen´ı aplikace je uˇzivatel vyzv´an, aby st´ahl datab´azi obsahuj´ıc´ı gamebooky a obr´azky. Dokud datab´aze nen´ı staˇzena nen´ı moˇzn´e gamebooky proch´azet (hr´at). Staˇzen´ı datab´aze se prov´ad´ı v nastaven´ı aplikace. Datab´azi je moˇzn´e uloˇzit na intern´ı u ´loˇziˇstˇe zaˇr´ızen´ı i na pamˇet’ovou kartu. Dalˇs´ım krokem je vytvoˇren´ı profilu postavy. Profil˚ u je moˇzn´e vytvoˇrit v´ıce. Pˇri vytv´aˇren´ı profilu, viz obr. 2.9, je uˇzivatel vyzv´an k zad´an´ı jm´ena a vygenerov´an´ı n´ahodn´ ych hodnot pro dvˇe vlastnosti a to Combat skill (bojov´a dovednost) a Endurance (v´ ydrˇz). Tyto vlastnosti jsou pot´e vyuˇz´ıv´any v boji a boj pˇr´ımo ovlivˇ nuj´ı. Jako dalˇs´ı si mus´ı hr´aˇc zvolit 5 schopnost´ı, kter´e bude ovl´adat. Vybran´e schopnosti pak hr´aˇci pˇri nˇekter´ ych akc´ıch odemykaj´ı volbu nav´ıc, jak zobrazuje obr. 2.10, ze kter´eho je vidˇet, ˇze postava danou vlastnost´ı nedisponuje, a proto nem˚ uˇze vybrat posledn´ı volbu (tlaˇc´ıtko). V pr˚ ubˇehu hry se hr´aˇc m˚ uˇze dostat do f´aze hry, ve kter´em je nucen sn´ıst j´ıdlo, kter´e m´a v invent´aˇri. Pokud j´ıdlo nem´a, jsou mu odeˇcteny 3 body z v´ ydrˇze. Aplikace obsahuje v´ıce gamebook˚ u. Tyto gamebooky se postupnˇe otev´ıraj´ı po u ´spˇeˇsn´em dokonˇcen´ı pˇredchoz´ıch. Pokud je aplikace ukonˇcena, postup ve hˇre je zachov´an, ale pˇri smrti hlavn´ı postavy mus´ı 9
Existuj´ıc´ı aplikace
Srovn´an´ı testovan´ych aplikac´ı
b´ yt dan´ y gamebook hr´an od zaˇc´atku. Pouze v pˇr´ıpadˇe, ˇze je nav´ıc zakoupen slot pro ukl´ad´an´ı, je moˇzn´e naˇc´ıst i uloˇzenou pozici pˇred smrt´ı.
2.3
Srovn´ an´ı testovan´ ych aplikac´ı
Z porovn´avan´ ych aplikac´ı lze ohodnotit jako nejpropracovanˇejˇs´ı a nejpovedenˇejˇs´ı aplikaci Lone Wolf Saga, kter´a nab´ız´ı mnoho nastaven´ı (velikost p´ısma, pouˇzit´ y font, barevn´e sch´ema). Velikost aplikace je oproti ostatn´ım aplikac´ım pomˇernˇe vˇetˇs´ı, coˇz je d´ano t´ım, ˇze obsahuje tˇri gamebooky, kter´e jsou postupnˇe zpˇr´ıstupˇ nov´any po dokonˇcen´ı pˇredchoz´ıch. Vlastnosti postavy skuteˇcnˇe ovlivˇ nuj´ı pr˚ ubˇeh pˇr´ıbˇehu. Napˇr´ıklad pˇri boji atributy a vlastnosti postavy urˇcuj´ı ˇsanci na v´ yhru. To je rozd´ıl oproti aplikaci The Forging of a Legend, ve kter´e se zd´a, ˇze v´ ysledek boje z´aleˇz´ı pouze na n´ahodˇe. Jedin´e negativum u t´eto aplikace je neˇcitelnost nˇekter´ ych pouˇzit´ ych font˚ u. Druh´a testovan´a aplikace Choice of Broadsides je po grafick´e i hern´ı str´ance velmi jednoduch´a a nelze j´ı nic vytknout, i kdyˇz aplikace neobsahuje ˇza´dnou grafiku ani ˇza´dn´e moˇznosti nastaven´ı (moˇzn´a pr´avˇe pro jednoduchost ji nelze nic vytknout). Jednotliv´e volby jsou velmi dobˇre zpracov´any (mnoho moˇznost´ı, podrobnˇe pops´any). Jako jedin´a obsahuje moˇznost proch´azet gamebook v landscape orientaci obrazovky. Grafika v aplikaci The Forging of a Legend ˇcetbu velmi oˇzivuje a aplikace tak vypad´a velmi dobˇre. Na rozd´ıl od ostatn´ıch vybran´ ych aplikac´ı umoˇzn ˇuje sd´ılen´ı nebo vazbu na soci´aln´ı s´ıt’, coˇz je v dneˇsn´ı dobˇe u mobiln´ıch aplikac´ı obvykl´e. D´ıky porovn´an´ı tˇechto aplikac´ı, jsme z´ıskali pˇrehled o aplikac´ıch podobn´ ych t´e, kter´a bude realizov´ana jako mobiln´ı klient. Pˇri implementaci je tak moˇzn´e vyhnout se negativ˚ um, kter´a byla v testovan´ ych aplikac´ıch nalezeny. A naopak se inspirovat uˇziteˇcn´ ymi funkcemi z tˇechto aplikac´ı. Pˇrekvapuj´ıc´ı bylo zjiˇstˇen´ı, ˇze se nepodaˇrilo dohledat ˇz´adnou aplikaci s gamebookem v ˇcesk´em jazyce, ani naj´ıt veˇrejnˇe dostupn´ y syst´em, kter´ y se podob´a vyv´ıjen´emu syst´emu, a z´aroveˇ n by v nˇem bylo moˇzn´e napsat gamebook a vydat ho, at’ uˇz jako samostatnou aplikaci nebo jako ˇca´st aplikace. Spoleˇcnost (Choice of Games LLC), kter´a vytvoˇrila aplikaci Choice of Broadsides, umoˇzn ˇuje pomoc´ı sv´eho skriptovac´ıho jazyka ChoiceScript vytv´aˇret gamebooky, viz [5]. Vytvoˇren´ y gamebook, ale mus´ı b´ yt odesl´an emailem t´eto firmˇe a aˇz pot´e z nˇej firma vytvoˇr´ı aplikaci, kterou je moˇzn´e publikovat, ovˇsem vytvoˇren´ y gamebook mus´ı b´ yt pouze v anglick´em jazyce. D´ıky tomu zde vznik´a prostor pro vytvoˇren´ı syst´emu, kter´ y by umoˇzn ˇoval publikovat gamebooky i v jin´ ych jazyc´ıch neˇz v anglick´em. Vytv´aˇren´ı gamebook˚ u pomoc´ı tohoto syst´emu by mohlo b´ yt uˇzivatelsky pˇr´ıjemnˇejˇs´ı (napˇr. pomoc´ı programu s gra10
Existuj´ıc´ı aplikace
Srovn´an´ı testovan´ych aplikac´ı
fick´ ym rozhran´ım) a vyd´an´ı gamebooku by mohlo prob´ıhat automatizovanˇe. Protoˇze vyv´ıjen´ y syst´em by byl prvn´ı sv´eho druhu, mohl by b´ yt u ´spˇeˇsn´ y.
11
3 Syst´em pro publikov´an´ı gamebook˚ u Vyv´ıjen´ y syt´em pro publikov´an´ı gamebook˚ u (d´ale jen syst´em) se skl´ad´a ze tˇr´ı hlavn´ıch ˇc´ast´ı a je vyv´ıjen t´ ymem, kter´ y se zat´ım skl´ad´a ze dvou ˇclen˚ u, tj. Pavel Pˇrib´an ˇ a Jakub Sido. Prvn´ı ˇc´ast´ı syst´emu je program (editor), kter´ y umoˇzn ˇuje tvorbu gamebooku. Druhou ˇca´st´ı je server, na kter´em jsou gamebooky uloˇzeny. Posledn´ı ˇc´ast pˇredstavuje mobiln´ı klient (mobiln´ı aplikace), kter´ y umoˇzn ˇuje gamebooky proch´azet (hr´at, ˇc´ıst) a jeho realizace je pˇredmˇetem t´eto pr´ace. Jednotliv´e ˇca´sti syst´emu spolu mohou komunikovat prostˇrednictv´ım serveru, viz obr. 3.1, na kter´em jsou zn´azornˇeny jednotliv´e ˇca´sti syst´emu a naznaˇcena z´akladn´ı komunikace. V n´asleduj´ıc´ıch podkapitol´ach budou jednotliv´e ˇc´asti syst´emu pops´any podrobnˇeji.
Obr´azek 3.1: Sch´ema syst´emu pro publikov´an´ı gamebook˚ u
12
Syst´em pro publikov´an´ı gamebook˚ u
3.1
Program pro tvorbu gamebooku
Program pro tvorbu gamebooku
Program (d´ale jen editor) umoˇzn ˇuje registrovan´ ym uˇzivatel˚ um vytv´aˇret a publikovat gamebooky. Aby uˇzivatel mohl zaˇc´ıt ps´at gamebook, mus´ı se nejprve registrovat a st´ahnout editor. Pˇri vytv´aˇren´ı gamebooku je uˇzivatel v aplikaci ovˇeˇren pomoc´ı u ´daj˚ u zadan´ ych pˇri registraci. Editor je programov´an v jazyce JAVA, stejnˇe jako mobiln´ı klient. Obˇe aplikace (mobiln´ı klient a editor) vyuˇz´ıvaj´ı sd´ılenou knihovnu. Sd´ılen´a knihovna obsahuje nˇekter´e tˇr´ıdy a metody (napˇr. naˇc´ıt´an´ı souboru s gamebookem), jeˇz by bylo tˇreba implementovat v obou aplikac´ıch. Je tedy v´ yhodn´e vyuˇz´ıt stejn´ y zdrojov´ y k´od. Pouˇzit´ı sd´ılen´e knihovny je moˇzn´e, d´ıky tomu, ˇze SDK platformy Android je z ˇc´asti zaloˇzen´e na JDK. Sd´ılen´a knihovna je programov´ana pouze s vyuˇzit´ım vybran´ ych funkˇcnost´ı a n´astroj˚ u, kter´e jsou pr˚ unikem SDK a JDK. D´ıky tomu je moˇzn´e knihovnu vyuˇz´ıt v editoru i v mobiln´ım klientovi. SDK (Software Development Kit) je tvoˇren sadou n´astroj˚ u a API umoˇzn ˇuj´ıc´ı v´ yvoj aplikac´ı (zde pro platformu Android). JDK (Java Development Kit) obsahuje sadu z´akladn´ıch n´astroj˚ u pro v´ yvoj na platformˇe JAVA. API (Application Programming Interface) je rozhran´ı pro programov´an´ı aplikac´ı.
3.2
Server
Server poskytuje sluˇzby mobiln´ımu klientovi, editoru a uˇzivatel˚ um, kteˇr´ı syst´em vyuˇz´ıvaj´ı k tvorbˇe nebo editaci gamebook˚ u. Server je implementov´an jako webov´ y server. Pro komunikaci se serverem se vyuˇz´ıv´a protokol HTTP. Na serveru je tak´e um´ıstˇena MySQL datab´aze, ve kter´e jsou uloˇzeny jednotliv´e gamebooky, jejich hodnocen´ı, uˇzivatel´e, pˇreklady a korektury gamebook˚ u a dalˇs´ı informace. Pˇr´ıstup k tˇemto dat˚ um, tj. ˇcten´ı, z´apis a u ´prava, je poskytov´an jednotliv´ ym ˇc´astem syst´emu pomoc´ı n´ıˇze popsan´ ych sluˇzeb.
3.2.1
Sluˇ zby pro editor
Hlavn´ı sluˇzbou, kterou server poskytuje editoru, je moˇznost nahr´at vytvoˇren´ y gamebook na server a uloˇzit jej do datab´aze. Sluˇzby poskytovan´e editoru zde nebudou uvedeny podrobnˇe, protoˇze jsou urˇceny pro potˇreby editoru, jehoˇz detailn´ı popis nen´ı souˇca´st´ı t´eto pr´ace.
13
Syst´em pro publikov´an´ı gamebook˚ u
3.2.2
Mobiln´ı klient
Uˇ zivatelsk´ e sluˇ zby
Sluˇzby pro uˇzivatele budou implementov´any formou webov´ ych str´anek, kter´e jsou vyv´ıjen´e, ale zat´ım nejsou veˇrejnˇe dostupn´e. Po jejich dokonˇcen´ı budou dostupn´e z adresy http://malpal.cz/. Str´anky jsou programov´any pomoc´ı jazyka PHP a vyuˇzit´ı frameworku Nette. Framework pom´ah´a usnadnit a urychlit v´ yvoj softwaru tak, ˇze se v´ yvoj´aˇri snaˇz´ı poskytnout ˇreˇsen´ı rutinn´ıch ˇcinnost´ı a probl´em˚ u. Framework m˚ uˇze b´ yt obecnˇe knihovnou nebo ˇsablonou, kter´a se d´ale rozˇsiˇruje, popˇr. je vyuˇz´ıv´ano jej´ıch sluˇzeb. Aby uˇzivatel mohl zaˇc´ıt vytv´aˇret gamebooky, bude se muset nejprve na str´ank´ach zaregistrovat. Mezi ˇcinnosti, kter´e budou moci registrovan´ı uˇzivatel´e vykon´avat, patˇr´ı: • vytv´aˇren´ı gamebooku, • prov´adˇen´ı korektury pˇred vyd´an´ım gamebooku, • pˇrekl´ad´an´ı gamebooku do jin´eho jazyka. Pro vytv´aˇren´ı gamebooku je potˇreba m´ıt nainstalovan´ y editor na vlastn´ım poˇc´ıtaˇci. Pˇrekl´adat nebo prov´adˇet korekturu bude moˇzn´e pˇr´ımo na webov´ ych str´ank´ach. Korektura gamebooku se prov´ad´ı pˇred jeho vyd´an´ım. Korektor m´a za u ´kol gamebook zkontrolovat, a pˇr´ıpadnˇe opravit gramatick´e a pravopisn´e chyby.
3.2.3
Sluˇ zby pro mobiln´ıho klienta
Tyto sluˇzby jsou poskytov´any mobiln´ımu klientovi a jsou realizov´any pomoc´ı HTTP protokolu a dotaz˚ u prov´adˇen´ ych na webov´ y server. Webov´ y server na poˇzadovan´ y dotaz vygeneruje HTML str´anku, ze kter´e klient z´ısk´a informace, o nˇeˇz v dotazu ˇza´dal. Sluˇzby, kter´e server poskytuje pro mobiln´ıho klienta jsou: • vygenerovat seznam dostupn´ ych gamebook˚ u, • vygenerovat odkaz pro staˇzen´ı gamebooku, • pˇrijmout hodnocen´ı dan´eho gamebooku od klienta.
3.3
Mobiln´ı klient
´ Ukolem mobiln´ıho klienta je umoˇznit uˇzivatel˚ um (nejen registrovan´ ym v syst´emu) proch´azen´ı vytvoˇren´ ych gamebook˚ u na platformˇe Android. Pˇri instalaci klienta (apli14
Syst´em pro publikov´an´ı gamebook˚ u
Mobiln´ı klient
kace) by mˇela aplikace obsahovat nˇekter´e jiˇz hotov´e gamebooky. Tyto gamebooky budou distribuov´any spolu s aplikac´ı, protoˇze jejich autoˇri se pod´ıleli na testov´an´ı syst´emu v jeho poˇca´tc´ıch a byli prvn´ımi autory, proto budou takto zv´ yhodnˇeni. Pˇri vyd´an´ı (publikov´an´ı) nov´eho gamebooku by mˇela b´ yt aplikace schopna nov´ y gamebook do zaˇr´ızen´ı st´ahnout. Z´akladn´ı funkcionalitu klienta tedy budou tvoˇrit tyto dva body: • proch´azen´ı gamebook˚ u, • staˇzen´ı novˇe vydan´ ych gamebook˚ u. D´ale by aplikace mˇela uˇzivateli umoˇznit zpˇetnou vazbu, napˇr. moˇznost ohodnotit vytvoˇren´ y gamebook. Na obr´azku 3.2 je um´ıstˇen UML diagram pouˇzit´ı, kter´ y zn´azorˇ nuje z´akladn´ı funkcionalitu mobiln´ıho klienta. Realizace mobiln´ıho klienta je pˇredmˇetem t´eto bakal´aˇrsk´e pr´ace. Klient bude programov´an v jazyce JAVA, a jak bylo zm´ınˇeno v kap. 3.1, vyuˇz´ıv´a funkcionalitu sd´ılen´e knihovny. Podrobn´ y n´avrh mobiln´ıho klienta bude pops´an v kap. 4. UML (Unified Modeling Language) je univerz´aln´ı jazyk ” pro vizu´aln´ı modelov´an´ı syst´em˚ u“ [16], kter´ y se pouˇz´ıv´a pˇredevˇs´ım v softwarov´em inˇzen´ yrstv´ı. Pˇri vytv´aˇren´ı UML diagram˚ u v t´eto pr´aci jsem ˇcerpal z [16] a [17].
Mobilní klient Procházet gamebook
Stáhnout gamebook
Uživatel
Hodnotit gamebook
Smazat gamebook
Obr´azek 3.2: UML diagram pouˇzit´ı mobiln´ıho klienta
15
Server «system»
Syst´em pro publikov´an´ı gamebook˚ u
3.4
Reprezentace gamebooku
Reprezentace gamebooku
Gamebook v kniˇzn´ı (tiˇstˇen´e) podobˇe je uchov´av´an jako klasick´a kniha, ale uloˇzit vytvoˇren´ y elektronick´ y gamebook pouze jako text nen´ı pˇr´ıliˇs vhodn´e a to pˇredevˇs´ım z d˚ uvodu pozdˇejˇs´ıho zpracov´an´ı a proch´azen´ı gamebooku na jin´e ˇc´asti syst´emu (napˇr. mobiln´ım klientovi). Je proto potˇreba pouˇz´ıt sofistikovanˇejˇs´ı pˇr´ıstup. Proto byl pro reprezentaci gamebooku zvolen orientovan´ y graf, kter´ y je moˇzn´e pouˇz´ıt, jak bylo vysvˇetleno v kapitole 2.1. Vrcholem grafu je zde stav, neboli ˇc´ast textu, po kter´e n´asleduje rozhodnut´ı hr´aˇce. Hrany mezi vrcholy grafu pˇredstavuj´ı jednotliv´e akce (rozhodnut´ı), pro kter´e se m˚ uˇze hr´aˇc rozhodnout. Graf je reprezentov´an XML souborem, kter´ y je pops´an v kapitole 3.4.1. Protoˇze je graf ukl´ad´an do souboru typu XML, kter´ y je podporov´an mnoha programovac´ımi jazyky, bylo doc´ıleno toho, ˇze soubor je nez´avisl´ y na platformˇe, na kter´e je zpracov´av´an.
3.4.1
Struktura XML souboru
Koˇrenov´ ym elementem XML souboru je element ROOT, kter´ y obsahuje element Info. V tomto elementu jsou um´ıstˇeny poˇca´teˇcn´ı hodnoty atribut˚ u postavy, se kterou bude hr´aˇc gamebook proch´azet. Na stejn´e u ´rovni jako Info, je obsaˇzen element Graph, jehoˇz atributy obsahuj´ı informace o gamebooku (id, jm´eno autora, n´azev gamebooku atd.), viz uk´azka k´odu 3.1, na kter´e je pro ilustraci zobrazena zjednoduˇsen´a uk´azka souboru (neobsahuje vˇsechny elementy a atributy). Tento element (Graph) obsahuje vˇsechna data a informace dan´eho gamebooku. Uvnitˇr jsou vnoˇreny elementy State, kter´e pˇredstavuj´ı jednotliv´e stavy v grafu gamebooku (tj. ˇca´st textu, po kter´e se m˚ uˇze hr´aˇc rozhodnout, jak bude pokraˇcovat). Kaˇzd´ y takov´ y stav obsahuje elementy Action, tedy akce, kter´e m˚ uˇze hr´aˇc v dan´em stavu prov´est. V elementu Action jsou uloˇzen´e informace potˇrebn´e pro vyhodnocen´ı dan´e akce. Atribut id je jedineˇcn´ y identifik´ator akce v gamebooku a atribut finalID ud´av´a, do jak´eho dalˇs´ıho stavu se m´a pˇr´ıbˇeh pˇresunout po vykon´an´ı t´eto akce.
16
Syst´em pro publikov´an´ı gamebook˚ u
Reprezentace gamebooku
<State id="1" desc="P´ ıs ˇe se rok 1963. Do vesm´ ıru se pr´ avˇ e dostala 1. z ˇena."> ... Uk´azka k´odu 3.1: Zjednoduˇsen´a uk´azka struktury XML souboru
17
4 N´avrh mobiln´ıho klienta Mobiln´ı klient je pˇredmˇetem t´eto pr´ace a mˇel by obsahovat z´akladn´ı funkcionalitu, tj proch´azen´ı gamebooku, jeho hodnocen´ı a staˇzen´ı novˇe vydan´eho gamebooku, tak´e viz kap. 3.3. Mobiln´ı klient bude navrˇzen pro platformu Android od verze 2.3 (Gingerbread). Hlavn´ım d˚ uvodem pro v´ ybˇer platformy Android je pˇredevˇs´ım jej´ı vˇetˇsinov´ y pod´ıl na trhu s chytr´ ymi telefony, viz obr. 4.1 (data pˇrevzata z [2]). Jako nejniˇzˇs´ı podporovan´a verze byla zvolena verze 2.3, protoˇze pod´ıl mobiln´ıch zaˇr´ızen´ıch s operaˇcn´ım syst´emem s verz´ı 2.3 a v´ yˇse je tak´e vˇetˇsinov´ y, viz tab. 4.1 (data pˇrevzata z [13]). Dalˇs´ımi platformami, kter´e pˇrich´azely v u ´vahu pro v´ yvoj byly platformy iOS a Windows Phone.
Podíl operačních systémů chytrých telefonů za rok 2014 Ostatní 1%
Windows Phone 3%
iOS 15%
Android 81%
Obr´azek 4.1: Pod´ıl operaˇcn´ıch syst´em˚ u chytr´ ych telefon˚ u za rok 2014 Nev´ yhodou pˇri v´ yvoji aplikac´ı pro platformu iOS a n´asledn´em publikov´an´ı aplikace v ofici´aln´ım obchodˇe (App store) je nutnost vlastnit zaˇr´ızen´ı s operaˇcn´ım syst´emem OS X (dˇr´ıve Mac OS X), na kter´em prob´ıh´a v´ yvoj aplikace. Nev´ yhodou platformy Windows Phone je zat´ım jej´ı pomˇernˇe n´ızk´e rozˇs´ıˇren´ı mezi uˇzivateli oproti platformˇe Android. Jako v´ yhodu pˇri v´ yvoji pro platformu Android lze povaˇzovat rozs´ahlou dokumentaci, n´avody, uk´azky a doporuˇcen´ı pro v´ yvoj´aˇre, viz [1]. D´ıky velk´emu rozˇs´ıˇren´ı t´eto platformy a ˇsirok´e komunitˇe v´ yvoj´aˇr˚ u je moˇzn´e nal´ezt ˇreˇsen´ı mnoha probl´em˚ u i na neofici´aln´ıch f´orech, napˇr. stackoverflow viz [11].
18
N´avrh mobiln´ıho klienta
N´avrh s´ıt’ov´e komunikace
Verze
Kodov´ e jm´ eno
API
Pod´ıl
Souˇ cet
2.2 2.3.3 - 2.37 4.0.3 - 4.0.4 4.1.x 4.2.x 4.3 4.4 5.0
Froyo Gingerbread Ice Cream Sandwich
8 10 15 16 17 18 19 21
0.4% 6,9% 5,9% 17,3% 19,4% 5,9% 40,9% 3,3%
0.4%
Jelly Bean KitKat Lollipop
99,6%
Tabulka 4.1: Procentu´aln´ı zastoupen´ı jednotliv´ ych verz´ı platformy Android k 2. bˇreznu 2015
4.1
N´ avrh s´ıt’ov´ e komunikace
Pro n´avrh s´ıt’ov´e komunikace mezi mobiln´ım klientem a serverem je nejdˇr´ıve potˇreba definovat jak´a a jak velk´a data budou pˇren´aˇsena. Mezi serverem a klientem budou prob´ıhat tyto s´ıt’ov´e komunikace: 1. staˇzen´ı gamebooku ze serveru, 2. odesl´an´ı hodnocen´ı gamebooku uˇzivatelem, 3. staˇzen´ı seznamu dostupn´ ych gamebook˚ u ze serveru. Pˇredpokl´adan´a velikost textu gamebook˚ u je v ˇr´adech stovek kB aˇz jednotek MB. U tˇechto text˚ u by ale v budoucnu mˇela pˇrib´ yt jeˇstˇe grafika (obr´azky). Velikost v´ ysledn´eho souboru, kter´ y bude stahov´an, tak m˚ uˇze dos´ahnout aˇz des´ıtek MB. Tato (potenci´aln´ı) velikost mus´ı b´ yt pˇri n´avrhu zohlednˇena. Soubor bude stahov´an ve form´atu XML, pokud nebude obsahovat grafiku. Pokud bude spolu s gamebookem distribuov´ana grafika, budou vˇsechny soubory zkomprimov´any a zabaleny do archivu, kter´ y bude pˇren´aˇsen jako jedin´ y soubor. Pro body 2 a 3 by mˇelo platit, ˇze jsou to kr´atk´e textov´e soubory s velikost´ı v ˇra´dech jednotek kB.
4.1.1
Moˇ znosti s´ıt’ov´ e komunikace
Android API obsahuje standardn´ı bal´ık java.net z JDK, kter´ y slouˇz´ı pro s´ıt’ovou komunikaci. Z´akladn´ı tˇr´ıdou pro s´ıt’ovou komunikaci pomoc´ı protokolu HTTP (resp. 19
N´avrh mobiln´ıho klienta
N´avrh s´ıt’ov´e komunikace
HTTPS) je HttpURLConnection. Komunikovat lze tak´e pomoc´ı tzv. socket˚ u. Pro protokol TCP existuje tˇr´ıda Socket a protokol UDP vyuˇz´ıv´a tˇr´ıdu DatagramSocket. Sockety jsou n´astroje (API), kter´e se vyuˇz´ıvaj´ı v s´ıt’ov´e komunikaci zpravidla pro model klient - server. Oba protokoly (TCP, UDP) jsou zaˇrazeny do 4. (transportn´ı) u ´rovnˇe referenˇcn´ıho modelu ISO/OSI. HTTP je protokol 7. (aplikaˇcn´ı) vrstvy modelu ISO/OSI, viz [6].
4.1.2
Dostupn´ e knihovny
Pro zjednoduˇsen´ı s´ıt’ov´e komunikace pomoc´ı protokolu HTTP lze vyuˇz´ıt knihovnu Volley (dostupn´a z https://android.googlesource.com/platform/frameworks/ volley). Podle ofici´aln´ı dokumentace [12] by knihovna mˇela implementaci s´ıt’ov´e komunikace zjednoduˇsovat a urychlovat. Mezi nˇekter´e v´ yhody t´eto knihovny patˇr´ı: • asynchronn´ı zpracov´an´ı a vykon´an´ı s´ıt’ov´ ych dotaz˚ u, • implementovan´a cache pamˇet’ pro opakuj´ıc´ı se dotazy, • podpora v´ıce soubˇeˇzn´ ych s´ıt’ov´ ych spojen´ı, • podpora priority jednotliv´ ych dotaz˚ u. Zjednoduˇsen´ y sc´en´aˇr pouˇzit´ı knihovny pak m˚ uˇze prob´ıhat tak, ˇze nejprve je vytvoˇren tzv. Request (poˇzadavek, dotaz), tj. instance tˇr´ıdy Request, ve kter´em je definovan´a URL adresa serveru a dalˇs´ı parametry HTTP dotazu (napˇr. v´ ybˇer mezi HTTP metodami GET a POST). D´ale jsou pˇri vytv´aˇren´ı objektu pˇred´any instance dvou tˇr´ıd (tzv. posluchaˇc˚ u), kter´e implementuj´ı rozhran´ı Response.Listener a Response.ErrorListener. Metody tˇechto rozhran´ı jsou zavol´any po asynchronn´ım dokonˇcen´ı poˇzadavku. Metoda onResponse() posluchaˇce Response.Listener je zavol´ana pˇri u ´spˇeˇsn´em dokonˇcen´ı poˇzadavku a metoda onErrorResponse() druh´eho posluchaˇce je zavol´ana pˇri ne´ uspˇeˇsn´em dokonˇcen´ı. Vytvoˇren´ y objekt poˇzadavku je pˇrid´an do fronty poˇzadavk˚ u, kter´a je reprezentov´ana instanc´ı tˇr´ıdy RequestQueue. Pot´e je poˇzadavek asynchronnˇe zpracov´an knihovnou a je vyvol´ana jedna z v´ yˇse zm´ınˇen´ ych metod, viz obr. 4.2 (pˇrevzato z [12]). Dalˇs´ımi funkˇcnˇe podobn´ ymi knihovnami pro komunikaci na platformˇe Android jsou Retrofit (http://square.github.io/retrofit/) nebo tak´e OkHttp (http: //square.github.io/okhttp/). Pro dlouhotrvaj´ıc´ı stahov´an´ı poskytuje Android tzv. DownloadManager, coˇz je syst´emov´a sluˇzba. Sluˇzba v syst´emu Android je aplikace, kter´a bˇeˇz´ı na pozad´ı a nem´a vlastn´ı uˇzivatelsk´e rozhran´ı (UI). Tato sluˇzba zajist´ı staˇzen´ı souboru i pˇri v´ ypadku 20
N´avrh mobiln´ıho klienta
N´avrh s´ıt’ov´e komunikace
ˇ Obr´azek 4.2: Zivotn´ ı cyklus s´ıt’ov´eho poˇzadavku v knihovnˇe Volley spojen´ı nebo restartov´an´ı zaˇr´ızen´ı. Instance tˇr´ıdy DownloadManager se z´ısk´a vol´an´ım metody getSystemService() s parametrem Context.DOWNLOAD_SERVICE. Postup pro staˇzen´ı souboru je obdobn´ y jako u knihovny Volley, nejdˇr´ıve je potˇreba vytvoˇrit objekt reprezentuj´ıc´ı poˇzadavek, pˇredat mu adresu souboru a nastavit potˇrebn´e parametry (napˇr. m´ısto uloˇzen´ı souboru). Pot´e je objekt poˇzadavku pˇred´an DownloadManageru, kter´ y se pokus´ı zajistit jeho staˇzen´ı. Aby sluˇzba mohla aplikaci informovat o pr˚ ubˇehu (popˇr. dokonˇcen´ı, ne´ uspˇechu), mus´ı aplikace zaregistrovat tzv. BroadcastReceiver (d´ale receiver). Receiver m´a za u ´kol reagovat na syst´emov´e ud´alosti nebo na ud´alosti jin´ ych aplikac´ı. Pokud nastane vybran´a ud´alost, jsou informov´ani vˇsechny receivery, kteˇr´ı maj´ı registrovanou tuto ud´alost. V receiveru je implementov´ana reakce na danou ud´alost v pˇr´ıpadˇe DownloadManageru, tedy napˇr. reakce na u ´spˇeˇsn´e dokonˇcen´ı, ne´ uspˇeˇsn´e dokonˇcen´ı nebo na zah´ajen´ı stahov´an´ı.
21
N´avrh mobiln´ıho klienta
4.1.3
Zp˚ usob uloˇzen´ı dat
Vybran´ eˇ reˇ sen´ı s´ıt’ov´ e komunikace
Z v´ yˇse popsan´ ych moˇznost´ı byla pro implementaci bod˚ u 2 (odesl´an´ı hodnocen´ı) a 3 (staˇzen´ı seznamu dostupn´ ych knih) z kap. 4.1 vybr´ana knihovna Volley. D˚ uvodem pro v´ ybˇer t´eto knihovny je pˇredevˇs´ım zjednoduˇsen´ı implementace s´ıt’ov´ ych poˇzadavk˚ u oproti implementaci pomoc´ı tˇr´ıdy HttpURLConnection. Od verze 3.0 (Honeycomb) mus´ı b´ yt vˇsechny s´ıt’ov´e operace prov´adˇeny mimo hlavn´ı vl´akno aplikace. Knihovna vykon´av´a poˇzadavky automaticky asynchronnˇe a v´ yvoj´aˇr tak nemus´ı tento probl´em ˇreˇsit. Velikost stahovan´eho gamebooku m˚ uˇze v budoucnu dosahovat aˇz des´ıtek MB, proto bude stahov´an´ı gamebook˚ u implementov´ano pomoc´ı syst´emov´e sluˇzby (DownloadManager). DownloadManager je podle [14] pˇr´ımo urˇcen pro stahov´an´ı velk´ ych soubor˚ u. Velkou v´ yhodou DownloadManageru je, ˇze s´am dok´aˇze ˇreˇsit v´ yjimeˇcn´e situace jako je pˇreruˇsen´ı s´ıt’ov´eho spojen´ı nebo restart syst´emu. Na obr. 4.3 je zobrazen UML diagram aktivit zn´azorˇ nuj´ıc´ı chov´an´ı aplikace pˇri stahov´an´ı gamebooku.
4.2
Zp˚ usob uloˇ zen´ı dat
Aplikace bude pracovat s daty, kter´a reprezentuj´ı jednotliv´e gamebooky (napˇr. XML soubor), s grafick´ ymi soubory a s lok´aln´ımi daty reprezentuj´ıc´ı nastaven´ı aplikace. Tato data je potˇreba v aplikaci nˇejak uloˇzit. Pro perzistentn´ı uloˇzen´ı dat v zaˇr´ızen´ı, viz [15], nab´ız´ı Android tyto tˇri moˇznosti: 1. uloˇzen´ı z´akladn´ıch datov´ ych typ˚ u ve form´atu Kl´ıˇ c - Hodnota pomoc´ı tˇr´ıdy SharedPreferences, 2. uloˇzen´ı souboru do vnitˇrn´ıho nebo vnˇejˇs´ıho u ´loˇziˇstˇe, 3. uloˇzen´ı dat do SQLite datab´aze.
4.2.1
Sd´ılen´ e preference
Sd´ılen´e preference jsou urˇceny pro ukl´ad´an´ı relativnˇe mal´ ych dat, kter´a jsou reprezentov´ana z´akladn´ımi datov´ ymi typy (boolean, long, int, float), nav´ıc je moˇzn´e ukl´adat objekt tˇr´ıdy String a kolekci t´eto tˇr´ıdy (mnoˇzinu) reprezentovanou rozhran´ım Set<String>. Data jsou ukl´ad´ana do souboru uloˇzen´eho na priv´atn´ım
22
N´avrh mobiln´ıho klienta
Zp˚ usob uloˇzen´ı dat
Uživatel
Aplikace
Kliknutíjnajtlačítkojproj staženíjgamebooku
Webovýjserver
VygenerováníjURLj adresyjgamebooku
Vytvořeníjobjektu DownloadManager[Request
Předáníjobjektujinstanci DownloadManageru Rodesláníjpožadavkuq
Zpracováníjpožadavku ajvygenerováníjodkazu projstažení Zobrazeníjprůběhuj stahování
[stahujejse] [konecjstahování] Zpracováníjvýsledku stahování
Informováníjuživatele ojvýsledkujstahování
Obr´azek 4.3: UML diagram aktivit zn´azorˇ nuj´ıc´ı chov´an´ı aplikace pˇri stahov´an´ı gamebooku u ´loˇziˇsti aplikace (jin´e aplikace ani uˇzivatel se k tˇemto dat˚ um nemohou dostat1 ). Pro uloˇzen´ı dat je potˇreba z´ıskat instanci tˇr´ıdy SharedPreferences. Tˇr´ıda se z´ısk´a vol´an´ım metody getSharedPreferences() nad objektem tˇr´ıdy Context nebo jej´ıch podtˇr´ıd. Parametry metody jsou jm´eno souboru, do kter´eho se budou data ukl´adat a m´od, v jak´em bude soubor otevˇren (napˇr. pˇreps´an´ı pokud uˇz soubor existuje). N´asledn´ ym zavol´an´ım metody edit() .putInt(klic, hodnota) nad z´ıskan´ ym objektem tˇr´ıdy SharedPreferences uloˇz´ıme promˇennou datov´eho typu int, 1
Neplat´ı pro zaˇr´ızen´ı, kter´e jsou tzv. rootnut´e“, kde uˇzivatel m´a pr´ava roota jako v klasick´em ” linuxov´em syst´emu.
23
N´avrh mobiln´ıho klienta
Zp˚ usob uloˇzen´ı dat
kde ”klic” je jedineˇcn´ y ˇretˇezec a ”hodnota” je ukl´adan´a promˇenn´a. Naˇcten´ı promˇenn´e se provede zavol´an´ım metody getInt(klic, defHodnota), kde argument ”defHodnota” je hodnota, kter´a bude vr´acena, pokud ˇc´ıslo pod zadan´ ym kl´ıˇcem nebude nalezeno. Pro ostatn´ı datov´e typy je postup obdobn´ y pouze se liˇs´ı n´azvy metod a ukl´adan´e datov´e typy. V´ yhodou sd´ılen´ ych preferenc´ı je jednoduch´a implementace ukl´ad´an´ı a naˇc´ıt´an´ı dat, ale nev´ yhodou je moˇznost ukl´adat jen z´akladn´ı datov´e typy.
4.2.2
Ukl´ ad´ an´ı soubor˚ u
Pr´ace se soubory na platformˇe Android prob´ıh´a stejnˇe jako u jazyka JAVA, tj. pomoc´ı tˇr´ıd z bal´ıku java.io. Soubory je moˇzn´e ukl´adat na vnitˇrn´ı (internal) nebo vnˇejˇs´ı (external) u ´loˇziˇstˇe. Vnitˇrn´ım u ´loˇziˇstˇem je myˇslena vestavˇen´a non-volatile pamˇet’. Non-volatile pamˇet’ je druh pamˇeti, kter´a dok´aˇze uchov´avat data i po odpojen´ı nap´ajen´ı. Vnitˇrn´ı u ´loˇziˇstˇe nen´ı moˇzn´e ze zaˇr´ızen´ı vyjmout, je jeho souˇc´ast´ı. Vlastnosti vnitˇrn´ıho u ´loˇziˇstˇe jsou: • je vˇzdy dostupn´e, • soubory uloˇzen´e ve vnitˇrn´ım u ´loˇziˇsti jsou pˇr´ıstupn´e pouze aplikaci, kter´e vnitˇrn´ı u ´loˇziˇstˇe n´aleˇz´ı, • pˇri odinstalaci aplikace jsou syst´emem odstranˇena vˇsechna uloˇzen´a data v tomto u ´loˇziˇsti, kter´a n´aleˇz´ı odinstalov´avan´e aplikaci. Vnˇejˇs´ı u ´loˇziˇstˇe je zpravidla reprezentov´ano vymˇenitelnou kartou typu SD a liˇs´ı se tˇemito rozd´ıly: • nemus´ı b´ yt vˇzdy dostupn´e (uˇzivatel m˚ uˇze vyjmout SD kartu), • pˇr´ıstup k soubor˚ um nen´ı obvykle nijak omezen a kaˇzd´ y (uˇzivatel, jin´a aplikace) je m˚ uˇze ˇc´ıst a mˇenit, • pˇri odinstalaci nejsou soubory vytvoˇren´e aplikac´ı odstranˇeny. Popsan´e vlastnosti mohou b´ yt ch´ap´any jako v´ yhody i nev´ yhody, proto se kaˇzd´e u ´loˇziˇstˇe hod´ı pro jin´ y typ dat. Na intern´ı u ´loˇziˇstˇe je vhodn´e ukl´adat data, ke kter´ ym chceme, aby pˇristupovala pouze naˇse aplikace a ostatn´ım aplikac´ım z˚ ustala skryt´e. Naopak vnˇejˇs´ı u ´loˇziˇstˇe je vhodn´e pro zpˇr´ıstupnˇen´ı dat uˇzivateli nebo jin´ ym aplikac´ım.
24
N´avrh mobiln´ıho klienta
4.2.3
Zp˚ usob uloˇzen´ı dat
Datab´ aze SQLite
SQLite je Open Source datab´aze. Open Source znamen´a, ˇze software m´a otevˇren´ y zdrojov´ y k´od (zdrojov´ y k´od je volnˇe dostupn´ y). V´ıce informac´ı o SQLite je dostupn´ ych z http://www.sqlite.org/. SQLite datab´aze je souˇc´ast´ı operaˇcn´ıho syst´emu Android a kaˇzd´a aplikace ji m˚ uˇze vyuˇz´ıvat. Pro manipulaci s datab´az´ı (vytv´aˇren´ı tabulek, dotaz˚ u atd.) je potˇreba vytvoˇrit tˇr´ıdu kter´a dˇed´ı od tˇr´ıdy SQLiteOpenHelper. V t´eto tˇr´ıdˇe je potˇreba pˇrekr´ yt metody onCreate() a onUpgrade(). Metoda onCreate() je automaticky vol´ana pˇri vytvoˇren´ı datab´aze. V t´eto metodˇe by mˇely b´ yt provedeny DDL pˇr´ıkazy jazyka SQL pro vytvoˇren´ı tabulek datab´aze. DDL (Data Definition Language) jsou pˇr´ıkazy pro vytv´aˇren´ı a upravov´an´ı struktury datab´aze. Pokud datab´aze neexistuje, je pˇri z´ısk´an´ı reference na datab´azi metodou getWritableDatabase() nebo getReadableDatabase() zavol´ana metoda onCreate() a vytvoˇrena datab´aze. DML i DDL pˇr´ıkazy jazyka SQL, jsou prov´adˇeny pomoc´ı metod tˇr´ıdy SQLiteDatabase. DML (Data Manipulation Language) jsou pˇr´ıkazy jazyka SQL pro manipulaci s daty v datab´azi, napˇr. vkl´ad´an´ı, maz´an´ı nebo zmˇena dat.
4.2.4
Zvolen´ y zp˚ usob pro uloˇ zen´ı dat
Sd´ılen´e preference budou v aplikaci pouˇzity pro uloˇzen´ı pomocn´ ych dat (napˇr. informace o aktu´alnˇe ˇcten´e knize). Do soubor˚ u budou doˇcasnˇe ukl´ad´any staˇzen´e gamebooky pˇred t´ım neˇz budou zpracov´any a importov´any do datab´aze. Pro uloˇzen´ı gamebooku v aplikaci bude pouˇzita SQLite datab´aze. Jedn´ım z d˚ uvod˚ u pro pouˇzit´ı datab´aze k uloˇzen´ı gamebooku je struktura XML souboru, ve kter´em je uloˇzen gamebook pˇri stahov´an´ı ze serveru (viz. kap. 3.4.1). Jednotliv´e elementy XML souboru budou reprezentovat tabulky v datab´azi a atributy tˇechto element˚ u (popˇr. nˇekter´e vnoˇren´e elementy) budou tvoˇrit sloupce tabulek. Dalˇs´ım d˚ uvodem pro pouˇzit´ı datab´aze je, ˇze nen´ı potˇreba pˇri proch´azen´ı gamebooku naˇc´ıtat cel´ y soubor s gamebookem do pamˇeti. Pˇri proch´azen´ı gamebooku pak budou v pamˇeti naˇctena jen data, kter´a jsou pr´avˇe pouˇz´ıv´ana (napˇr. jen text k aktu´aln´ımu stavu, ve kter´em se hra nach´az´ı). ER diagram zn´azorˇ nuj´ıc´ı strukturu datab´aze je vidˇet na obr. 4.4. D˚ uleˇzitou tabulkou datab´aze je tabulka Books, ve kter´e jsou uloˇzeny informace o staˇzen´ ych gamebooc´ıch. Tabulka obsahuje informace, tj. jednotliv´e sloupce o dan´em gamebooku jako je id knihy (gamebooku), n´azev knihy, jm´eno autora, id poˇca´teˇcn´ıho stavu a dalˇs´ı. Prim´arn´ım kl´ıˇcem t´eto tabulky je id knihy, coˇz je ˇc´ıslo, kter´e je v cel´em vyv´ıjen´em syst´emu unik´atn´ı a jednoznaˇcnˇe urˇcuje gamebook. Toto id je
25
N´avrh mobiln´ıho klienta
N´avrh UI
kl´ıˇcov´e, protoˇze je pouˇzito ve vˇetˇsinˇe ostatn´ıch tabulek jako ˇc´ast prim´arn´ıho kl´ıˇce. V tˇechto tabulk´ach je pouˇzit sloˇzen´ y prim´arn´ı kl´ıˇc a id knihy je jeho ˇca´st´ı. Napˇr´ıklad tabulka States nem˚ uˇze m´ıt jako prim´arn´ı kl´ıˇc pouze id stavu, protoˇze to je generov´ano lok´alnˇe v editoru, a nen´ı tak glob´alnˇe unik´atn´ı. Prim´arn´ım kl´ıˇcem tabulky States je id knihy a id stavu. Podobnˇe je vytvoˇren kl´ıˇc pro tabulky jednotliv´ ych akc´ı, kde je jeˇstˇe do prim´arn´ıho kl´ıˇce pˇrid´an sloupec s id akce. Z takto vytvoˇren´ ych kl´ıˇc˚ u je moˇzn´e vidˇet spojitost se strukturou XML souboru, kdy pro vytvoˇren´ı prim´arn´ıho kl´ıˇce tabulky (vytvoˇren´e z vnoˇren´eho elementu) jsou pouˇzity prim´arn´ı kl´ıˇce nadˇrazen´ ych tabulek, tj. tabulek vytvoˇren´ ych z rodiˇcovsk´ ych element˚ u XML souboru.
Saved_Figure
Books
Saved_Games
Figure
Actions_Simple
Variables
Actions_Skill
States
Actions_Selector
Actions_Fight
Actions_Random
Actions_Variable
Actions_Counter Selectors Creatures Selections
Saved_Selectors
Counters
Obr´azek 4.4: Zjednoduˇsen´ y ER diagram datab´aze
4.3
N´ avrh UI
V t´eto kapitole bude pops´an n´avrh UI (User Interface - uˇzivatelsk´e rozhran´ı) a n´avrh fungov´an´ı aplikace z pohledu uˇzivatele. Uˇzivatelsk´e rozhran´ı aplikac´ı na platformˇe Android je tvoˇreno tzv. aktivitami. Aktivitu si lze pˇredstavit jako jednu obrazovku 26
N´avrh mobiln´ıho klienta
N´avrh UI
aplikace. Mobiln´ı zaˇr´ızen´ı, kter´a vyuˇz´ıvaj´ı operaˇcn´ı syst´em Android se velmi ˇcasto liˇs´ı velikost´ı obrazovky, napˇr. tablet a mobiln´ı telefon. Proto byla do Android API pˇrid´ana moˇznost vyuˇz´ıvat tzv. fragmenty. Fragmenty se zpravidla pouˇz´ıvaj´ı jako ˇc´ast UI, kdy se uˇzivatelsk´e rozhran´ı vytv´aˇr´ı podle velikosti obrazovky. Jednotliv´e fragmenty se pak skl´adaj´ı podle potˇreby. Na zaˇr´ızen´ı s malou obrazovkou se zobraz´ı pouze jeden fragment, zat´ımco ve stejn´e aplikaci na zaˇr´ızen´ı s velkou obrazovkou jsou najednou zobrazeny dva fragmenty, coˇz velmi n´azornˇe ilustruje obr. 4.5 (pˇrevzat z [18]). Zaˇr´ızen´ı s velkou obrazovkou budou v tomto textu povaˇzov´ana za zaˇr´ızen´ı, kter´a jsou podle [18] oznaˇcena jako large (min. 640dp x 480dp) a xlarge (min. 960dp x 720dp). Jednotka dp (Density-independent pixel) pˇredstavuje virtua´ln´ı pixel obrazovky, kter´ y je nez´avisl´ y na hustotˇe pixel˚ u dan´e obrazovky, detailnˇeji viz [18]. Kaˇzd´ y fragment mus´ı b´ yt um´ıstˇen v hostitelsk´e aktivitˇe, ale aktivita m˚ uˇze existovat nez´avisle na fragmentech.
Obr´azek 4.5: Pouˇzit´ı fragment˚ u na zaˇr´ızen´ıch s r˚ uznou velikost´ı obrazovky
Velkou v´ yhodou pˇri v´ yvoji aplikace pro platformu Android je, ˇze dovoluje oddˇelit logiku aplikace (zdrojov´ y k´od jazyka JAVA) od definice vzhledu aplikace. Vzhled aplikace se definuje v XML souboru, ve kter´em jsou obsaˇzeny jednotliv´e grafick´e komponenty. Tyto komponenty jsou reprezentov´any jednotliv´ ymi elementy v XML souboru. Pˇri manipulaci s UI ve zdrojov´em k´odu jsou jednotliv´e elementy reprezentov´any tˇr´ıdami, kter´e jsou potomky tˇr´ıdy View. UI je moˇzn´e definovat i programovˇe, ale takov´ y pˇr´ıstup nen´ı pˇr´ıliˇs ˇcast´ y, pouˇzije se napˇr. pˇri dynamick´em vytv´aˇren´ı UI.
27
N´avrh mobiln´ıho klienta
N´avrh UI
D´ale budou pops´any z´akladn´ı a nejd˚ uleˇzitˇejˇs´ı aktivity aplikace a jejich vlastnosti, tzn. co by mˇely umoˇzn ˇovat a jak by mˇely vypadat. Pˇri n´avrhu bude u nˇekter´ ych aktivit zohlednˇena i podpora zaˇr´ızen´ıch s vˇetˇs´ı velikost´ı obrazovky (tablety). Aktivity budou reprezentov´any tˇr´ıdami, kter´e jsou potomky tˇr´ıdy FragmentActivity. V implementaci nebudou dˇedit pˇr´ımo od tˇr´ıdy FragmentActivity, ale od tˇr´ıd z r˚ uzn´ ych knihoven tˇret´ıch stran, kter´e dˇed´ı od FragmentActivity. Tyto knihovny budou pops´any v kap. 5.
4.3.1
Aktivita MenuActivity
Tato aktivita bude slouˇzit jako menu, kter´e bude zobrazeno po spuˇstˇen´ı aplikace. Aktivita by mˇela umoˇzn ˇovat snadn´ y pohyb v aplikaci, tj. pokraˇcovat v rozeˇcten´em gamebooku, spustit nov´e proch´azen´ı, otevˇr´ıt knihovnu (viz kap. 4.3.3) a otevˇr´ıt nastaven´ı aplikace. Pro pˇrehlednost bude um´ıstˇena ˇca´st tlaˇc´ıtek (akc´ı) na hlavn´ı obrazovku a ˇca´st jich bude pˇresunuta do komponenty Action Bar, viz obr. 4.6.
4.3.2
Aktivita GameActivity
V t´eto aktivitˇe bude prob´ıhat prohl´ıˇzen´ı (ˇcten´ı) gamebooku. Na obrazovce se zobraz´ı text, kter´ y bude rozdˇelen do str´anek. Uˇzivateli bude umoˇznˇeno se mezi str´ankami pohybovat t´ahnut´ım prstu po obrazovce. Poˇcet str´anek a indikace aktu´alnˇe zobrazovan´e str´anky bude reprezentov´ana indik´atorem na doln´ım okraji obrazovky, viz obr. 4.7. Na okraji obrazovky bude um´ıstˇeno tlaˇc´ıtko pro vysunut´ı nab´ıdky s akcemi, kter´e je moˇzn´e prov´est. Nab´ıdka s akcemi a zobrazovan´ y text budou um´ıstˇeny do fragment˚ u, ale bude pouˇzita vˇzdy jen jedna aktivita. Na zaˇr´ızen´ıch s velkou obrazovkou a v reˇzimu landscape bude nab´ıdka vˇzdy zobrazena vedle textu, jinak se bude nab´ıdka vysouvat z prav´eho okraje obrazovky.
4.3.3
Aktivita LibraryActivity
Aktivita LibraryActivity reprezentuje knihovnu umoˇzn ˇuj´ıc´ı zobrazit seznam staˇzen´ ych a seznam dostupn´ ych gamebook˚ u, kter´e je moˇzn´e st´ahnout. Tato aktivita bude vyuˇz´ıvat fragmenty. Na velk´ ych obrazovk´ach v landscape orientaci obrazovky bude v t´eto aktivitˇe zobrazen fragment se seznamem gamebook˚ u a vpravo bude um´ıstˇen fragment s detailem vybran´eho gamebooku (viz obr. 4.5). Na menˇs´ıch obrazovk´ach a na vˇsech obrazovk´ach v portrait orientaci bude nejprve zobrazen pouze fragment se seznamem a po kliknut´ı na dan´ y gamebook bude spuˇstˇena aktivita DetailBookActivity s detailn´ımi informacemi o gamebooku. Fragment s detailem gamebooku 28
N´avrh mobiln´ıho klienta
N´avrh UI
Obr´azek 4.6: Grafick´ y n´avrh aktivity MenuActivity
Obr´azek 4.7: Grafick´ y n´avrh aktivity GameActivity
bude obsahovat tlaˇc´ıtka pro staˇzen´ı, smaz´an´ı a vybr´an´ı gamebooku v z´avislosti na tom, zda se zobrazuj´ı staˇzen´e gamebooky nebo gamebooky ke staˇzen´ı. Fragment bude tak´e umoˇzn ˇovat hodnocen´ı gamebooku.
4.3.4
Ostatn´ı aktivity
V aplikaci budou tak´e implementov´any dalˇs´ı aktivity. Aktivita AboutActivity zobraz´ı obecn´e informace o programu. GameInitActivity bude urˇcena k nastaven´ı hry pˇred jej´ım zaˇc´atkem. LoadingActivity bude aktivita, kter´a bude spuˇstˇena jako prvn´ı aktivita aplikace a bude m´ıt za u ´kol naimportovat do datab´aze gamebooky distribuovan´e s aplikac´ı a pot´e spustit MenuActivity. SettingsActivity bude umoˇzn ˇovat u ´pravu nastaven´ı aplikace. Ve WebLicenseActivity budou vyjmenov´any pouˇzit´e knihovny tˇret´ıch stran a licence, pod kter´ ymi jsou distribuov´any. Na obr. 4.8 je vidˇet UML diagram tˇr´ıd s aktivitami, fragmenty a dalˇs´ımi d˚ uleˇzit´ ymi tˇr´ıdami, kter´e budou implementov´any (neobsahuje vˇsechny tˇr´ıdy aplikace). Pro lepˇs´ı orientaci v diagramu maj´ı tˇr´ıdy aktivit zelen´e pozad´ı, fragmenty modr´e a ostatn´ı tˇr´ıdy ˇsed´e pozad´ı.
29
N´avrh mobiln´ıho klienta
4.3.5
N´avrh UI
Pˇ r´ıprava grafick´ ych soubor˚ u
V aplikaci bude potˇreba pouˇz´ıt obr´azky a jinou grafiku napˇr. jako pozad´ı nebo ikony. Proto byly vytvoˇreny obr´azky, kter´e budou ve v´ ysledn´em projektu uloˇzeny v adres´aˇr´ıch /res/drawable, /res/drawable-hdpi, /res/drawable-mdpi, res/drawable-xhdpi. V adres´aˇr´ıch se jm´eny /res/drawable-xxxx jsou uloˇzeny stejn´e obr´azky, ale v r˚ uzn´ ych rozliˇsen´ıch, protoˇze jak jiˇz bylo zm´ınˇeno, platforma Android je pouˇz´ıv´ana na mnoha zaˇr´ızen´ıch s r˚ uznou velikost´ı a kvalitou (hustotou pixel˚ u) obrazovky. Z tohoto d˚ uvodu je potˇreba nˇekter´e obr´azky distribuovat ve v´ıce rozliˇsen´ıch a aˇz na konkr´etn´ım zaˇr´ızen´ı dle velikosti obrazovky je rozhodnuto, jak´e rozliˇsen´ı obr´azku bude pouˇzito. LoadingWaveAnimation
AboutActivity
LoadingActivity
WebLicenseActivity
MenuActivity
SettingsActivity
BookImporter GameActivity «abstract» DBQueries DecisionListFragment
DBInsertQueries
«abstract» LibraryListFragment
DBSelectQueries
DetailBookFragment
GameInitActivity
DetailBookActivity
InternetListFragment
LocalListFragment
Obr´azek 4.8: UML diagram tˇr´ıd aplikace 30
LibraryActivity
5 Realizace mobiln´ıho klienta V t´eto kapitole bude pops´ana implementace mobiln´ıho klienta. Klient byl programov´an v Jazyce JAVA, coˇz je prim´arn´ı jazyk pro programov´an´ı na platformˇe Android. Nejniˇzˇs´ı verze platformy Android, na kter´e lze aplikaci spustit je 2.3 (Gingerbread). Aplikace je lokalizov´ana do anglick´eho a ˇcesk´eho jazyka, ale gamebooky jsou zat´ım naps´any pouze v ˇcesk´em jazyce. K aplikaci je dostupn´a uˇzivatelsk´a pˇr´ıruˇcka, kter´a je um´ıstˇena v pˇr´ıloze A a zdrojov´e soubory aplikace jsou um´ıstˇeny na pˇriloˇzen´em CD (viz pˇr´ıloha B). Pˇri implementaci jsem ˇcerpal z tˇechto zdroj˚ u: [1], [7], [8], [9] a [10]. Pˇri hled´an´ı ˇreˇsen´ı probl´em˚ u jsem vyuˇz´ıval pˇredevˇs´ım [11]. Aplikace byla vytvoˇrena ve v´ yvojov´em prostˇred´ı Eclipse s nainstalovan´ ym pluginem ADT (Android Development Tools). Pˇri implementaci bylo vyuˇz´ıv´ano verzovac´ıho syst´emu Git.
5.1
Struktura aplikace
Zdrojov´e k´ody aplikace jsou um´ıstˇeny v jednotliv´ ych bal´ıˇcc´ıch v adres´aˇri /src. Tˇr´ıdy jsou rozdˇeleny do bal´ıˇck˚ u podle funkˇcnosti (typu) tˇr´ıdy, napˇr. aktivity jsou v samostatn´em bal´ıˇcku a fragmenty jsou tak´e ve sv´em samostatn´em bal´ıˇcku, i kdyˇz spolu nemus´ı tˇr´ıdy v jednom bal´ıˇcku logicky souviset. Toto rozdˇelen´ı se uk´azalo pˇri programov´an´ı jako velmi praktick´e pro orientaci pˇri vˇetˇs´ım poˇctu zdrojov´ ych soubor˚ u. V adres´aˇri /assets je um´ıstˇen soubor licenses.html, kter´ y obsahuje seznam pouˇzit´ ych open-source knihoven a licence, pod kter´ ymi je moˇzn´e je pouˇz´ıvat. D´ale je zde um´ıstˇen konfiguraˇcn´ı soubor logback.xml pro knihovnu logback-android, kter´a je v projektu pouˇzita pro logov´an´ı, viz kap. 5.2.1. Adres´aˇr tak´e obsahuje soubory s pˇr´ıponou TTF, kter´e popisuj´ı font p´ısma. Posledn´ı sloˇzkou, ve n´ıˇz program´ator upravuje a pˇrid´av´a soubory je /res, zde jsou k nalezen´ı v jednotliv´ ych adres´aˇr´ıch vˇsechny definice UI ve formˇe XML soubor˚ u, veˇsker´a pouˇzit´a grafika, textov´e ˇretˇezce a dalˇs´ı potˇrebn´e soubory (zdroje). V adres´aˇri /res/raw jsou um´ıstˇeny soubory gamebook˚ u, kter´e jsou distribuovan´e spolu s aplikac´ı.
5.1.1
Soubor AndroidManifest.xml
Soubor AndroidManifest.xml mus´ı b´ yt obsaˇzen v kaˇzd´e aplikaci pro platformu Android. Obsahuje vˇsechny d˚ uleˇzit´e informace o aplikaci - jako jsou komponenty aplikace (aktivity, sluˇzby, content providery atd.), podrobnˇejˇs´ı obsah viz [19]. D˚ u31
Realizace mobiln´ıho klienta
Pouˇzit´e knihovny
leˇzit´ y je element uses-sdk, do kter´eho se zap´ıˇse ˇc´ıslo minim´aln´ı verze platformy ˇ ıslo oznaˇcuje API pro daAndroid, pro kterou je aplikace urˇcena, zde verze devˇet. C´ nou verzi Androidu. Dev´ıtka znamen´a verzi 2.3 (Gingerbread). Dalˇs´ım d˚ uleˇzit´ ym elementem je element uses-permission, kter´ y oznaˇcuje, jak´a opr´avnˇen´ı aplikace vyˇzaduje. Mobiln´ı klient vyˇzaduje tato opr´avnˇen´ı: 1. pˇr´ıstup k internetu - android.permission.INTERNET, 2. z´apis do extern´ıho u ´loˇziˇstˇe - android.permission.WRITE_EXTERNAL_STORAGE, 3. zjiˇstˇen´ı stavu s´ıtˇe - android.permission.ACCESS_NETWORK_STATE.
5.2
Pouˇ zit´ e knihovny
Pro rychlejˇs´ı a snadnˇejˇs´ı implementaci nˇekter´ ych funkˇcnost´ı a zpˇetnou kompatibilitu aplikace na starˇs´ıch verz´ıch Androidu, konkr´etnˇe verze 2.3 - 2.3.7, bylo vyuˇzito knihoven tˇret´ıch stran. V t´eto kapitole nebudou popisov´any knihovny, kter´e jsou souˇc´ast´ı Android Open Source Project [3]. Pro pˇrehlednost jsou str´anky, ze kter´ ych jsou knihovny dostupn´e, um´ıstˇeny v tab. C.1 v pˇr´ıloze C. Knihovny ActionBarSherlock a Nine Old Androids jsou od prosince 2014 deprecated a nebudou sv´ ymi autory d´ale vyv´ıjeny a udrˇzov´any (pˇri zah´ajen´ı v´ yvoje nebyly deprecated).
5.2.1
Knihovna logback-android
Knihovna logback-android je vyuˇz´ıv´ana pro logov´an´ı a umoˇzn ˇuje pokroˇcilejˇs´ı nastaven´ı logovac´ıch zpr´av oproti nativn´ımu logov´an´ı pomoc´ı tˇr´ıdy android.util.Log z Android API. Knihovna je upravenou verz´ı knihovny logback, kter´a je vytvoˇrena tv˚ urci popul´arn´ı knihovny log4j. Pro pouˇzit´ı je potˇreba st´ahnout JAR soubory knihoven (logback a logback-android) a pˇridat je k projektu. V adres´aˇri /assets/ vytvoˇrit soubor se jm´enem logback.xml, ve kter´em je konfigurace logov´an´ı (v´ ystup log˚ u, vzor log˚ u atd.). Do tˇr´ıdy, ve kter´e chceme pouˇz´ıt logov´an´ı, pak jednoduˇse vloˇz´ıme k´od 5.1 a logovac´ı zpr´avu pak zap´ıˇseme pomoc´ı k´odu 5.2. static private final Logger logger = LoggerFactory.getLogger(Trida.class); Uk´azka k´odu 5.1: Vytvoˇren´ı statick´e promˇenn´e loger pro logov´an´ı
32
Realizace mobiln´ıho klienta
Pouˇzit´e knihovny
logger.debug("Obsah logovaci zpravy"); Uk´azka k´odu 5.2: Zaps´an´ı logovac´ı zpr´avy
5.2.2
Knihovna ActionBarSherlock
Knihovna je rozˇs´ıˇren´ım Support Library z [3], ale nen´ı jej´ı souˇc´ast´ı. Knihovna je urˇcena k tomu, aby bylo moˇzn´e v aplikaci pouˇz´ıt komponentu Action Bar jiˇz od verze 2.x a v´ yˇse, protoˇze Action Bar byl pˇrid´an aˇz ve verzi 3.0. Knihovna automaticky pouˇzije nativn´ı implementaci Action Baru na zaˇr´ızen´ıch s verz´ı 4.0 nebo vyˇsˇs´ı. Pro pˇredeˇsl´e verze, kter´e neobsahuj´ı Action Bar pouˇzije vlastn´ı implementaci zaloˇzenou na zdrojov´ ych souborech verze 4.x. Knihovna je vyuˇzita ve vˇsech aktivit´ach aplikace. Implementace aktivity s touto knihovnou pak prob´ıh´a tak, ˇze aktivita dˇed´ı od tˇr´ıdy SherlockActivity nebo SherlockFragmentActivity. Pro z´ısk´an´ı instance ActionBar se pouˇzije metoda getSupportActionBar(). S touto instanc´ı je pak moˇzn´e prov´adˇet u ´pravy a nastaven´ı Action Baru.
5.2.3
Knihovna Nine Old Androids
Tato knihovna umoˇzn ˇuje pouˇz´ıt nov´e API pro animace zaveden´e ve verzi 3.0, na vˇsech verz´ıch platformy Android, tzn. od verze 1.0. V aplikaci je vyuˇzita tˇr´ıdou LoadingWaveAnimation, kter´a vytv´aˇr´ı animaci pˇri spuˇstˇen´ı aplikace.
5.2.4
Knihovna ViewPagerIndicator
Knihovna se pouˇz´ıv´a spoleˇcnˇe s tˇr´ıdou (layoutem) ViewPager, kter´a umoˇzn ˇuje uˇzivateli pohybovat se mezi v´ıce obrazovkami v jedn´e aktivitˇe. ViewPagerIndicator zobrazuje, na jak´e obrazovce se uˇzivatel nach´az´ı. V aplikaci je t´eto vlastnosti vyuˇzito v aktivitˇe GameActivity, kde indikuje aktu´aln´ı str´anku a poˇcet str´anek, viz obr. 5.1.
5.2.5
Knihovna SlidingMenu
Knihovna umoˇzn ˇuje snadnou implementaci vysouvac´ı nab´ıdky z okraje obrazovky, kter´a je v aplikaci pouˇzita a obsahuje nab´ıdku s akcemi, mezi kter´ ymi se uˇzivatel pˇri proch´azen´ı gamebooku rozhoduje, viz obr. 5.2.
33
Realizace mobiln´ıho klienta
Implementace SQLite datab´aze
Obr´azek 5.1: Uk´azka hern´ı obrazovky s pouˇzit´ım ViewPagerIndicator
Obr´azek 5.2: Uk´azka nab´ıdky akc´ı implementovan´e pomoc´ı SlidingMenu
V aplikaci dˇed´ı aktivita GameActivity od tˇr´ıdy SlidingFragmentActivity. Pˇri vytv´aˇren´ı aktivity je v metodˇe onCreate() zavol´ana metoda initSlidingMenu() a je z´ısk´ana reference na instanci SlidingMenu, kter´a reprezentuje nab´ıdku. V initSlidingMenu() je nab´ıdce nastaven layout decision _fragment_view.xml a jsou provedena dalˇs´ı nastaven´ı. Pokud je zaˇr´ızen´ı v landscape orientaci a velikost obrazovky je large, nen´ı vysouvac´ı nab´ıdka pouˇzita a nab´ıdka je nahrazena klasick´ ym fragmentem.
5.3
Implementace SQLite datab´ aze
Pro uloˇzen´ı gamebook˚ u je v aplikaci implementovan´a SQLite datab´aze. Do datab´aze se ukl´adaj´ı i informace o rozehran´ ych hr´ach. Struktura datab´aze je implementov´ana podle n´avrhu ER diagramu z kap. 4.2.4, viz obr. 4.4. Datab´aze je vytv´aˇrena pˇri prvn´ım spuˇstˇen´ı aplikace a manipulace s daty datab´aze se prov´ad´ı pomoc´ı potomk˚ u abstraktn´ı tˇr´ıdy DBQueries.
34
Realizace mobiln´ıho klienta
5.3.1
Uˇzivatelsk´e funkce
Vytvoˇ ren´ı datab´ aze
Datab´aze je vytv´aˇrena pˇri prvn´ım spuˇstˇen´ı aplikace pomoc´ı k´odu 5.3 v metodˇe onCreate() tˇr´ıdy GameBookApplication, kter´a dˇed´ı od tˇr´ıdy Application. Tato tˇr´ıda je inicializov´ana pˇri vytv´aˇren´ı procesu aplikace. //z´ ısk´ an´ ı tˇ rı ´dy, kter´ a slouˇ zı ´ pro komunikaci s datab´ az´ ı GameBookDataBaseHelper ghp = GameBookDataBaseHelper. getInstance(this.getApplicationContext()); //z´ ısk´ an´ ı reference na databazi ˇ cı ´mˇ z dojde k jej´ ımu vytvoˇ ren´ ı ghp.getWritableDatabase(); Uk´azka k´odu 5.3: Vytvoˇren´ı datab´aze ve tˇr´ıdˇe GameBookApplication Tˇr´ıda GameBookDataBaseHelper dˇed´ı od tˇr´ıdy SQLiteOpenHelper a je implementov´ana podle n´avrhov´eho vzoru jedin´aˇcek (Singleton). N´avrhov´ y vzor jedin´aˇcek byl pouˇzit pro usnadnˇen´ı spr´avy instance datab´aze, protoˇze v poˇc´atku v´ yvoje doch´azelo pˇri pˇr´ıstupu z v´ıce instanc´ı k probl´em˚ um s datab´az´ı, napˇr. soubˇeˇzn´ ym pˇr´ıstupem z r˚ uzn´ ych vl´aken. Tˇr´ıda pˇrepisuje metodu onCreate(), kter´a je automaticky vol´ana pˇri vytv´aˇren´ı datab´aze (kdyˇz neexistuje). V metodˇe jsou provedeny jednotliv´e DDL pˇr´ıkazy jazyka SQL vytv´aˇrej´ıc´ı tabulky. Tˇr´ıda obsahuje veˇsker´e ˇretˇezce potˇrebn´e k sestaven´ı pˇr´ıkazu pro vytvoˇren´ı datab´aze. Tˇr´ıdu vyuˇz´ıvaj´ı pˇredevˇs´ım tˇr´ıdy, kter´e dˇed´ı od DBQueries a manipuluj´ı s daty datab´aze.
5.3.2
Pˇ r´ıstup k dat˚ um
Pˇr´ıstup k dat˚ um je implementov´an tˇr´ıdami, kter´e dˇed´ı od abstraktn´ı tˇr´ıdy DBQueries, jedn´a se o: DBSelectQueries, DBInsertQueries, DBUpdateQueries a DBDeleteQueries. Tˇr´ıdy obsahuj´ı protected promˇenou tˇr´ıdy GameBookDataBaseHelper, pomoc´ı n´ıˇz otevˇrou datab´azi a z´ıskaj´ı instanci datab´aze. S touto instanc´ı a vol´an´ım metody query() prov´adˇej´ı jednotliv´e dotazy do datab´aze.
5.4
Uˇ zivatelsk´ e funkce
Mobiln´ı klient obsahuje funkcionalitu popsanou v kap. 3.3, tj. proch´azen´ı gamebooku, staˇzen´ı gamebooku a nˇekter´e dalˇs´ı funkce. V t´eto kapitole bude pops´ana implementace tˇechto funkc´ı.
35
Realizace mobiln´ıho klienta
5.4.1
Uˇzivatelsk´e funkce
Import gamebook˚ u
Import gamebook˚ u do datab´aze implementuje tˇr´ıda BookImporter. Import gamebooku je rozdˇelen na tyto dvˇe ˇca´sti: 1. zpracov´an´ı souboru typu XML parserem, 2. zaps´an´ı zpracovan´eho gamebooku do datab´aze. Parsov´an´ı (zpracov´an´ı) XML souboru s gamebookem zajiˇst’uje metoda nactiZeSouboruV2_02() tˇr´ıdy libFiles ze sd´ılen´e knihovny, kter´a vrac´ı instanci tˇr´ıdy Graph<Stav>. V t´eto instanci je obsaˇzen cel´ y gamebook, reprezentovan´ y jednotliv´ ymi tˇr´ıdami ze sd´ılen´e knihovny. Parser je implementov´an jako DOM parser. DOM (Document Object Model) parser nejprve naˇcte cel´ y XML soubor do pamˇeti a vytvoˇr´ı z nˇej stromovou strukturu, ke kter´e se pak pˇristupuje. Stejn´ y parser vyuˇz´ıv´a i editor (program pro tvorbu gamebook˚ u). V poˇca´tku v´ yvoje byl pro mobiln´ıho klienta vyuˇz´ıv´an samostatn´ y SAX parser, ale pˇri kaˇzd´e zmˇenˇe struktury XML souboru s gamebookem musely b´ yt upraveny oba parsery. I pˇresto, ˇze je DOM parser pamˇet’ovˇe n´aroˇcnˇejˇs´ı, na v´ ykonu aplikace se to neprojevilo. SAX (Simple API for XML) parser zpracov´av´a XML dokument proudovˇe, tzn. ˇze nen´ı moˇzn´e se vracet k jiˇz zpracovan´ ym ˇc´astem souboru a v pamˇeti je uloˇzena pouze ˇca´st XML souboru. V projektu je st´ale uchov´av´ana p˚ uvodn´ı verze SAX parseru (tˇr´ıda XMLPullBookParser) pro pˇr´ıpad, ˇze by v budoucnu z d˚ uvodu v´ ykonnosti bylo potˇreba tento parser znovu pouˇz´ıt. Zaps´an´ı gamebooku do datab´aze je n´aslednˇe provedeno ve tˇr´ıdˇe DBInsertQueries zavol´an´ım metody writeWholeBook(). Z´apis gamebooku je proveden jako jedna transakce, tzn. pokud by doˇslo k chybˇe pˇri z´apisu nˇejak´e ˇc´asti, gamebook nebude zaps´an, t´ım je zajiˇstˇeno, ˇze v datab´azi bude vˇzdy cel´ y gamebook.
5.4.2
Proch´ azen´ı gamebooku
Proch´azen´ı gamebooku je umoˇznˇeno uˇzivateli v aktivitˇe GameActivity. V metodˇe onCreate() je pˇri vytv´aˇren´ı aktivity provedeno naˇcten´ı rozehran´e hry z datab´aze a sd´ılen´ ych preferenc´ı, pˇr´ıpadnˇe je spuˇstˇena aktivita GameInitActivity, ve kter´e uˇzivatel provede z´akladn´ı nastaven´ı hry. Vyhodnocov´an´ı akc´ı, kter´e si uˇzivatel vyb´ır´a z vysouvac´ı nab´ıdky, viz obr. 5.2, prob´ıh´a ve tˇr´ıdˇe Simulator ze sd´ılen´e knihovny. Pˇri vytv´aˇren´ı objektu simul´atoru je pˇred´ano id gamebooku, aktu´aln´ı id stavu, instance hr´aˇce (tˇr´ıda Postava) a dvˇe rozhran´ı IGraphDataAccessible a IActionDisplayable. IGraphDataAccessible obsahuje metody, kter´e vracej´ı data o gamebooku. Metody druh´eho rozhran´ı jsou 36
Realizace mobiln´ıho klienta
Uˇzivatelsk´e funkce
vol´any po vyhodnocen´ı vybran´e akce a maj´ı uˇzivateli zobrazit v´ ysledek akce (napˇr. zobrazen´ı nov´eho textu), toto rozhran´ı implementuje GameActivity. IGraphDataAccessible implementuje tˇr´ıda DBSelectQueries. Protoˇze tˇr´ıda simul´atoru je vyuˇz´ıv´ana tak´e v editoru, jsou pouˇzita rozhran´ı. Rozhran´ı umoˇzn ˇuj´ı pˇristupovat k dat˚ um a zobrazovat prohl´ıˇzen´ı gamebooku nez´avisle na aplikaci, tzn. umoˇzn ˇuj´ı pouˇzit´ı tˇr´ıdy simul´atoru v mobiln´ım klientovi i v editoru. Po kliknut´ı uˇzivatele na vybranou akci ze seznamu, kter´ y je implementov´an fragmentem DecisionListFragment, je zavol´ana metoda executeAction() instance simul´atoru. Zde je akce vyhodnocena a zavol´ana jedna z metod rozhran´ı IActionDisplayable, kterou implementuje GameActivity. V pˇr´ıpadˇe typu akc´ı AkceNahoda a AkceDovednost, je vr´acena i instance tˇr´ıdy AkceVyhodnoceni, kter´a obsahuje detailnˇejˇs´ı informace o v´ ysledku. Tyto informace jsou pak pouˇzity a uˇzivateli jsou zobrazeny kostky (viz obr. 5.3), kter´e pˇredstavuj´ı n´ahodu. Stiskem a drˇzen´ım obr´azku kostek se spust´ı animace hodu kostkami. Po skonˇcen´ı animace je uˇzivateli zobrazen v´ ysledek hodu, kter´ y byl spoˇc´ıt´an z pˇredan´ ych informac´ı. Pˇri vyhodnocen´ı akce AkceBoj je uˇzivateli pouze zobrazen dialog s v´ ysledkem boje.
Obr´azek 5.3: Uk´azka zobrazen´ı hodu kostkou
Obr´azek 5.4: v knihovnˇe
37
Uk´azka
obrazovky
Realizace mobiln´ıho klienta
5.4.3
S´ıt’ov´a komunikace
Knihovna
V knihovnˇe jsou uˇzivateli zobrazeny gamebooky dostupn´e ke staˇzen´ı i gamebooky, kter´e jiˇz m´a v zaˇr´ızen´ı staˇzen´e, viz obr. 5.4. V aktivitˇe LibraryActivity jsou obsaˇzeny dvˇe z´aloˇzky se seznamy gamebook˚ u, tj. dostupn´ ych ke staˇzen´ı a jiˇz staˇzen´ ych. Po kliknut´ı na dan´ y gamebook je zobrazen jeho detail fragmentem DetailBookFragment, kde je moˇzn´e tento gamebook st´ahnout, smazat nebo vybrat pro hran´ı v z´avislosti na tom, z jak´e z´aloˇzky byl gamebook vybr´an. Na zaˇr´ızen´ı s velkou obrazovkou je detail gamebooku zobrazen vedle seznamu. Na zaˇr´ızen´ı s malou obrazovkou a v reˇzimu portrait je spuˇstˇena nov´a aktivita DetailBookActivity.
5.5
S´ıt’ov´ a komunikace
Aplikace vyuˇz´ıv´a pro s´ıt’ovou komunikaci knihovnu Volley a pro stahov´an´ı gamebooku syst´emovou sluˇzbu DownloadManager. Aplikace prov´ad´ı s´ıt’ov´e operace popsan´e v kapitole 4.1. D´ale bude pops´ana jejich implementace.
5.5.1
Implementace knihovny Volley
Pro vyuˇz´ıv´an´ı knihovny Volley byla implementov´ana tˇr´ıda VolleySingleton podle n´avrhov´eho vzoru jedin´aˇcek (Singleton) a tˇr´ıda RequestFactory. Tˇr´ıda RequestFactory obsahuje metody pro vytv´aˇren´ı poˇzadavk˚ u na s´ıt’ov´e operace (seznam a hodnocen´ı gamebook˚ u) reprezentovan´e instancemi tˇr´ıdy StringRequest. Pˇri vytv´aˇren´ı poˇzadavku jsou pˇred´av´any instance tˇr´ıd Response.Listener (´ uspˇech) a Response.ErrorListener (ne´ uspˇech), jejichˇz metody jsou po dokonˇcen´ı zavol´any v z´avislosti na v´ ysledku dotazu. Tˇr´ıda VolleySingleton pˇrid´av´a vytvoˇren´e poˇzadavky do fronty, ze kter´e jsou automaticky vyb´ır´any a asynchronnˇe zpracov´av´any. V´ ybˇer a zpracov´an´ı poˇzadavku je prov´adˇen knihovnou Volley a program´ator ho nemus´ı ˇreˇsit.
5.5.2
Z´ısk´ an´ı seznamu dostupn´ ych gamebook˚ u
Z´ısk´an´ı seznamu dostupn´ ych gamebook˚ u vyuˇz´ıv´a fragment InternetListFragment, kter´ y tento seznam tak´e zobraz´ı. Fragment dˇed´ı od abstraktn´ı tˇr´ıdy LibraryListFragment a implementuje metodu fillList(), ve kter´e prob´ıh´a zasl´an´ı poˇzadavku na server o seznam dostupn´ ych gamebook˚ u.
38
Realizace mobiln´ıho klienta
S´ıt’ov´a komunikace
Nejprve je zkontrolov´ana dostupnost s´ıtˇe, pot´e je tˇr´ıdou URLFactory vygenerov´ana URL adresa, kde je dostupn´ y seznam gamebook˚ u. URL (Uniform Resource Locator) je ˇretˇezec, kter´ y jednoznaˇcnˇe urˇcuje um´ıstˇen´ı (adresu) zdroje dostupn´eho na internetu. N´aslednˇe se zjist´ı, zda poˇzadavek na danou URL adresu nen´ı uloˇzen v pamˇeti, viz 5.4. Pokud ano, je zpracov´an a zobrazen seznam, jinak je vytvoˇren poˇzadavek, kter´ y je pˇrid´an do fronty tˇr´ıdou VolleySingleton a n´aslednˇe zpracov´an. // Vygenerov´ an´ ı url pro seznam String url = URLFactory.generateURL4bookReqMalPal(); // Z´ ısk´ an´ ı cache pamˇ eti Cache cache = VolleySingleton.getInstance(getActivity()). getRequestQueue().getCache(); // Z´ ısk´ an´ ı z´ aznamu pro danou url adresu Entry entry = cache.get(url); if(entry != null){ // Zpracovan´ ı z´ aznamu z cache pamˇ eti Uk´azka k´odu 5.4: Vytvoˇren´ı datab´aze ve tˇr´ıdˇe GameBookApplication Pˇri pˇrid´av´an´ı poˇzadavku do fronty jsou tak´e pˇred´any reference na objekty tˇr´ıd, ve kter´ ych je zpracov´ana pˇrijat´a odpovˇed’ a pˇri u ´spˇeˇsn´em pˇrijet´ı zpr´avy je zobrazen seznam gamebook˚ u, kter´e je moˇzn´e st´ahnout. Pˇrijat´ y seznam je odfiltrov´an a jsou zobrazeny pouze gamebooky, kter´e jeˇstˇe nejsou staˇzeny.
5.5.3
Staˇ zen´ı gamebooku
Staˇzen´ı gamebooku je implementov´ano ve fragmentu DetailBookFragment a je implementov´ano s vyuˇzit´ım syst´emov´e sluˇzby DownloadManager. Staˇzen´ı prob´ıh´a na stejn´em principu jako u knihovny Volley, nejdˇr´ıve je vytvoˇrena adresa pro staˇzen´ı a poˇzadavek, viz 5.5. D´ale je poˇzadavku nastaveno kam m´a b´ yt soubor s gamebookem uloˇzen a nakonec je poˇzadavek zaˇrazen do fronty pro staˇzen´ı (zaˇcne stahov´an´ı). Pˇri z´ısk´av´an´ı instance DownloadManageru je registrov´an BroadcastReceiver, kter´ y reaguje na zpr´avy zaslan´e DownloadManagerem. Zpracov´an´ım tˇechto zpr´av fragment reaguje na v´ ysledek dokonˇcen´ı stahov´an´ı, at’ jiˇz u ´spˇeˇsn´ y nebo ne´ uspˇeˇsn´ y. Po u ´spˇeˇsn´em dokonˇcen´ı je uloˇzen´ y gamebook importov´an do datab´aze a soubor smaz´an. Pokud uˇzivatel bˇehem stahov´an´ı opust´ı DetailBookFragment, je BroadcastReceiver odregistrov´an a nen´ı tedy moˇzn´e reagovat na zpr´avy od DownloadManageru, ale stahov´an´ı pokraˇcuje automaticky d´ale. Po dokonˇcen´ı stahov´an´ı nen´ı gamebook, v tomto pˇr´ıpadˇe automaticky importov´an do datab´aze, ale je jen staˇzen a uloˇzen. Pro import je potˇreba, aby se uˇzivatel znovu dostal do fragmentu s dan´ ym gamebookem. Pˇri vytv´aˇren´ı fragmentu je kontrolov´ano, zda nen´ı soubor s gamebookem 39
Realizace mobiln´ıho klienta
Nastaven´ı aplikace
jiˇz staˇzen. Pokud je soubor uˇz staˇzen´ y, potom je gamebook automaticky importov´an do datab´aze. // Vytvoˇ ren´ ı adresy podle id a jazyka poˇ zadovan´ e knihy Uri uri = Uri.parse(URLFactory.generatURL4DownloadBook(book.id, book.language)); // Vytvoˇ ren´ ı poˇ zadavku DownloadManager.Request request = new DownloadManager.Request(uri); Uk´azka k´odu 5.5: Vytvoˇren´ı poˇzadavku pro staˇzen´ı gamebooku
5.5.4
Hodnocen´ı gamebooku
Hodnocen´ı gamebooku prob´ıh´a ve fragmentu DetailBookFragment. Odesl´an´ı hodnocen´ı se prov´ad´ı v metodˇe onRating(). Odesl´an´ı prob´ıh´a podobnˇe jako staˇzen´ı seznamu dostupn´ ych gamebook˚ u. Nejprve je vygenerov´ana URL adresa na z´akladˇe id hodnocen´eho gamebooku a vytvoˇren poˇzadavek (instance tˇr´ıdy StringRequest). N´aslednˇe je poˇzadavek opˇet pˇrid´an do fronty poˇzadavk˚ u tˇr´ıdou VolleySingleton, ze kter´e je vybr´an a zpracov´an.
5.6
Nastaven´ı aplikace
Aplikace umoˇzn ˇuje uˇzivateli prov´est tato nastaven´ı: • pouˇz´ıvat kostku pˇri proch´azen´ı gamebooku, tzn. nechat uˇzivatele h´azet kostkou (zobrazit animaci), pˇri vypnut´ı nen´ı uˇzivateli animace zobrazena a je pˇr´ımo posl´an do pˇr´ısluˇsn´eho stavu, • zmˇenit font p´ısma, • nastavit z´akladn´ı velikost p´ısma pˇri startu nov´e hry, • moˇznost zobrazen´ı ˇsipky (tlaˇc´ıtka) na hern´ı obrazovce pro vysunut´ı menu s nab´ıdkou. Implementace nastaven´ı je obsaˇzena v aktivitˇe SettingsActivity, kter´a dˇed´ı od tˇr´ıdy SherlockPreferenceActivity. Z d˚ uvodu kompatibility pro zaˇr´ızen´ı s verz´ı niˇzˇs´ı neˇz 3.0 je UI s nastaven´ımi vkl´ad´ano pˇr´ımo do aktivity. Pro zaˇr´ızen´ı od verze 3.0 je pouˇzit fragment, jenˇz je reprezentov´an statickou vnitˇrn´ı tˇr´ıdou PrefsFragment, kter´a dˇed´ı od tˇr´ıdy PreferenceFragment. Implementace nastaven´ı nen´ı d´ıky 40
Realizace mobiln´ıho klienta
Nastaven´ı aplikace
Android API sloˇzit´a. Je tˇreba vytvoˇrit XML soubor ve adres´aˇri /res/xml s definic´ı dostupn´ ych nastaven´ı. N´aslednˇe v aktivitˇe nebo fragmentu, kter´ y dˇed´ı od pˇr´ısluˇsn´eho rodiˇce a umoˇzn ˇuje implementaci nastaven´ı, pˇridat tento XML soubor vol´an´ım metody addPreferencesFromResource(). Syst´em automaticky zaznamen´av´a vybran´e poloˇzky uˇzivatelem a ukl´ad´a je. Kaˇzd´a poloˇzka definovan´a v XML souboru m´a sv˚ uj unik´atn´ı kl´ıˇc, atribut android:key, pod t´ımto kl´ıˇcem je n´aslednˇe nastaven´a hodnota pˇr´ıstupn´a kdekoliv v aplikaci, viz 5.6. Kl´ıˇce jsou uloˇzeny ve tˇr´ıdˇe PrefTags. Pro v´ ybˇer z´akladn´ı velikosti fontu bylo potˇreba implementovat tˇr´ıdu NumberPickerPrefDialog, kter´a umoˇzn ˇuje vybrat ˇc´ıslo. // Z´ ısk´ an´ ı instance pro pˇ r´ ıstup k nastaven´ ı SharedPreferences settingsPref = PreferenceManager.getDefaultSharedPreferences(this); /*Z´ ısk´ an´ ı konkr´ etn´ ı hodnoty pod kl´ ıc ˇem (String) prefKey, pokud hodnota nen´ ı nalezena bude vr´ acena hodnota defValue */ int value = settingsPref.getInt(prefKey, defValue); Uk´azka k´odu 5.6: Z´ısk´an´ı hodnoty z nastaven´ı aplikace
41
6 Testov´an´ı Pro ovˇeˇren´ı funkcionality vytvoˇren´e aplikace bylo provedeno testov´an´ı na vybran´ ych mobiln´ıch telefonech a tabletu. Aplikace byla testov´ana na zaˇr´ızen´ıch, kter´a jsou uvedena v tab. 6.1. V tabulce je vˇzdy uveden n´azev zaˇr´ızen´ı, verze Androidu a rozliˇsen´ı jeho obrazovky. Testov´an´ı prob´ıhalo na re´aln´ ych i na virtualizovan´ ych zaˇr´ızen´ıch. Virtualizovan´ ym zaˇr´ızen´ım je myˇslen emul´ator zaˇr´ızen´ı, kter´ y emuluje dan´e zaˇr´ızen´ı s operaˇcn´ım syst´emem Android. Testov´an´ı bylo prov´adˇeno autorem pr´ace, ale i uˇzivateli, kteˇr´ı se s aplikac´ı setkali poprv´e. Zaˇ r´ızen´ı
Verze
Samsung S6500 Galaxy Mini II HTC One V Sony Xperia M Dual Custom Tablet (virtualizace) Samsung Galaxy S2 (virtualizace) LG P710 LG Optimus L3 II (virtualizace) Samsung Nexus S Samsung S5690 Galaxy Xcover
2.3.6 4.0.3 4.3 5.0.0 4.1.1 4.1.2 4.1.1 4.1.2 2.3.6
Rozliˇ sen´ı obrazovky v px 480 800 854 2560 800 800 320 800 480
x x x x x x x x x
320 480 480 1600 480 480 240 480 320
Tabulka 6.1: Zaˇr´ızen´ı, na kter´ ych byla aplikace testov´ana
6.1
Pr˚ ubˇ eh testov´ an´ı
Aplikace byla pˇri v´ yvoji pr˚ ubˇeˇznˇe testov´ana autorem. Pro z´apis log˚ u byla pouˇzita knihovna logback-android, kter´a umoˇzn ˇovala pokroˇcilejˇs´ı nastaven´ı logovac´ıch zpr´av (form´at, v´ ystup). Testeˇri (bˇeˇzn´ı uˇzivatel´e) dostali jiˇz hotovou aplikaci a mˇeli za u ´kol aplikaci prozkoumat a vyzkouˇset vˇsechny funkce aplikace nebo alespoˇ n ty nejd˚ uleˇzitˇejˇs´ı, mezi kter´e patˇr´ı: • proch´azen´ı gamebooku, • zmˇena velikosti p´ısma, • hod kostkami, • pˇrechod mezi jednotliv´ ymi obrazovkami textu, 42
Testov´an´ı
Testov´an´ı nestandardn´ıch ud´alost´ı
• staˇzen´ı nov´eho gamebooku, • vybr´an´ı a prohl´ıˇzen´ı staˇzen´eho gamebooku, • hodnocen´ı gamebooku.
6.2
Testov´ an´ı nestandardn´ıch ud´ alost´ı
D´ale bylo na vybran´ ych zaˇr´ızen´ıch provedeno nˇekolik test˚ u, ve kter´ ych byla aplikace vystavena nestandardn´ım situac´ım, tzn. takov´ ym situac´ım, kter´e mohou nastat nez´avisle na aplikaci pˇri jej´ım pouˇz´ıv´an´ı. Mezi tyto testovan´e situace pˇri pouˇz´ıv´an´ı aplikace patˇr´ı: • pˇrijet´ı SMS (Short Message Service) zpr´avy, • pˇr´ıchoz´ı hovor, • fungov´an´ı aplikace pˇri nedostupn´e s´ıti, • smaz´an´ı lok´aln´ıch dat aplikace a jej´ı nov´e spuˇstˇen´ı.
6.3
V´ ysledky testov´ an´ı
Pˇri testov´an´ı bylo uˇzivateli zjiˇstˇeno, ˇze pˇri zmˇenˇe orientace obrazovky v seznamu gamebook˚ u, kter´e je moˇzn´e st´ahnout, doch´azelo k p´adu aplikace z d˚ uvodu neinicializovan´e reference na objekt a vyvol´an´ı v´ yjimky NullPointerException. Probl´em byl vyˇreˇsen otestov´an´ım reference na hodnotu null pˇred jeho pouˇzit´ım. Druh´ ym zjiˇstˇen´ ym probl´emem bylo nezobrazen´ı seznamu staˇziteln´ ych gamebook˚ u pˇri pomal´em pˇripojen´ı k internetu. Rychlost internetu byla v zaˇr´ızen´ı omezena oper´atorem po vyˇcerp´an´ı limitu. I kdyˇz pˇripojen´ı fungovalo, knihovna Volley nedok´azala poˇzadavek zpracovat a v´ ysledek vyhodnotila jako nepodaˇren´ y (zavol´ana metoda pro obsluhu v´ ysledku, kter´ y skonˇcil chybou). Uˇzivateli pak byl zobrazen pr´azdn´ y seznam. Tento probl´em se projevil pouze u jednoho testovan´eho zaˇr´ızen´ı, ale ne vˇzdy, po v´ıce pokusech se seznam podaˇrilo st´ahnout. Takov´e chov´an´ı aplikace nen´ı moˇzn´e jednoduˇse ovlivnit, protoˇze poˇzadavek zpracov´av´a knihovna. V pˇr´ıpadˇe ne´ uspˇechu je proto uˇzivatel pouze informov´an, aby se pokusil znovu obnovit seznam pomoc´ı akce v Action Baru. Jin´e z´avaˇzn´e probl´emy objeveny nebyly. Testeˇri mˇeli pouze pˇripom´ınky k UI, ale tyto pˇripom´ınky lze povaˇzovat za subjektivn´ı, protoˇze se liˇsily. Lze
43
Testov´an´ı
Moˇzn´a rozˇs´ıˇren´ı
oˇcek´avat, ˇze po dlouhodobˇejˇs´ım pouˇz´ıv´an´ı aplikace (po jej´ı distribuci) se na z´akladˇe reakc´ı uˇzivatel˚ u uk´aˇze, kter´e ˇc´asti UI by mˇely b´ yt optimalizov´any. Z v´ ykonnostn´ıho hlediska nebyl testery nalezen ˇza´dn´ y z´avaˇzn´ y probl´em. Aplikace fungovala bez probl´em˚ u s plynulost´ı zobrazen´ı. Pouze pˇri testov´an´ı aplikace na tabletu, kter´ y byl virtualizovan´ y, aplikace nefungovala zcela plynule, ale to bylo zp˚ usobeno velk´ ymi syst´emov´ ymi n´aroky na virtualizaci zaˇr´ızen´ı. Obdobn´e probl´emy maj´ı na tomto zaˇr´ızen´ı i jin´e aplikace.
6.3.1
Nestandardn´ı ud´ alosti
Pˇri testov´an´ı nestandardn´ıch ud´alost´ı nebyl nalezen ˇza´dn´ y probl´em. Aplikace zvl´adala vˇsechny situaci uveden´e v kapitole 6.2. Pˇr´ıchoz´ı hovor je moˇzn´e pˇrijmout a po jeho skonˇcen´ı je aplikace vr´acena do popˇred´ı. Aplikace nepotˇrebuje st´al´e pˇripojen´ı k s´ıti, pouze pˇri stahov´an´ı gamebooku nebo seznamu dostupn´ ych gamebook˚ u. Pokud uˇzivatel chce zobrazit seznam staˇziteln´ ych gamebook˚ u a nen´ı dostupn´a s´ıt’, je o tom informov´an dialogem. Pokud dojde k v´ ypadku spojen´ı bˇehem stahov´an´ı gamebooku, tak tento probl´em ˇreˇs´ı sama syst´emov´a sluˇzba DownloadManager. Pˇri smaz´an´ı lok´an´ıch dat jsou smaz´any vˇsechny staˇzen´e knihy a veˇsker´ y postup ve hˇre, ale po opˇetovn´em spuˇstˇen´ı aplikace je znovu vytvoˇrena datab´aze a naimportov´any gamebooky distribuovan´e s aplikac´ı a aplikace m˚ uˇze opˇet fungovat.
6.4
Moˇ zn´ a rozˇ s´ıˇ ren´ı
Aplikace samozˇrejmˇe obsahuje ˇca´sti, kter´e je moˇzn´e d´ale rozˇsiˇrovat a vylepˇsovat. K implementovan´e funkcionalitˇe by mohla b´ yt pˇrid´ana i nov´a funkcionalita (a v budoucnu by i mˇela b´ yt pˇrid´ana). Mezi moˇzn´a rozˇs´ıˇren´ı, kter´a by mohla b´ yt implementov´ana patˇr´ı: • filtrov´an´ı gamebook˚ u, kter´e je moˇzn´e st´ahnout (podle jazyka, ˇz´anru atd.), • ozvuˇcen´ı aplikace, • pˇrid´an´ı obr´azk˚ u, kter´e souvis´ı s pˇr´ıbˇehem gamebooku pˇr´ımo do textu, • propojen´ı aplikace se soci´aln´ımi s´ıtˇemi (facebook), napˇr. moˇznost sd´ılet dosaˇzen´e u ´spˇechy ve hˇre, • moˇznost volit r˚ uzn´e vzhledy aplikace, • implementace zobrazen´ı pr˚ ubˇehu boje. 44
7 Z´avˇer Gamebook je kniha, ve kter´e je moˇzn´e prov´adˇet rozhodnut´ı, jak se bude pˇr´ıbˇeh d´ale vyv´ıjet a do jist´e m´ıry si tak pˇr´ıbˇeh knihy m˚ uˇze ˇcten´aˇr urˇcovat s´am. Po pˇreˇcten´ı dan´e ˇca´sti textu knihy jsou nab´ıdnuty moˇznosti, pro kter´e je moˇzn´e se rozhodnout. Zvolen´ım jedn´e z tˇechto moˇznost´ı je ˇcten´aˇr odk´az´an na jinou ˇc´ast, kter´a na pˇredchoz´ı navazuje a takto pokraˇcuje aˇz do konce. C´ılem t´eto bakal´aˇrsk´e pr´ace bylo navrhnout, realizovat a ovˇeˇrit funkcionalitu mobiln´ıho klienta pro platformu Android, kter´ y umoˇzn ˇuje proch´azet gamebooky vytvoˇren´e ve vyv´ıjen´em syst´emu. Tento c´ıl pr´ace byl splnˇen. Pˇri implementaci bylo potˇreba spolupracovat (spoluvytv´aˇret sd´ılenou knihovnu) s autorem programu pro tvorbu gamebook˚ u (editoru). V r´amci pr´ace jsem nejprve prozkoumal vybran´e mobiln´ı aplikace, kter´e umoˇzn ˇuj´ı proch´azen´ı gamebook˚ u. Pˇri porovn´an´ı existuj´ıc´ıch aplikac´ı jsem nenalezl ˇza´dnou aplikaci, kter´a by obsahovala gamebook v ˇcesk´em jazyce. D´ale jsem popsal vyv´ıjen´ y syst´em pro publikov´an´ı gamebook˚ u a navrhl mobiln´ıho klienta umoˇzn ˇuj´ıc´ıho gamebooky vytvoˇren´e v tomto syst´emu proch´azet. Navrˇzen´eho mobiln´ı klienta jsem n´aslednˇe implementoval na platformˇe Android a ovˇeˇril jeho funkcionalitu. Mobiln´ı klient umoˇzn ˇuje proch´azen´ı gamebook˚ u a staˇzen´ı novˇe vydan´ ych gamebook˚ u. Mobiln´ı klient bude d´ale rozˇsiˇrov´an a vyv´ıjen o funkcionalitu popsanou v kap. 6.4. Aplikace je pˇripravena na publikov´an´ı v obchodˇe Google play. Jakmile bude dokonˇcen dostatek gamebook˚ u, kter´e budou spolu s aplikac´ı publikov´any, bude aplikace v tomto obchodˇe dostupn´a. Aplikace byla otestov´ana na vybran´e mnoˇzinˇe uˇzivatel˚ u a pˇredstavuje vhodn´ y pˇrechod od kniˇzn´ı podoby gamebook˚ u k elektronick´e formˇe.
45
Seznam pouˇ zit´ ych zkratek a v´ yraz˚ u Action Bar
Grafick´a komponenta (liˇsta) na platformˇe Android um´ıstˇen´a v horn´ı ˇc´asti obrazovky (pˇr´ıpadnˇe i doln´ı), kter´a uˇzivateli usnadˇ nuje navigaci v aplikaci.
ADT
Android Development Tools - plugin pro Eclipse IDE umoˇzn ˇuj´ıc´ı v´ yvoj pro platformu Android.
API
Application Programming Interface - rozhran´ı pro programov´an´ı aplikac´ı.
DDL
Data Definition Language - pˇr´ıkazy jazyka SQL pro vytv´aˇren´ı a upravov´an´ı struktury datab´aze.
DML
Data Manipulation Language - pˇr´ıkazy jazyka SQL pro manipulaci s daty datab´aze.
DOM
Document Object Model – objektov´ y model dokumentu umoˇzn ˇuj´ıc´ı pˇr´ıstup k jednotliv´ ym objekt˚ um dokumentu.
dp
Density-independent pixel - virtu´aln´ı pixel obrazovky, kter´ y je nez´avisl´ y na hustotˇe pixel˚ u dan´e obrazovky.
Framework
N´astroj (obecnˇe) pro usnadnˇen´ı a urychlen´ı v´ yvoje aplikace.
Google play
Sluˇzba prim´arnˇe urˇcen´a pro distribuci aplikac´ı pro platformu Android, umoˇzn ˇuje ale distribuovat i jin´ y digit´aln´ı obsah.
HTML
HyperText Markup Language - znaˇckovac´ı jazyk pouˇz´ıvan´ y k tvorbˇe webov´ ych str´anek.
HTTP
HyperText Transfer Protocol - internetov´ y protokol pro pˇren´aˇsen´ı HTML dokument˚ u.
JDK
Java Development Kit - z´akladn´ı n´astroje pro v´ yvoj aplikac´ı na platformu JAVA.
Landscape
Zobrazen´ı obrazovky na ˇs´ıˇrku na platformˇe Android.
Non-volatile
Pamˇet’, kter´a dok´aˇze uchovat data i bez nap´ajen´ı. 46
Z´avˇer Open Source
Software s otevˇren´ ym zdrojov´ ym k´odem.
Portrait
Zobrazen´ı obrazovky na v´ yˇsku na platformˇe Android.
SAX
Simple API for XML - API umoˇzn ˇuj´ıc´ı proudov´e zpracov´an´ı XML souboru.
SDK
Software development kit - mnoˇzina n´astroj˚ u urˇcen´a pro v´ yvoj aplikac´ı.
SMS
Short Message Service - sluˇzba umoˇzn ˇuj´ıc´ı posl´an´ı kr´atk´e (160 znakov´e) textov´e zpr´avy.
SQL
Structured Query Language - jazyk pro pr´aci s relaˇcn´ımi datab´azemi.
UI
User Interface - uˇzivatelsk´e rozhran´ı.
UML
Unified Modeling Language - jazyk pro vizu´aln´ı modelov´an´ı syst´em˚ u.
URL
Uniform Resource Locator - ˇretˇezec jednoznaˇcnˇe urˇcuj´ıc´ı um´ıstˇen´ı (adresu) zdroje dostupn´eho na internetu.
XML
Extensible Markup Language - rozˇsiˇriteln´ y znaˇckovac´ı jazyk urˇcen´ y pro pˇrenos dat.
47
Literatura [1] GOOGLE. Android Developers [online]. 2015 [cit. 2015-04-01]. Dostupn´e z: http: //developer.android.com/ [2] Strategy Analytics: Android Shipped 1 Billion Smartphones Worldwide in 2014. In: PR Newswire [online]. 2015 [cit. 2015-04-01]. Dostupn´e z: http: //www.prnewswire.com/news-releases/strategy-analytics-androidshipped-1-billion-smartphones-worldwide-in-2014-300027707.html [3] GOOGLE. Android Open Source Project [online]. 2015 [cit. 2015-04-03]. Dostupn´e z: https://source.android.com/ ˇ ´ CEK. ˇ [4] CADA, Roman, Tom´aˇs KAISER a Zdenˇek RYJA Diskr´etn´ı matematika. Plzeˇ n: Z´apadoˇcesk´a univerzita, 204. ISBN 80-7082-939-7 [5] CHOICE OF GAMES LLC. Choice of Games [online]. 2015 [cit. 2015-04-03]. Dostupn´e z: https://www.choiceofgames.com/ [6] SOSINSKY, Barrie A. Mistrovstv´ı – poˇc´ıtaˇcov´e s´ıtˇe. Vyd. 1. Brno: Computer Press, 2010, 840 s. Mistrovstv´ı (Computer Press). ISBN 978-80-251-3363-7. [7] ALLEN, Grant. Android 4: pr˚ uvodce programov´an´ım mobiln´ıch aplikac´ı. 1. vyd. Pˇreklad Jakub Muˇz´ık. Brno: Computer Press, 2013, 656 s. ISBN 978-80-2513782-6. [8] MURPHY, Mark L. Android 2: pr˚ uvodce programov´an´ım mobiln´ıch aplikac´ı. Vyd. 1. Brno: Computer Press, 2011, 375 s. ISBN 978-80-251-3194-7. [9] TUTORIALS POINT. Android Programming Tutorial [online]. 2014 [cit. 201504-04]. Dostupn´e z: http://www.tutorialspoint.com/about/index.htm [10] VOGELLA COMPANY. Android Development [online]. 2015 [cit. 2015-04-04]. Dostupn´e z: http://www.vogella.com/tutorials/android.html [11] STACK EXCHANGE INC. Stackoverflow [online]. 2015 [cit. 2015-04-04]. Dostupn´e z: http://stackoverflow.com/ 48
LITERATURA
LITERATURA
[12] Transmitting Network Data Using Volley. GOOGLE. Android Developers [online]. 2015 [cit. 2015-04-18]. Dostupn´e z: https://developer.android.com/ training/volley/index.html [13] Dashboards. GOOGLE. Android Developers [online]. 2015 [cit. 2015-04-18]. Dostupn´e z: https://developer.android.com/about/dashboards/index.html? utm_source=suzunone [14] DownloadManager. GOOGLE. Android Developers [online]. 2015 [cit. 2015-0419]. Dostupn´e z: http://developer.android.com/reference/android/app/ DownloadManager.html [15] Saving Data. GOOGLE. Android Developers [online]. 2015 [cit. 2015-04-19]. Dostupn´e z: http://developer.android.com/training/basics/data-storage/ index.html [16] ARLOW, Jim a Ila NEUSTADT. UML 2 a unifikovan´y proces v´yvoje aplikac´ı: objektovˇe orientovan´a anal´yza a n´avrh prakticky. 2. akt. a dopl. vyd. Pˇreklad Bogdan Kiszka. Brno: Computer Press, 2007, 567 s. ISBN 978-80-251-1503-9. [17] HANA, Kanisov´a a M¨ uller MIROSLAV. UML srozumitelnˇe. Vyd. 1. Brno: Computer Press, 2004, 157 s. ISBN 80-251-0231-9. [18] Fragments. GOOGLE. Android Developers [online]. 2015 [cit. 2015-04-19]. Dostupn´e z: http://developer.android.com/guide/components/fragments. html [19] App Manifest. GOOGLE. Android Developers [online]. 2015 [cit. 2015-0419]. Dostupn´e z: http://developer.android.com/guide/topics/manifest/ manifest-intro.html
49
Seznam pˇ r´ıloh Uˇzivatelsk´a pˇr´ıruˇcka - Pˇr´ıloha A Obsah CD - Pˇr´ıloha B Pouˇzit´e knihovny - Pˇr´ıloha C
50
A Uˇzivatelsk´a pˇr´ıruˇcka Uˇzivatelsk´a pˇr´ıruˇcka obsahuje z´akladn´ı informace o aplikaci, tj. co aplikace umoˇzn ˇuje (jej´ı funkce), popis jej´ı instalace a ovl´ad´an´ı.
A.1
Poˇ zadavky aplikace
Pro spr´avn´e fungov´an´ı aplikace je potˇreba, aby zaˇr´ızen´ı, na kter´e se bude aplikace instalovat, obsahovala minim´alnˇe verzi 2.3 (Gingerbread) operaˇcn´ıho syst´emu Android a extern´ı SD kartu. Pˇri instalaci jsou vyˇzadov´ana tato opr´avnˇen´ı: 1. pˇr´ıstup k internetu, 2. z´apis do extern´ıho u ´loˇziˇstˇe, 3. zjiˇstˇen´ı stavu s´ıtˇe.
A.2
Instalace
K nainstalov´an´ı aplikace je potˇreba zkop´ırovat pˇriloˇzen´ y soubor GameBook.apk do zaˇr´ızen´ı (na extern´ı SD kartu nebo na vnitˇrn´ı pamˇet’). Po zkop´ırov´an´ı naleznˇete pomoc´ı souborov´eho manaˇzera soubor v zaˇr´ızen´ı. Pˇred instalac´ı je potˇreba na nˇekter´ ych verz´ıch Androidu v nastaven´ı povolit instalaci z nezn´am´ ych zdroj˚ u. Pro povolen´ı jdˇete do / Nastaven´ı / Zabezpeˇcen´ı / Nezn´ame zdroje a zaˇskrtnˇete poloˇzku Nezn´am´e zdroje, viz obr. A.2. Soubor vyberte stiskem. Pokud se zobraz´ı nab´ıdka Dokonˇcit akci pomoc´ı, viz obr. A.1, pak stisknˇete volbu Instalaˇcn´ı program bal´ıˇck˚ u. D´ale se objev´ı nab´ıdka, zda chcete tuto aplikaci nainstalovat, viz obr. A.3. Stisknˇete tlaˇc´ıtko Instalovat a aplikace se zaˇcne instalovat. Po u ´spˇeˇsn´em nainstalov´an´ı je moˇzn´e aplikaci spustit
A.3
Ovl´ ad´ an´ı aplikace
Po spuˇstˇen´ı aplikace je zobrazena obrazovka s animac´ı, viz obr. A.4, na t´eto obrazovce by uˇzivatel mˇel vyˇckat neˇz se spust´ı obrazovka s menu, viz obr. A.5. Obrazovka 51
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.1: Uk´azka z instalace aplikace
Obr´azek A.2: Povolen´ı instalace z nezn´am´ ych zdroj˚ u
s animac´ı se nemus´ı objevit vˇzdy, zpravidla pouze pˇri prvn´ım spuˇstˇen´ı aplikace. V menu jsou um´ıstˇena tlaˇc´ıtka Nov´a Hra, Pokraˇcovat a Knihovna. Kliknut´ım na tlaˇc´ıtko Nov´a Hra, se spust´ı proch´azen´ı aktu´alnˇe vybran´eho gamebooku. Jm´eno vybran´eho gamebooku je zobrazeno v lev´em doln´ım rohu obrazovky. V pˇr´ıpadˇe, ˇze nen´ı vybr´an ˇza´dn´ y gamebook je spuˇstˇen gamebook distribuovan´ y s aplikac´ı. Tlaˇc´ıtko Pokraˇcovat je moˇzn´e stisknout pokud je nˇejak´ y gamebook uˇz proch´azen. Pokud se klikne na novou hru, je zobrazen dialog, zda m´a b´ yt skuteˇcnˇe spuˇstˇena nov´a hra a pˇrepsat p˚ uvodn´ı. V pˇr´ıpadˇe, ˇze hra nen´ı rozehran´a, dialog se nezobraz´ı. Kliknut´ım na tlaˇc´ıtko Knihovna se spust´ı knihovna s gamebooky, kter´e jsou v zaˇr´ızen´ı jiˇz staˇzeny a s gamebooky, kter´e je moˇzn´e st´ahnout. V menu je um´ıstˇen tak´e Action Bar (liˇsta v horn´ı ˇc´asti obrazovky), ve kter´e jsou um´ıstˇeny akce pro zobrazen´ı informac´ı o programu, nastaven´ı aplikace a ukonˇcen´ı aplikace. Rozloˇzen´ı se m˚ uˇze na r˚ uzn´ ych verz´ıch platformy Android liˇsit, tzn. ˇze na niˇzˇs´ıch verz´ıch Androidu (verze niˇzˇs´ı neˇz 3.0) budou nˇejak´e akce um´ıstˇeny v kontextov´e nab´ıdce vyvolan´e hardwarov´ ym tlaˇc´ıtkem, viz obr. A.6.
52
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.3: Uk´azka z instalace aplikace
Obr´azek A.4: Uk´azka u ´vodn´ı obrazovky po spuˇstˇen´ı
Po kliknut´ı na akci O Programu (ikona s p´ısmenem i) je zobrazen popis aplikace a odkaz na webov´e str´anky cel´eho syst´emu.
A.3.1
Proch´ azen´ı gamebooku
K proch´azen´ı gamebooku je nejprve tˇreba vybrat gamebook z knihovny a kliknout na tlaˇc´ıtko Nov´a hra v hlavn´ım menu aplikace. Pokud nebude gamebook vybr´an z knihovny bude pouˇzit gamebook distribuovan´ y s aplikac´ı. Po kliknut´ı na novou hru bude uˇzivateli zobrazena obrazovka, viz obr. A.7, na kter´e provede z´akladn´ı nastaven´ı hry, tj. jm´eno a pˇr´ıpadnˇe si vybere vlastnosti postavy, kter´e pak ovlivˇ nuj´ı pˇr´ıbˇeh. Po stisknut´ı tlaˇc´ıtka Zaˇc´ıt hru se zobraz´ı u ´vodn´ı stav gamebooku, viz obr. A.8. Pokud text obsahuje v´ıce str´anek je moˇzn´e t´ahnut´ım prstu pˇrech´azet mezi nimi. V Action Baru je moˇzn´e kliknout na akce pro zmenˇsen´ı nebo zvˇetˇsen´ı textu a tak´e restartovat aktu´aln´ı hru. U velk´ ych obrazovek a v reˇzimu obrazovky na ˇs´ıˇrku je vedle textu zobrazena nab´ıdka s moˇznostmi, kter´e je moˇzn´e vykonat, viz obr. A.10. Na ostatn´ıch konfigu53
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.5: Uk´azka hlavn´ıho menu rac´ıch obrazovky se nab´ıdka zobraz´ı kliknut´ım na ˇsipku u prav´eho okraje obrazovky nebo t´ahnut´ım prstu od prav´eho okraje obrazovky. Pro pokraˇcov´an´ı je tˇreba kliknout na jednu z moˇznost´ı. Po kliknut´ı dojde k vyhodnocen´ı a pˇresunu do nov´eho stavu. V pˇr´ıpadˇe boje je zobrazen dialog s v´ ysledkem boje (graficky boj zat´ım nen´ı moˇzn´e proch´azet). U nˇekter´ ych akc´ı je uˇzivatel vyzv´an, aby hodil kostkou, viz obr. A.9. Podle v´ ysledku se odv´ıj´ı dalˇs´ı postup ve hˇre, poprv´e m˚ uˇze uˇzivatel hodit v souˇctu napˇr. 5 a bude nasmˇerov´an do stavu A. Pokud by stejn´ y gamebook hr´al podruh´e a hodil vyˇsˇs´ı ˇc´ıslo neˇz 5 m˚ uˇze b´ yt nasmˇerov´an do jin´eho stavu pˇr´ıbˇehu. Stavy se mohou prol´ınat a touto vlastnost´ı je zajiˇstˇeno, ˇze pokud bude dan´ y gamebook hr´an dvakr´at, nemus´ı se hra vˇzdy vyv´ıjet stejnˇe.
A.3.2
Knihovna
V knihovnˇe jsou zobrazeny dvˇe z´aloˇzky Staˇzen´e a Ke staˇzen´ı, viz obr. A.11. Po kliknut´ı na vybran´ y gamebook je zobrazen detail gamebooku. V zaˇr´ızen´ıch s velkou obrazovkou a pokud je obrazovka zobrazena na ˇs´ıˇrku, je detail zobrazen vedle seznamu.
54
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.6: Uk´azka menu na zaˇr´ızen´ı s verz´ı 2.3
Obr´azek A.7: Uk´azka obrazovky s poˇc´ateˇcn´ım nastaven´ı gamebooku
V detailu pro staˇzen´e gamebooky je moˇzn´e vidˇet obecn´e informace o gamebooku. D´ale je zde poloˇzka s hodnocen´ım gamebooku, na kterou je moˇzn´e kliknout a gamebook ohodnotit. Pod touto poloˇzkou jsou tlaˇc´ıtka pro smaz´an´ı gamebooku a v´ ybˇer gamebooku. Pokud uˇzivatel klikne na tlaˇc´ıtko Vybrat, bude zobrazeno menu aplikace a vybran´ y gamebook bude moˇzn´e hr´at. Hry jsou automaticky ukl´ad´any. Pokud je rozehr´an napˇr. gamebook A, a je vybr´an gamebook B, postup z gamebooku A je uloˇzen. Po opˇetovn´em vybr´an´ı gamebooku A je moˇzn´e pokraˇcovat v p˚ uvodn´ı hˇre, ale je moˇzn´e m´ıt rozehranou pouze jednu hru od kaˇzd´eho gamebooku. Pˇri odstranˇen´ı gamebooku tlaˇc´ıtkem Smazat jsou odstranˇeny i uloˇzen´e hry. V detailu pro gamebooky, kter´e je moˇzn´e st´ahnout, viz obr. A.12, jsou tak´e zobrazeny obecn´e informace o gamebooku a poloˇzka s hodnocen´ım. Zde je hodnocen´ı dan´eho gamebooku pouze zobrazeno a nen´ı moˇzn´e ho hodnotit, to lze aˇz po jeho staˇzen´ı. V tomto detailu je tak´e um´ıstˇeno tlaˇc´ıtko pro staˇzen´ı gamebooku St´ahnout, po kliknut´ı dojde k zah´ajen´ı stahov´an´ı. Pokud by bˇehem stahov´an´ı uˇzivatel opustil obrazovku s detailem gamebooku, pak je potˇreba po dokonˇcen´ı stahov´an´ı se na obrazovku vr´atit, aby mohl b´ yt staˇzen´ y gamebook rozbalen. N´aslednˇe bude gamebook zobrazen v z´aloˇzce staˇzen´ ych
55
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.8: Uk´azka hern´ı obrazovky
A.3.3
Obr´azek A.9: Uk´azka dialogu s kostkami
Nastaven´ı aplikace
Do nastaven´ı aplikace, viz obr. A.13, je moˇzn´e dostat se z menu aplikace kliknut´ım na akci Nastaven´ı v Action Baru (ikona ozuben´eho koleˇcka). V nastaven´ı jsou dvˇe oddˇelen´e sekce, a to Hern´ı Nastaven´ı a Aplikace a V´yvoj´aˇr. V sekci Hern´ı Nastaven´ı je moˇzn´e nastavit nˇekter´a nastaven´ı pro proch´azen´ı hry. Poloˇzka Pouˇz´ıvat kostky oznaˇcuje, zda maj´ı b´ yt ve hˇre zobrazov´any dialogy s kostkou, viz obr. A.9 (je moˇzn´e hodit kostkami u urˇcit´ ych akc´ı). Pokud je poloˇzka vypnuta, nen´ı zobrazen dialog s kostkami a dan´a akce se chov´a jako ostatn´ı rozhodnut´ı (uˇzivatel je posl´an do pˇr´ısluˇsn´eho stavu bez moˇznosti hodu kostkou). Druh´a poloˇzka zobrazuje nab´ıdku pro v´ ybˇer typu p´ısma, kter´ y bude pouˇz´ıv´an pro text pˇri proch´azen´ı gamebooku. Dalˇs´ı poloˇzka zobraz´ı dialog, viz obr. A.14, ve kter´em je moˇzn´e vybrat velikost p´ısma, kter´e bude pouˇzito pˇri spuˇstˇen´ı nov´e hry. Minim´aln´ı velikost je 10 a maxim´aln´ı je 50. Posledn´ı poloˇzka umoˇzn ˇuje nastavit, zda m´a b´ yt zobrazov´ano tlaˇc´ıtko se ˇsipkou v hern´ı obrazovce pro vysouv´an´ı nab´ıdky s moˇzn´ ymi rozhodnut´ımi.
56
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.10: Uk´azka rozloˇzen´ı komponent ve hˇre pˇri orientaci na ˇs´ıˇrku u velk´e obrazovky Ve druh´e sekci nastaven´ı Aplikace a V´yvoj´aˇr nejsou ˇza´dn´a funkˇcn´ı nastaven´ı pouze informace o verzi aplikace, seznam pouˇzit´ ych open source knihoven a softwaru (zobraz´ı se po kliknut´ı na poloˇzku) a poloˇzka, kter´a umoˇzn ˇuje odeslat email se zpˇetnou vazbou nebo zpr´avou o probl´emu.
57
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.11: Uk´azka zobrazen´ı knihovny (seznamu gamebook˚ u)
Obr´azek A.12: Uk´azka detailu staˇziteln´eho gamebooku
58
Uˇzivatelsk´a pˇr´ıruˇcka
Ovl´ad´an´ı aplikace
Obr´azek A.13: Uk´azka obrazovky nastaven´ı
Obr´azek A.14: Uk´azka dialogu pro v´ ybˇer z´akladn´ı velikosti p´ısma
59
B Obsah CD Pˇriloˇzen´e CD obsahuje text pr´ace ve form´atu pdf spolu s jeho zdrojov´ ymi LATEX soubory (adres´aˇr text). D´ale obsahuje v´ yslednou aplikaci ve formˇe instalaˇcn´ıho souboru GameBook.apk v adres´aˇri apk a tak´e ve formˇe zdrojov´ ych soubor˚ u. Zdrojov´e soubory jsou um´ıstˇeny ve sloˇzce src. V t´eto sloˇzce jsou obsaˇzeny jednotliv´e Eclipse IDE projekty knihoven a mobiln´ıho klienta. Adres´aˇrov´a struktura je vidˇet na obr. B.1. / apk...........................Adres´aˇr obsahuj´ıc´ı instalaˇcn´ı soubor aplikace typu apk. GameBook.apk...................Instalaˇcn´ı soubor mobiln´ıho klienta. src...........................Adres´aˇr obsahuj´ıc´ı zdrojov´e soubory ve formˇe projekt˚ u z Eclipse IDE. ActionBarSherlockLibrary GameBook Android Client ...... Eclipse IDE projekt mobiln´ıho klienta. GameBook ClassLibrary ........ Eclipse IDE projekt sd´ılen´e knihovny. NineOldAndroidLibrary SlidingMenuLibrary ViewPagerIndicatorLibrary Volley text..........................Adres´aˇr obsahuj´ıc´ı text pr´ace. latex...........................Zdrojov´e soubory textu pr´ace v LATEX. img..........................Obr´azky pouˇzit´e v textu pr´ace. BP_pribanp.pdf ................ Text pr´ace ve form´atu pdf. Obsah_CD.txt ............... Textov´ y soubor se strukturou CD. Obr´azek B.1: Adres´aˇrov´a struktura pˇriloˇzen´eho CD
60
C Pouˇzit´e knihovny Knihovna
Dostupn´ a z adresy
logback-android logback ActionBarSherlock Nine Old Androids ViewPagerIndicator SlidingMenu
https://github.com/tony19/logback-android http://logback.qos.ch/ http://actionbarsherlock.com/usage.html http://nineoldandroids.com/ http://viewpagerindicator.com/ https://github.com/jfeinstein10/SlidingMenu
Tabulka C.1: Adresy, ze kter´ ych jsou dostupn´e pouˇzit´e knihovny
61