i
ii
ýeské vysoké uþení technické v Praze Fakulta elektrotechnická Katedra poþítaþĤ
BakaláĜská práce
Sledování pĜíjmu potravy pomocí mobilní aplikace Václav Burda
Vedoucí práce: Ing. Daniel Novák, Ph.D.
Studijní program: OtevĜená informatika, bakaláĜský Obor: Softwarové systémy 16. kvČtna 2012
iv
v
PodČkování PĜedevším bych velice rád podČkoval celé své rodinČ za umožnČní studia a za nesmírnou podporu bČhem celého období studia na vysoké škole. Také bych rád podČkoval svému vedoucímu práce, panu Ing. Danielu Novákovi Ph.D., za skvČlé vedení a pravidelné konzultace práce. Nemalý dík patĜí také kolegĤm Davidu Slezákovi a JiĜímu Mosingerovi za jejich spolupráci a cenné rady a dále Jakubu Španielovi za jeho grafický návrh a ikonky pro mobilní aplikaci.
vi
vii
Prohlášení Prohlašuji, že jsem práci vypracoval samostatnČ a použil jsem pouze podklady uvedené v pĜiloženém seznamu. Nemám závažný dĤvod proti užití tohoto školního díla ve smyslu §60 Zákona c. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zmČnČ nČkterých zákonu (autorský zákon).
V Praze dne 16.5.2012
……………………………………
viii
Abstract This thesis introduces to the basics of good nutrition and lifestyle in relation to diabetes mellitus, and compares the available mobile applications used to tracking caloric intake. A mobile application and a web portal for tracking caloric intake and displaying graphical reviews for the selected period was implemented. Evaluation of the functionality and usability of mobile application and web portal was performed. The evaluation concluded that the final mobile application was accepted by users.
Abstrakt Tato práce seznamuje þtenáĜe se základy správné výživy a životosprávy v souvislosti s diabetes mellitus a srovnává dostupné mobilní aplikace urþené pro sledování kalorického pĜíjmu. Na základČ tČchto poznatkĤ je v práci navržena mobilní aplikace a webový portál, který umožĖuje sledovat kalorický pĜíjem a zobrazovat grafické pĜehledy konzumací za vybrané období. Testováním poté byla ovČĜena funkþnost a ovladatelnost aplikace a webového portálu.
ix
x
Obsah 1.
Úvod.......................................................................................................................................1 1.1.
2.
Popis problému, specifikace cíle .........................................................................................3 2.1.
2.2.
2.3.
2.4.
3.
Struktura bakaláĜské práce ........................................................................................2
Zásady správné výživy ..............................................................................................3 2.1.1. Energetický pĜíjem a výdej ..........................................................................3 2.1.2. Skladba potravin v prĤbČhu dne...................................................................4 2.1.3. Pitný režim ...................................................................................................5 Diabetes mellitus .......................................................................................................5 2.2.1. Diabetes mellitus I. typu ..............................................................................5 2.2.2. Diabetes mellitus II. typu .............................................................................6 2.2.3. Shrnutí diabetu .............................................................................................6 Srovnání existujících aplikací....................................................................................6 2.3.1. Zahraniþní aplikace ......................................................................................6 2.3.2. ýeské aplikace..............................................................................................8 Požadavky .................................................................................................................8 2.4.1. Spoleþné požadavky.....................................................................................8 2.4.2. Požadavky na mobilní aplikaci ....................................................................9 2.4.3. Požadavky na webový portál .......................................................................9
Analýza a realizace webového rozhraní ...........................................................................11 3.1.
3.2.
3.3.
Analýza skriptovacích jazykĤ .................................................................................11 3.1.1. ASP.NET....................................................................................................11 3.1.2. PHP ............................................................................................................11 3.1.3. Volba skriptovacího jazyka........................................................................12 Analýza databázových systémĤ...............................................................................12 3.2.1. MySQL ......................................................................................................12 3.2.2. PostgreSQL ................................................................................................12 3.2.3. SQLite ........................................................................................................13 3.2.4. Volba databázového systému.....................................................................13 Implementace webového portálu.............................................................................13 3.3.1. Page Controller ..........................................................................................13 3.3.2. Logování akcí.............................................................................................14 3.3.3. Vykreslování grafĤ.....................................................................................14 3.3.4. Obsluha formuláĜĤ .....................................................................................15 3.3.5. Uživatelské role..........................................................................................16 3.3.6. Implementace databáze ..............................................................................17
xi
xii 4.
OBSAH Analýza a realizace Android aplikace.............................................................................. 21 4.1.
4.2.
5.
Testování aplikace ............................................................................................................. 29 5.1.
5.2. 5.3. 5.4.
5.5. 6.
Analýza požadavkĤ................................................................................................. 21 4.1.1. Volba API levelu ....................................................................................... 21 4.1.2. Hardwarové vybavení................................................................................ 22 Implementace aplikace ........................................................................................... 22 4.2.1. Realizace návrhu ....................................................................................... 23 4.2.2. Komunikace serveru a aplikace................................................................. 23 4.2.3. Propojení aktivit ........................................................................................ 26 4.2.4. Spolupráce s ostatními moduly.................................................................. 27
Screener .................................................................................................................. 29 5.1.1. PĜedkládaný screener................................................................................. 29 5.1.2. Požadované odpovČdi................................................................................ 30 PĜedtestový dotazník............................................................................................... 30 5.2.1. PĜedkládaný dotazník ................................................................................ 30 Potestový dotazník.................................................................................................. 31 5.3.1. PĜedkládaný dotazník ................................................................................ 31 Výsledky testování.................................................................................................. 32 5.4.1. OdpovČdi participantĤ na screener ............................................................ 32 5.4.2. OdpovČdi participantĤ na pĜedtestový dotazník ........................................ 33 5.4.3. OdpovČdi participantĤ na potestový dotazník ........................................... 33 Vyhodnocení testování ........................................................................................... 36
ZávČr ................................................................................................................................... 39 6.1. 6.2. 6.3.
Shrnutí výsledkĤ a splnČní cílĤ............................................................................... 39 PĜínos práce ............................................................................................................ 39 Možnosti dalšího vývoje......................................................................................... 40
A.
Seznam použitých zkratek ................................................................................................ 43
B.
Instrukce testování dietologické þásti aplikace ............................................................... 45
C.
Popis instalace webového portálu a aplikace .................................................................. 47
D.
Screenshoty webového portálu ......................................................................................... 49
E.
Screenshoty mobilní aplikace ........................................................................................... 55
F.
Struktura pĜiloženého CD ................................................................................................ 59
Seznam obrázkĤ Obrázek 3.1 : Ukázka správnČ zpracovaného formuláĜe. ...................................................... 16 Obrázek 3.2 : Funkce webového portálu podle uživatelských rolí. ....................................... 17 Obrázek 3.3 : Relaþní model navrhnuté databáze.................................................................. 18 Obrázek 4.1 : Podíl jednotlivých verzí OS Android (stav k 1.5.2012). ................................. 22 Obrázek 4.2 : Provázanost aktivit aplikace............................................................................ 23 Obrázek 5.1 : Podíl odpovČdí potestového dotazníku. .......................................................... 36
xiii
xiv
Seznam tabulek Tabulka 2.1 : Koeficienty pro pĜepoþet BMR a pohybových aktivit....................................... 4 Tabulka 5.1 : OdpovČdi participantĤ na screener .................................................................. 32 Tabulka 5.2 : OdpovČdi participantĤ na pĜedtestový dotazník .............................................. 33 Tabulka 5.3 : OdpovČdi participantĤ na uzavĜené otázky potestového dotazníku................. 33
xv
xvi
Kapitola 1
1. Úvod V souþasné velmi hektické dobČ velmi þasto zapomínáme na správnou životosprávu a svému tČlu nevČnujeme zdaleka tolik þasu, kolik by si zasloužilo. Naskýtá se nám otázka, proþ nevyužít souþasného rozvoje chytrých telefonĤ k tomu, aby nám alespoĖ trochu pomohli tento stav zlepšit. Motivací pro mČ bylo pĜedevším zjistit o své životosprávČ maximum, jaký vliv na mČ má život vysokoškolského studia spolu s nároþným rozvrhem a nepravidelným denním cyklem a pokusit se tento stav co možná nejvíce vylepšit. V této práci rozeberu zásady správné výživy v porovnání s vlivem diabetes mellitus. Budu se vČnovat zjištČní, jaké aplikace sledování pĜíjmu potravy jsou v souþasné dobČ k dispozici, zdokumentování jejich hlavních pĜedností a nedostatkĤ. Na základČ tČchto poznání se pokusím navrhnout aplikaci, která nabídne lepší vlastnosti a spolu s moduly, na nichž pracuje David Slezák [20] a JiĜí Mosinger [21], umožní získat komplexní pĜehled o prĤbČhu celého dne a noci. Práce popisuje zásady správné výživy a životosprávy, jednotlivé þásti vývoje mobilní aplikace a webového rozhraní, zabývá se klíþovými body implementace, které nejsou triviální a zhodnocuje výhody a nevýhody použitého Ĝešení. V závČru práce je poté navrženo a vyhodnoceno testování aplikace v praktickém použití.
1
2
KAPITOLA 1. ÚVOD
1.1. Struktura bakaláĜské práce Po úvodu se v kapitole Popis problému, specifikace cíle (2) vČnuji zásadám správné výživy a vlivu, který na tyto zásady má diabetes mellitus. Dále zde popisuji podobné dostupné aplikace a jejich klíþové vlastnosti. Na základČ tČchto znalostí stanovuji požadavky pro zpracování této práce. V další kapitole Analýza a realizace webového rozhraní (3) se zabývám implementací webového rozhraní a databáze, zabezpeþením, obsluhou formuláĜĤ a používání grafĤ. V kapitole Analýza a realizace Android aplikace (4) popisuji návrh mobilní aplikace a zdĤvodĖuji zde použité technologie a postupy. Také zde rozebírám a popisuji použití klíþových þásti zdrojového kódu. V kapitole Testování aplikace (5) zjišĢuji, jak aplikace obstojí pĜi reálném použití mezi uživateli. Testování je zde pĜedevším za úþelem ovČĜení plné funkþnosti aplikace a splnČní všech požadavkĤ. Také poskytuje zpČtnou vazbu uživatelĤ, co jim v aplikaci chybí a co by bylo vhodné zlepšit. V kapitole ZávČr (6) je uvedeno zhodnocení celé práce spoleþnČ s návrhy pro další rozvoj a vylepšení aplikace.
Kapitola 2
2. Popis problému, specifikace cíle Cílem této práce je vytvoĜit mobilní aplikaci pro operaþní systém Google Android a webový portál, který umožní uživateli sledovat svĤj kalorický pĜíjem. Na tomto základČ mu umožní vylepšit svou životosprávu. Uživatelé budou mít k dispozici ucelené údaje o svém pĜíjmu potravy, logicky þlenČné do kategorií. Dále budou mít k dispozici pĜehledy konzumace za jeden den, týden a mČsíc, statistiky nejþastČji konzumovaných jídel a pĜehled pitného režimu. PodrobnČji viz. Požadavky (2.4).
2.1. Zásady správné výživy V této podkapitole se zamČĜuji na pĜiblížení zásad zdravé výživy a životosprávy. Je celkem prokazatelné, že pĜíjem potravin, jejich skladba, množství a rozložení v prĤbČhu dne má zcela jistČ nezanedbatelný vliv na životosprávu a životní styl. Jedním z klíþových bodĤ je množství a skladba zkonzumovaných potravin a jejich energetická hodnota.
2.1.1. Energetický pĜíjem a výdej Optimální energetický pĜíjem by mČl být shodný jako energetický výdej a závisí na velkém množství faktorĤ. NejpodstatnČjšími jsou vČk, pohlaví, výška a hmotnost þlovČka, dále množství a nároþnost pohybové aktivity a celková mohutnost þlovČka. Ideální energetický pĜíjem lze spoþítat pomocí bazálního metabolizmu (BMR, z anglického Basal Metabolic Rate) navýšeného o energetický výdej na pohybové aktivity [7] [8] . Bazální metabolismus zahrnuje množství vydané energie v klidovém stavu nutné pouze pro fungování životnČ dĤležitých orgánĤ. Hodnotu BMR lze spoþítat podle Harris-Benedictova vzorce z roku 1919, který je považován za standard po nČkolik desetiletí a je stále nejpoužívanČjším vzorcem pro výpoþet BMR. Vstupními parametry tohoto vzorce jsou pohlaví, hmotnost m v kilogramech, výška h v centimetrech a vČk v v letech [7] [8] . Vzorec pro výpoþet BMR pro ženu:
BMR = 655,0955 + (9,5634 * m) + (1,8496 * h) − (4,6756 * v)
(2.1)
Vzorec pro výpoþet BMR pro muže:
BMR = 66,476 + (13,7516 * m) + (5,0033 * h) − (6,755 * v) 3
(2.2)
4
KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE
Intenzitu pohybových aktivit lze poté pĜibližnČ stanovit pĜenásobením výsledku bazálního metabolizmu koeficientem aktivity dle pĜiložené tabulky (Tabulka 2.1). Získané hodnoty jsou v kilokaloriích (kcal) a pro získání energetického pĜíjmu v kilojoulech (kJ) musíme pĜenásobit spoþítanou hodnotu konstantou 4,184 [8] . Koeficient aktivity
Aktivita
Popis
1,2 1,375 1,55 1,725 1,9
Sedavá Lehká StĜední TČžká Extrémní
Málo nebo žádný pohyb, práce v kanceláĜi Málo pohybu nebo sportování 1-3 dny v týdnu StĜednČ pohybu nebo sportování 3-5 dní v týdnu HodnČ pohybu nebo sportování 6-7 dní v týdnu Každodenní nároþný sport nebo tČžká fyzická práce
Tabulka 2.1: Koeficienty pro pĜepoþet BMR a pohybových aktivit.
2.1.2. Skladba potravin v prĤbČhu dne Dalším klíþovým bodem zdravé výživy je skladba a množství potravin v prĤbČhu dne. Je obecnČ známé, že bychom mČli jíst nČkolikrát dennČ v menších dávkách a že je dĤležité nevynechávat snídani, nejíst pozdČ veþer a nepĜejídat se. V následujících Ĝádkách bych chtČl popsat ideální množství a skladbu potravin v prĤbČhu dne. DĤležité je si také uvČdomit, že denní energetický pĜíjem by mČl být ve vhodném pomČru makroživin. MČl by se skládat z vČtší þásti ze sacharidĤ (55-60%), dále potom z tukĤ (25-30%) a bílkovin (15%). Jeden gram sacharidĤ obsahuje pĜibližnČ 17kJ, jeden gram bílkovin 17kJ a jeden gram tukĤ 37kJ. Pokud by náš energetický pĜíjem byl 8000kJ, mČli bychom za den zkonzumovat asi 260-280g sacharidĤ, 55-65g tukĤ a 70g bílkovin [1] [4] .
2.1.2.1. SnídanČ SnídanČ by mČla obsahovat pĜibližnČ 15% denního pĜíjmu. NČkteré literatury uvádČjí i vyšší procento (až 30%). Je ale nutné si uvČdomit, že bychom nemČli tČlo pĜíliš zatČžovat zpracováváním velkého množství potravy, aby nás získaná energie pomohla nastartovat do nového dne. SnídanČ by mČla být lehká a snadno stravitelná s dostatkem vlákniny a složitých sacharidĤ. Lehké formy sacharidĤ, napĜíklad bČžný rafinovaný cukr, je nepĜirozený a ve vČtší míĜe škodlivý – chová se jako volný radikál a niþí buĖky [1] [4] . Vhodné je nalaþno vypít dva až þtyĜi decilitry vlažné vody, pĜípadnČ zĜedČné ovocné šĢávy. Po ránu jsou totiž ledviny v nejvČtší aktivitČ a mĤžeme tak snadno z tČla vyplavit odpadní látky a nastartovat organismus do dalšího dne [1] [4] .
2.1.2.2. Svaþina Dopolední svaþina by mČla obsahovat asi 10% denního pĜíjmu. TČlo je ještČ stále ve fázi þistČní a proto opČt volíme lehké potraviny s vysokým obsahem vitamínĤ a minerálních látek jako je napĜíklad ovoce, zelenina nebo mléþné výrobky [1] [4] .
5
2.1.2.3. ObČd ObČd se dá považovat za stČžejní jídlo dne a mČl by obsahovat 35% denního pĜíjmu. Naše tČlo se již pĜeklopilo z þistící fáze do fáze pĜíjmu potravy. Proto do jídla pĜidáme potraviny s vČtším obsahem bílkovin a tukĤ. Zahrnujeme sem pĜednostnČ bílé maso, ryby, rýži, tČstoviny nebo brambory [1] [4] .
2.1.2.4. Svaþina Odpolední svaþina má tvoĜit asi 15% denního pĜíjmu potravin. Sem již nezahrnujeme pĜílišné množství tukĤ a volíme spíše potraviny s obsahem bílkovin, vlákniny a vitamínĤ [1] [4] .
2.1.2.5. VeþeĜe VeþeĜe je posledním jídlem dne a mČla by obsahovat pĜibližnČ 25% denního pĜíjmu. Je dĤležité si uvČdomit, že bychom mČli jíst nejpozdČji tĜi až þtyĜi hodiny pĜed spaním, což u bČžného denního rytmu znamená veþeĜet mezi 19. a 20. hodinou veþerní [1] [4] .
2.1.3. Pitný režim VšeobecnČ se Ĝíká, že každý den bychom mČli vypít asi dva litry tekutin. Avšak existuje vzorec, podle kterého bychom mČli na každých 10kg své váhy vypít 0,35l tekutin. Do tohoto množství ovšem zahrnujeme jen nealkoholické nápoje a napĜíklad za každý šálek kávy bychom mČli pĜidat dalšího 0,3l tekutin. U osob s nadváhou se pĜipoþítává na 11kg dalších 0,25 litru [1] . DĤležité je také kdy a jaké množství tekutin vypijeme. Ledviny jsou schopny zpracovat asi 300-350 ml tekutin za hodinu, nelze se tedy napít hodnČ a do zásoby. Nejvíce tekutin bychom mČli vypít dopoledne bČhem þistící fáze organismu. Vhodné je nalaþno vypít dva až þtyĜi decilitry vlažné vody, pĜípadnČ zĜedČné ovocné šĢávy. Naopak nejvíce škodí pít velké množství tekutin veþer, neboĢ ledviny až do rána polevují ve své výkonnosti a zbyteþnČ zatČžujeme celou vyluþovací soustavu [1] .
2.2. Diabetes mellitus Diabetes mellitus (DM, úplavice cukrová, lidovČ cukrovka) je civilizaþní choroba, na jejíž vznik má vliv nesprávný životní styl, obezita a pĜíjem nevhodných potravin. Další vliv na DM má také dČdiþnost v rodinČ. V pĜípadČ DM rozlišujeme nČkolik druhĤ, z nichž nejrozšíĜenČjší je DM I. a II. typu [5] [8] [9] .
2.2.1. Diabetes mellitus I. typu Nebo také inzulín-dependentní nebo juvenilní DM, se nejþastČji projevuje u osob do 40 let a þasto vzniká už v dČtství nebo bČhem puberty. PĜíþinou vzniku tohoto onemocnČní, kterým trpí asi 10% všech diabetikĤ, je nedostateþná produkce hormonu inzulínu. Ve slinivce bĜišní postupnČ dojde k úplnému zniþení všech bunČk produkujících inzulín a nemoc se projeví náhle, nejþastČji váhovým
6
KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE
úbytkem a pocitem hladu, þastým moþením spolu s velkou žízní nebo také tČlesnou slabostí a zvracením [5] [8] [9] . Protože organismus nemocného není schopen produkovat inzulín, dĤležitý pro udržování hladiny glukózy v krvi, je nutné ho podávat 3-6x dennČ pomocí injekcí. Dalším základním bodem léþby diabetu je dieta, kdy pacient omezí pĜíjem sacharidĤ, tukĤ a bílkovin [5] [8] [9] .
2.2.2. Diabetes mellitus II. typu Do tohoto typu DM patĜí asi 85-90% všech diabetikĤ a vyvíjí se po 40. roce života. Vyskytuje se pĜedevším u obézních lidí nebo lidí se zvýšeným krevním tlakem, avšak velká þást o svém onemocnČní ani nemusí vČdČt. PĜi tomto typu diabetu má tČlo vypČstovanou urþitou odolnost proti inzulínu a nedokáže ho dostateþnČ využívat [5] [8] [9] . Léþba probíhá nejprve zmČnou životního stylu a upravením jídelníþku. V pĜípadČ, že tato opatĜení nepomohou, pĜichází na Ĝadu podávání perorálních antidiabetik [5] [8] [9] .
2.2.3. Shrnutí diabetu V pĜípadČ onemocnČní diabetem I. i II. typu je jednou z hlavních pĜíþin obezita spolu s nezdravým životním stylem. Pokud se chceme pokusit tomuto onemocnČní pĜedejít, mĤžeme zaþít jednoduchou úpravou jídelníþku podle zásad zdravé výživy a držet si kondici a hmotnost vhodným množstvím pohybových aktivit.
2.3. Srovnání existujících aplikací V této podkapitole bych se pokusil shrnout nejoblíbenČjší aplikace pro sledování pĜíjmu potravy a to jak þeské, tak zahraniþní. Aplikace jsem vyhledával na Google Play (Android market) podle klíþových slov „calorie“ a „diet“, filtrování podle oblíbenosti a vybíral jsem pouze aplikace, které jsou dostupné zdarma. Aplikace pro Apple iPhone jsem nemČl možnost vyzkoušet, ale nejoblíbenČjší aplikace se shodují s tČmi pro Android a pĜedpokládám tak jejich stejnou funkcionalitu. Nejvíce propracovaná a v þeském prostĜedí použitelná je pravdČpodobnČ aplikace s názvem Kalorické tabulky (2.3.2.1).
2.3.1. Zahraniþní aplikace 2.3.1.1. Calorie Counter 1. VýbČr jídel podle kategorií jídel, restaurací, populárních znáþek a znaþek supermarketĤ. 2. PĜehledná zkonzumovaná jídla (snídanČ, obČd, veþeĜe, svaþina), ale bez možnosti zadání konkrétního þasu konzumace. 3. Aplikace je dále doplnČna o recepty, dietní kalendáĜ a evidenci váhy. 4. Není možné vkládat vlastní jídla.
7
ZávČr: PČkné pĜehledy zkonzumovaných jídel, informací o potravinČ, ale tČžkopádné vyhledávání bez možností zadání vlastního jídla a þasu konzumace.
2.3.1.2. Diet & Food Tracker 1. VýbČr jídel pomocí vyhledávání, ale výsledky nejsou Ĝazeny abecednČ. 2. Možnost zadání vlastního jídla. 3. Lze zadávat zkonzumovaná jídla, nebo potvrzovat plnČní jídelníþku. 4. Aplikace v sobČ obsahuje také kalorický výdej – evidence aktivit.
ZávČr: Díky možnosti zadávání vlastních jídel se jedná o aplikaci použitelnou i v þeském prostĜedí. Zajímavou funkcí je dodržování doporuþeného (dietního) jídelníþku.
2.3.1.3. Calorie Counter – MyFitnessPal 1. Rozsáhlá funkcionalita zadávání zkonzumovaného jídla – lze vyhledávat nebo procházet všechna jídla podle kategorií. 2. Možnost zadávat vlastní jídla nebo pĜímý pĜíjem kalorií, tvorba pokrmĤ z více potravin. 3. Souþástí je také webové rozhraní s provázaností na Facebook.
ZávČr: Velice povedená aplikace s rozsáhlou funkcionalitou a pĜehledným webovým rozhraním. OpČt se jedná o aplikaci použitelnou i v þeském prostĜedí. Jedinou nevýhodou mohou být drobná tlaþítka uživatelského rozhraní.
2.3.1.4. DietPoint 1. Jednoduchá aplikace zamČĜená pouze na plnČní dietního plánu.
ZávČr: Pro sledování pĜíjmu potravy témČĜ nepoužitelná aplikace.
2.3.1.5. Calorie Counter & Diet Tracker 1. Zadávání zkonzumovaných jídel vyhledáváním nebo výbČr z oblíbených položek. 2. Aplikace v sobČ obsahuje také kalorický výdej – evidence aktivit.
ZávČr: Jednodušší aplikace, která se zamČĜuje nejen na pĜíjem, ale také na výdej kalorií.
2.3.1.6. Calorific Calorie Counter 1. Zadávání je pouze orientaþní – malá, stĜední, velká porce. 2. DČlí potraviny na „dobré“ a „špatné“.
8
KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE
ZávČr: Aplikace je spíše motivaþní, i díky dČlení jídel na dobrá a špatná. Pro sledování kalorického pĜíjmu je jinak nepoužitelná.
2.3.1.7. Calorie Counter – ShapeUp Club 1. Možnost vybírat jídla z oblíbených, naposledy hledaných nebo kopírovat z minulých dní. 2. Lze zadávat chybČjící potraviny a také pĜidávat kategorie jídel. 3. Souþástí je také webové rozhraní s pĜehledy. 4. VČtšina tČchto možností je ale dostupná až ve verzi Gold – placení mČsíþního paušálu.
ZávČr: PĜíjemná aplikace – vzhledem i ovládáním, ale vČtšina zajímavé funkcionality je zpoplatnČna.
2.3.2. ýeské aplikace 2.3.2.1. Kalorické tabulky 1. Velice detailní informace o potravinČ, vþetnČ velké databáze þeských potravin. 2. Sledování kalorického pĜíjmu, výdeje a také pitného režimu. 3. Detailní denní pĜehledy a vícedenní grafy pĜíjmu a výdeje. 4. Souþástí je také webové rozhraní, které je ale mírnČ nepĜehledné.
ZávČr: Pro þeského uživatele jednoznaþnČ nejlepší aplikace. Její nejvČtší výhodou je dlouhodobČ budovaná a aktualizovaná databáze þeských potravin. PravdČpodobnČ jedinou nevýhodou je zobrazování reklam v aplikaci, které zaberou cenné místo na displeji.
2.4. Požadavky Na základČ srovnání dostupných Ĝešení a cílĤ této práce dále rozepíši spoleþné a odlišné funkþní a nefunkþní požadavky na mobilní aplikaci a webový portál (dále požadavky na systém).
2.4.1. Spoleþné požadavky 2.4.1.1. Funkþní požadavky 1. Systém umožní vytvoĜení nového uživatelského úþtu. 2. Všechny údaje zadané pĜi registraci bude možné kdokoliv pozdČji upravit. 3. Systém bude pĜístupný pouze pĜihlášeným uživatelĤm. 4. Systém umožní vyhledávat potraviny podle názvu.
9 5. Systém umožní pĜidat potravinu mezi zkonzumované a umožní údaje upravit nebo odstranit. 6. Systém umožní vložit do databáze informace o nové potravinČ. 7. Systém umožní zobrazit detailní informace o konzumaci pro libovolný den. 8. Systém bude uživateli zobrazovat informaci o plnČní denního pĜíjmu kalorií.
2.4.1.2. Nefunkþní požadavky 1. Systém bude založený na databázi MySQL. 2. Systém bude jednoduchý a intuitivnČ ovladatelný. 3. Systém bude možné jednoduše rozšíĜit o další funkcionalitu.
2.4.2. Požadavky na mobilní aplikaci 2.4.2.1. Funkþní požadavky 1. Systém umožní pĜidávat potraviny mezi oblíbené položky. 2. Systém umožní zobrazovat zkonzumované nápoje a pomoci dodržovat pitný režim. 3. Systém umožní skládat hotová jídla z více potravin a vkládat je do databáze.
2.4.2.2. Nefunkþní požadavky 1. Systém bude implementovaný v programovacím jazyce Java. 2. Systém bude implementovaný pro Android verze alespoĖ 2.1 (API Level 7).
2.4.3. Požadavky na webový portál 2.4.3.1. Funkþní požadavky 1. Systém umožní rozlišování uživatelĤ dle rolí – bČžný uživatel, lékaĜ, administrátor. 2. Systém umožní uživateli zvolit si svého lékaĜe. 3. Systém umožní lékaĜĤm prohlížet informace o konzumaci svých pacientĤ. 4. Systém umožní administrátorĤm mČnit uživatelské role a rušit uživatele. 5. Systém umožní administrátorĤm mČnit informace o potravinČ v databázi. 6. Systém umožní nahrát ke každé potravinČ právČ jeden obrázek.
2.4.3.2. Nefunkþní požadavky 1. Systém bude implementovaný v programovacím jazyce PHP. 2. Systém bude pĜístupný pĜes webové rozhraní.
Kapitola 3
3. Analýza a realizace webového rozhraní V této kapitole se vČnuji analýze dostupných technologií, kterémi se dá webové rozhraní realizovat a zdĤvodnČním použitých technologií a postupĤ. V podkapitolách pak budou detailnČ rozebrány klíþové þásti návrhu webového rozhraní spoleþnČ s ukázkou a okomentovaným kódem.
3.1. Analýza skriptovacích jazykĤ V pĜípadČ skriptovacích jazykĤ na stranČ serveru pĜipadají v úvahu dva: ASP.NET (Active Server Pages, souþást .NET Frameworku), vyvinuté spoleþností Microsoft a PHP (PHP: Hypertext Preprocessor, dĜíve Personal Home Page). Statické webové stránky nepĜipadají v úvahu, neboĢ data na webovém portále budeme potĜebovat dynamicky generovat z údajĤ uložených v databázi [6] .
3.1.1. ASP.NET Hlavní výhodou použití ASP.NET Frameworku je úplné oddČlení skriptu od HTML kódu a stává se tak plnohodnotným objektovČ orientovaným programem a kód skriptu se stává znovupoužitelným. Nevýhodou jsou potom vyšší náklady na cenu hostingu, kdy aplikace musí bČžet v prostĜedí Microsoft Windows + IIS (Internet Information Server) [6] . CelkovČ se tak použití tohoto frameworku hodí spíše pro vČtší, komplexní projekty a systémy, kde se poþáteþní vyšší investice do hostingu a nutnosti psát vše objektovČ vrátí velice rychle.
3.1.2. PHP Naproti ASP.NET má PHP hlavní výhodu v úplné kontrole nad generovaným výstupem. Je možné velice jednoduše kombinovat HTML kód. Další výhodou je pĜímoþarost tohoto jazyka, množství dostupných funkcí a velice jednoduchá a pochopitelná syntaxe. Navíc od verze 5 je k dispozici také podpora objektovČ orientovaného programování a je zde tedy další možnost kombinace kódu. Mezi další výhody pak patĜí široké rozšíĜení a podpora u hostingových služeb [6] . Je nutné také zmínit nevýhody. PHP je interpretovaný jazyk a musí se pĜed vykonáním interpretovat a pĜeložit do strojového kódu. Další problém je, že v základním nastavení PHP nedochází k žádné optimalizaci a cachování výstupu (na rozdíl od ASP.NET). V dĤsledku toho je implementace pomocí PHP pomalejší než konkurenþní ASP.NET [6] . 11
12
KAPITOLA 3. ANALÝZA A REALIZACE WEBOVÉHO ROZHRANÍ
3.1.3. Volba skriptovacího jazyka Pro implementaci jsem zvolil jazyk PHP. Jedním z hlavních dĤvodĤ je znalost tohoto jazyka a již dĜíve získaná praxe. Napsání webového portálu bude jednodušší a mohu se vyvarovat zaþáteþnických chyb. Dalším dĤvodem je široká podpora PHP u hostingu a bude tedy možné portál jednoduše pĜenášet na jiný hosting nebo distribuovat jednotlivým lékaĜĤm.
3.2. Analýza databázových systémĤ Volba vhodné databáze je velice dĤležitým bodem této práce. Je nutné zvážit, kolik uživatelĤ bude užívat databázi a kolik dotazĤ do databáze pošle jeden uživatel bČhem jednoho dne. Níže shrnuji nekomerþní databázové systémy, ze kterých budu vybírat pro realizaci. Budeme uvažovat, že uživatel za den vyhledá 50 rĤzných potravin, z každého vyhledání si zobrazí dva detaily konkrétní potraviny a zkonzumuje 30 potravin za den. Dále je nutné uvažovat informaþní dotazy, ve kterých uživatel získává aktuální pĜehledy. Touto úvahou jsem došel k pĜibližnČ 250-300 dotazĤm za den na uživatele a aplikaci. K tomuto poþtu je dále nutné pĜipoþíst dotazy z webového portálu. Pokud by uživatel každý den kontroloval svĤj stav také prostĜednictvím webového portálu, musíme celkový poþet dotazĤ navýšit o dalších 50. Koneþný poþet þiní 300-350 dotazĤ na uživatele a den. PĜi poþtu 1000 uživatelĤ by databáze musela být schopna obsloužit prĤmČrnČ 4 dotazy za sekundu. Pokud budeme uvažovat þasovou špiþku, napĜíklad þas obČda, kdy by se bČhem jedné hodiny zpracovalo 25% všech dotazĤ, získáme prĤmČrnČ 24 dotazĤ bČhem jedné sekundy.
3.2.1. MySQL Jedná se o jeden z nejrozšíĜenČjších databázových systémĤ, který je velice dobĜe provázán s PHP. Dále je možné zvolit nČkolik rĤzných enginĤ, na kterých tabulky mohou fungovat, podle požadované funkþnosti. Zde je nutné se rozhodnout pĜedevším mezi rychlým MyISAM enginem, nebo novČjším InnoDB enginem, který pĜidává podporu transakþního zpracování, ale je pomalejší. InnoDB engine rychlostnČ vyniká u tabulek s intenzivními aktualizacemi a u obnovy tabulek po havárii, kde pĜedþí MyISAM engine. Naopak MyISAM rychlostí vyniká u výbČrových dotazĤ a také u vkládání dat a to i v prostĜedí s velkým objemem dat. Protože nejþastČji kladenými akcemi na databázi bude vyhledávání potravin a ukládání informací o konzumacích, jeví se MyISAM engine jako ideální [2] [13] .
3.2.2. PostgreSQL Jde o kvalitní databázi nabízenou pod open source licencí. Mezi její hlavní výhody patĜí striktní dodržování ANSI SQL normy. Jedná se o pomalejší databázi, než jakou je MySQL, ale pĜi zatížení vČtším poþtem uživatelĤ klesá její výkonnost pomaleji [13] .
13
3.2.3. SQLite V pĜípadČ SQLite nejde pĜímo o databázový systém, ale pouze o knihovnu, která má velmi omezenou funkþnost, ale vyniká svou velkou rychlostí. Navíc všechny údaje v databázi jsou uloženy v jediném souboru a je tak velmi snadné databázi pĜenést jinam. DĤvodem pro zahrnutí do tohoto výbČru je její nativní podpora v Android OS [2] [13] .
3.2.4. Volba databázového systému Ze zmínČných databázových systémĤ padla volba na MySQL. DĤvodem je výborná podpora v PHP, dostateþná rychlost a široké rozšíĜení, které je opČt velice vhodné pro distribuci jednotlivým lékaĜĤm.
3.3. Implementace webového portálu Nejprve bylo nutné navrhnout vzhled celého portálu. Celé stránce dominuje bílý obdélník se zaoblenými rohy na modrém gradientním pĜechodu. CelkovČ je vzhled zamČĜen na minimalistické a co nejvíce funkþní rozložení, menu v horní þásti stránky a obsah pod ním. Vybrané screenshoty webové aplikace jsou pĜiloženy v pĜíloze (PĜíloha D). Celá aplikace je psána þistým HTML a CSS a je plnČ validní (XHTML 1.0 Strict). Abych se vyhnul problémĤm pĜi zobrazování diakritiky, je zvoleno kódování UTF-8. Pro hezþí a srozumitelnČjší vzhled odkazĤ je pro obsluhu stránek implementován Page Controller. Také bylo velice pĜihlíženo na pĜístupnost stránek. Webový portál dále využívá vykreslování grafĤ Google Charts API pomocí objektového gchartphp wrapperu a komponentu PEAR Log pro zaznamenávání akcí uživatele.
3.3.1. Page Controller Pomocí page controlleru je možné podle vstupu od uživatele nebo tvaru URL odkazu Ĝídit výstup stránky, který bude následnČ doruþen uživateli. Spolu s úpravou Mod_rewrite dosáhneme srozumitelných a pĜehledných URL adres (Ukázka 3.1) [18] . 1 2
http://a.hanx.cz/diet/prehled/den http://a.hanx.cz/diet/prehled/den/2012-5-3
Ukázka 3.1: Ukázka pĜehledných URL adres.
Page Controller je implementován pro rozhodování podle prvních dvou parametrĤ. Vždy zobrazí záhlaví, menu a zápatí a podle získaných parametrĤ rozhodne, jakou obsahovou stránku vloží mezi. TĜetí a další parametr je potom pĜedán a zpracován ve vložené obsahové stránce. V pĜípadČ, že page controller neumí urþit, jakou stránku vložit, je uživatel pĜesmČrován na pĜihlašovací stránku, popĜípadČ na hlavní stránku portálu v pĜípadČ pĜihlášeného uživatele [17] .
14
KAPITOLA 3. ANALÝZA A REALIZACE WEBOVÉHO ROZHRANÍ
Hlavní výhodou implementace page controlleru je absolutní kontrola nad zpracovávanými požadavky a snadná zmČna záhlaví, zápatí, menu nebo celého vzhledu webového portálu zmČnou pĜíslušného CSS souboru [17] .
3.3.2. Logování akcí Pro identifikaci rĤzných útokĤ na server, nebo pokusĤ o prolomení pĜihlašovacího hesla, je vhodné jednotlivé akce uživatelĤ monitorovat a ukládat si je pro pozdČjší dohledání v pĜípadČ problému. Ve webovém portále proto loguji (Ukázka 3.2) úspČšné a neúspČšné pokusy o pĜihlášení a také požadavky na zaslání zapomenutého hesla. OpČt rozdČlené podle úspČšnosti, tedy jestli uživatel existuje nebo ne. 1 2 3 4
Apr 11 22:40:33 [alert] user '
[email protected]' (213.29.197.333) try request password for unknown user Apr 11 22:40:44 [info] user '
[email protected]' (213.29.197.333) request for new password successful May 03 10:30:40 [alert] user
[email protected]' (147.32.84.333) try log in with incorrect email/password May 03 10:31:04 [info] user '
[email protected]' (147.32.84.333) log in succesful
Ukázka 3.2: Výpis logovacího souboru (údaje o uživateli a jeho IP byly zmČnČny).
Pro logování je možné využít databázi a vkládat do ní potĜebné údaje. To je ale zbyteþnČ složité a nároþné. Další možností je ukládat údaje do textového souboru. Zde ale musíme zajistit, aby nedocházelo ke konfliktĤm pĜi zápisu do souboru. Jako ideální Ĝešení se jeví použít již hotové Ĝešení, v tomto pĜípadČ komponentu PEAR pro logging (Ukázka 3.3). Tato komponenta uloží na jeden Ĝádek textového souboru þas události, její typ (který mĤžeme definovat) a další zprávu dle naší potĜeby [19] . 1 2 3 4 5 6 7 8 9 10
include("PearLog/Log.php"); $l = Log::singleton("file", "prihlasovani.log"); $priorities = array( PEAR_LOG_ALERT => 'alert', PEAR_LOG_ERR => 'error', PEAR_LOG_INFO => 'info' ); ... $l->log("user '".$email."' (".$ip.") log in succesful", PEAR_LOG_INFO);
Ukázka 3.3: Použití PEAR Log komponenty v praxi.
3.3.3. Vykreslování grafĤ Protože grafy a grafické pĜehledy jsou klíþovým bodem pro reprezentaci získaných údajĤ o konzumaci potravin a zobrazuje se jich vždy nČkolik na jedné stránce, bylo nutné zvolit co nejménČ nároþný a pĜitom neomezující zpĤsob vykreslování. Jednou z možností bylo napsat vlastní vykreslování grafĤ pĜesnČ namíru potĜebám webového portálu. Ale proþ vymýšlet již vymyšlené. Pro zjednodušení vykreslování grafĤ používám komponentu gchartphp (PHP Object wrapper), která tvoĜí meziþlánek mezi Google Charts API a
15 údaji z databáze. Další výhodou použití tohoto postupu je pĜesunutí tvorby a vykreslení grafu na server Googlu, na který obrázek pouze odkazuje. Jedinou nevýhodou je závislost na Googlu a jeho spolehlivosti, ale dá se pĜedpokládat, že bude dostateþná [16] . Použití gchartphp wrapperu je velice jednoduché (Ukázka 3.4) a pĜitom umožĖuje využití možností, které Google poskytuje. Staþí nadefinovat typ grafu, jeho rozmČry, pĜidat hodnoty, legendu, popisky os a zvolit barvy. Poté staþí vložit obrázek a jako zdroj pĜedat náš objekt [16] . 1 2 3 4 5 6
require_once("GChartPhp/gChart.php"); $piChart = new gPieChart(360, 180); $piChart->addDataSet($sum); $piChart->setLabels($popis); $piChart->addBackgroundFill('bg', 'fcfcfc'); echo '
![graf s prehledem](' . $piChart->getUrl() . ')
';
Ukázka 3.4: Nejjednodušší použití pro vykreslení ‚koláþového‘ grafu.
3.3.4. Obsluha formuláĜĤ FormuláĜe slouží k zadávání a získávání dat od uživatele. Z tohoto dĤvodu je nutné dĤslednČ navrhnout formuláĜe tak, aby jejich obsluha umožĖovala reagovat na jakýkoliv vstup od uživatele. Musíme pĜedpokládat, že uživatel zadá vstupní data špatnČ, aĢ už omylem, nebo úmyslnČ. Ke každému vstupnímu poli je nutné pĜidat legendu pole a to i z dĤvodu dodržení pravidel pĜístupnosti. Také je vhodné informovat uživatele pĜíslušným tipem, napĜíklad pomocí informaþní bubliny. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Ukázka 3.5: PĜíklad správnČ zpracovaného formuláĜe.
16
KAPITOLA 3. ANALÝZA A REALIZACE WEBOVÉHO ROZHRANÍ
V pĜedchozím pĜíkladČ (Ukázka 3.5) je ukázána þást správného formuláĜe z nastavení osobních údajĤ. Uživatel vidí jednotlivé oznaþené vstupy a pĜi kliknutí se zobrazí bublina s nápovČdou a pĜíkladem, jak má vstup správnČ zadat. Je možné si také povšimnout posílání skrytého pole s þasovou známkou. Tento údaj slouží pĜi zpracování formuláĜe a je to jedna z technik, jak zamezit vícenásobnému vykonání pĜíkazu po odeslání formuláĜe (napĜíklad znovunaþtení stránky) [2] [12] . Další užiteþnou technikou, jak uživatele informovat o správnČ zadaných údajích, je aktivní kontrola pomocí JavaScriptu. Uživatel tak ihned vidí, zda-li jsou zadané údaje správné. Nevýhodou této techniky je, že uživatel mĤže mít zakázaný JavaScript, nebo ho jeho zaĜízení vĤbec nemusí podporovat. NemĤžeme se tedy spolehnout pouze na tuto techniku. Další nevýhodou je dvojitá práce, ovČĜovací techniku je nutné implementovat pro klientskou (JavaScript) a serverovou (PHP) þást zvlášĢ. Ukázku takto implementovaného formuláĜe je vidČt na následujícím obrázku (Obrázek 3.1). Po odkliknutí formuláĜe na odesílací tlaþítko dojde k ovČĜení validnosti zadaných údajĤ také na serveru a v pĜípadČ špatnČ zadaných údajĤ je formuláĜ uživateli vrácen spolu s oznámením, kde chyboval.
Obrázek 3.1: Ukázka správnČ zpracovaného formuláĜe.
I když budou vstupní data validní, je zde stále možnost zneužití a napadení webové stránky vložením skriptu nebo napadením databáze pomocí SQL injection. Proto je nutné všechny vstupy pĜed dalším použitím ošetĜit. PHP na toto pamatuje a nabízí nám dvČ užiteþné funkce pro ošetĜení tČchto pĜípadĤ: mysql_real_escape_string(vstup) a htmlspecialchars(vstup) [2] [12] .
3.3.5. Uživatelské role Pro urþení, jaké akce mĤže uživatel vykonávat, je nutné stanovit uživatelské role. Základní rozdČlení je na pĜihlášené a nepĜihlášené uživatele do webového portálu. NepĜihlášení uživatelé mají možnost se zaregistrovat, pĜihlásit se nebo v pĜípadČ zapomenutého hesla si nechat zaslat nové. PĜihlášené uživatele poté dČlíme do tĜí funkþních skupin. BČžní uživatelé mají k dispozici základní funkce portálu. LékaĜi mají možnost nahlížet do pĜehledĤ svých pacientĤ a stanovovat jim
17 nové limity pĜíjmu. Správci mají možnost rušit uživatele, mČnit jejich role a editovat vložené potraviny. Jednotlivé funkce nejlépe demonstruje pĜiložený UML diagram (Obrázek 3.2).
Obrázek 3.2: Funkce webového portálu podle uživatelských rolí.
3.3.6. Implementace databáze Jak již bylo zmínČno v kapitole Analýza databázových systémĤ (3.2), bude databáze implementována v MySQL. V této kapitole jsem také uvádČl analýzu poþtu dotazĤ za sekundu v dobČ špiþky, která þinila 24 dotazĤ za sekundu pĜi 1000 uživatelích. Na souþasném testovacím hostingu v cenČ do 100Kþ mČsíþnČ trvá vykonání jednoho dotazu pĜibližnČ 0,007 sekundy. To odpovídá asi 140 dotazĤm za sekundu, rezerva je tedy více než dostateþná. V pĜípadČ masivnČjšího nasazení by bylo možné poĜídit virtualizovaný nebo dedikovaný server a v poþtu možných vykonaných dotazĤ bychom se posunuli o nČkolik ĜádĤ výše. Celá databáze je navržena již s ohledem na budoucí mobilní aplikaci pro Android a je zde navíc tabulka oblíbených položek, která pro zobrazování pĜehledĤ není nijak potĜebná. ýást struktury databáze, potraviny a jejich rozdČlení, bylo pĜedem dáno poskytnutou databází potravin. Jedná se o stejnou databázi, která byla použita v projektu OLDES [22] . Tato databáze obsahuje pĜes 2400 potravin rozdČlených do logických kategorií a podkategorií. Celý návrh databáze byl podĜízen dodržování prvních tĜí normálových forem, aby data byla co nejménČ redundantní. Pro vyhnutí problémĤm s diakritikou je opČt zvoleno jednotné UTF-8 kódování a pro potĜeby správného Ĝazení podle þeské abecedy je zvoleno porovnávání vĤþi sadČ utf8_czech_ci, která pĜi vyhledávání nerozlišuje velká a malá písmenka abecedy [2] [12] . Následuje popis jednotlivých tabulek a jejich využití. Protože nČkteré tabulky obsahují množství údajĤ, z nichž nČkteré by byly bez vysvČtlení matoucí, nebo by se pro vysvČtlení muselo pĜejít do zdrojového kódu, rozeberu nČkteré sloupce vytvoĜených tabulek a vysvČtlím možné
18
KAPITOLA 3. ANALÝZA A REALIZACE WEBOVÉHO ROZHRANÍ
hodnoty v dalších podkapitolách. Samotné provázání vztahĤ mezi tabulkami a strukturu databáze nejlépe zobrazuje relaþní model databáze (Obrázek 3.3).
3.3.6.1. Seznam a popis tabulek databáze 1. food – Tabulka, která obsahuje název a informace o energetických hodnotách potraviny, poznámku k potravinČ a ID uživatele, který potravinu zadal. 2. food_groups – Tabulka obsahující informace o kategoriích potravin. 3. food_grous_has_food – Vazební tabulka, která Ĝadí potravinu do pĜíslušné kategorie. 4. konzumace – Tabulka, ve které se eviduje konzumace potravin (co, kdo, kdy a kolik snČdl). Vazba pomocí cizích klíþĤ na tabulky users a food. 5. oblibene – Tabulka oblíbených potravin uživatele. Vazba na tabulky users a food. 6. users – Tabulka jednotlivých uživatelĤ a jejich osobních údajĤ a limitĤ pĜíjmu.
Obrázek 3.3: Relaþní model navrhnuté databáze.
3.3.6.1. Tabulka uživatelĤ 1. email – Jde o jedineþný klíþ, na základČ kterého se uživatel pĜihlašuje. 2. heslo – Uživatelem zadané heslo není pĜímo uloženo v databázi, ale je vyroben jeho otisk pomocí MD5 algoritmu a ten se uloží. OvČĜování poté probíhá porovnáním otisku v databázi s novým otiskem hesla zadaným pĜi pĜihlašování. 3. limite – Jedná se o limit doporuþeného denního energetického pĜíjmu v kJ. 4. limitc – Jedná se o limit doporuþeného denního pĜíjmu sacharidĤ v gramech. 5. limitt – Jedná se o limit doporuþeného denního pĜíjmu tukĤ v gramech. 6. limitb – Jedná se o limit doporuþeného denního pĜíjmu bílkovin v gramech.
19 7. pohlavi – Jde se o rozlišení pohlaví uživatele (1 = muž, 2 = žena). 8. role – Jde o rozlišení uživatelských rolí (1 = bČžný uživatel, 2 = lékaĜ, 3 = správce). 9. lekar – Jedná se odkaz na ID jiného uživatele (lékaĜe), který má právo prohlížet pĜehledy a stanovovat nové limity tohoto uživatele.
3.3.6.2. Tabulka oblíbených potravin 1. grams – PĜeddefinované množství potraviny pro pĜidávání mezi zkonzumované. 2. typ – Jedná se o þasové zaĜazení jídla (1 = snídanČ, 2 = obČd, 3= veþeĜe, 4 = ostatní).
3.3.6.3. Tabulka konzumací 1. kalorie – PĜíprava pro pĜímé zadání energetického pĜíjmu v kJ, prozatím nevyužito. 2. cukry – PĜíprava pro pĜímé zadání pĜíjmu sacharidĤ v gramech, prozatím nevyužito. 3. tuky – PĜíprava pro pĜímé zadání pĜíjmu tukĤ v gramech, prozatím nevyužito. 4. bilkoviny – PĜíprava pro pĜímé zadání pĜíjmu bílkovin v gramech, prozatím nevyužito. 5. typ – Jedná se o þasové zaĜazení jídla (1 = snídanČ, 2 = obČd, 3= veþeĜe, 4 = ostatní). 6. mnozstvi – Množství zkonzumované potraviny, která je pĜiĜazena podle klíþe foodid.
Kapitola 4
4. Analýza a realizace Android aplikace V této kapitole se vČnuji analýze požadavkĤ a možných Ĝešení pro realizaci mobilní aplikace. V druhé polovinČ kapitoly poté uvádím realizaci zvolených metod a postupĤ, ke kterým jsem dospČl v první þásti. V podkapitolách pak jsou detailnČ rozebrány klíþové þásti realizace mobilní aplikace spolu s ukázkami a okomentovaným kódem.
4.1. Analýza požadavkĤ PĜed samotnou realizací mobilní aplikace pro operaþní systém Android je nutné brát v úvahu množství faktorĤ, které ovlivní použitelnost celé aplikace. Je nutné zvážit, pro jaký minimální API level budeme aplikaci vyvíjet. Musíme poþítat s velkou rozmanitostí mobilních telefonĤ – rĤzné velikosti displejĤ s odlišným rozlišením, nČkteré modely mají displej na šíĜku, nebo mohou být vybaveny hardwarovou klávesnicí
4.1.1. Volba API levelu Historie uvedení operaþního systému Android se datuje pĜibližnČ do zaþátku roku 2009. Od té doby získal více než desítku aktualizací. Aby bylo možné odlišit jednotlivé verze operaþního systému, byl zaveden API level. ZároveĖ nám API level zajišĢuje zpČtnou kompatibilitu. Aplikace, která funguje na nižší verzi, by mČla fungovat i na té vyšší. V souþasné dobČ jsou postupnČ uvolĖovány pro novČjší mobilní telefony aktualizace na Android verze 4.xx (Ice Cream Sandwich) [3] [11] . PĜes 90% trhu (Obrázek 4.1) nyní ovládá výhradnČ Android verze 2.xx, což odpovídá API levelu 5 až 10. NejvČtší podíl má verze 2.3.x nazvaná Gingerbread, následována verzí 2.2 (Froyo) a tĜetí nejpoþetnČjší verze 2.1 (Eclair). Nižší verze, API 6 až 1, je instalována na pouhém 1% procentu zaĜízeních. PĜedevším z dĤvodĤ potĜeb dalších dvou modulĤ aplikace, na nichž pracuje David Slezák [20] a JiĜí Mosinger [21], byl zvolen jako minimální API level 7 [3] [11] .
21
22
KAPITOLA 4. ANALÝZA A REALIZACE ANDROID APLIKACE
Obrázek 4.1: Podíl jednotlivých verzí OS Android (stav k 1.5.2012).
4.1.2. Hardwarové vybavení Protože chceme, aby se aplikace dala používat v co nejširším okruhu uživatelĤ, nesmí být aplikace pĜíliš závislá na konkrétním zaĜízení a jeho hardwarovém vybavení. Aplikace by proto mČla být navržena tak, aby se pĜizpĤsobila konkrétnímu zaĜízení a bylo ji možno pohodlnČ používat. Z povahy aplikace by mČlo být jediným omezením nutnost mít pĜístup k internetu. Koncové zaĜízení tedy musí být vybaveno buć Wi-Fi modulem, GPRS/EDGE/3G datovým modulem, popĜípadČ jinou technologií, která umožní pĜipojení do sítČ internet. V pĜípadČ mobilních telefonĤ je vždy pĜítomen alespoĖ datový modul, velice þasto doplnČn také o Wi-Fi pĜijímaþ. Potom záleží hlavnČ na uživateli, která technologie je pro nČj pĜístupnČjší a kterou bude využívat. Žádné jiné další hardwarové omezení by pro bČh aplikace nemČlo být nutné. Celkový vzhled aplikace by mČl být navržen tak, aby se pĜizpĤsobil jakémukoliv bČžnému rozlišení displeje. Od nejmenšího QVGA (240x320 pixelĤ), pĜes HVGA (320x480 pixelĤ), až po nejvČtší WVGA (480x800 pixelĤ, resp. 480x854 pixelĤ). Také by nemČla být omezením orientace na výšku nebo na šíĜku. Vzhledem k situaci na trhu, se pĜedpokládá zadávání pĜedevším pomocí softwarové klávesnice, která se zobrazuje na displeji a bČhem zadávání pĜekrývá þást aplikace [11] .
4.2. Implementace aplikace Celá implementace se dá rozdČlit pĜibližnČ do tĜí samostatných þástí. Nejprve je nutné pĜipravit návrh aplikace a aktivit, poté je možné pĜipravit podpĤrné tĜídy využívané napĜíþ celou aplikací a teprve nakonec pĜistoupíme k realizaci jednotlivých aktivit. Už bČhem návrhu je nutné uvažovat o tom, jak mezi sebou budou jednotlivé aktivity spolupracovat, abychom se vyhnuli nepĜíjemnostem pĜi koneþné realizaci. Screenshoty hotové mobilní aplikace je možné nalézt v pĜíloze (PĜíloha E).
23
4.2.1. Realizace návrhu Celá aplikace je zastĜešena jakýmsi rozcestníkem, ze kterého se pĜechází k jednotlivým modulĤm, v tomto pĜípadČ k modulu pro sledování pĜíjmu potravy. Další funkcí rozcestníku je autorizace uživatele, popĜípadČ jeho registrace pro pĜístup do celé aplikace. Uživateli staþí pouze jedny pĜístupové údaje pro celou aplikaci i webový portál, na kterém má pĜístup ke komplexním pĜehledĤm. Celý potravinový modul je rozdČlen do þtyĜ hlavních záložek: Kalorický pĜíjem, Pitný režim, Statistiky a Volby aplikace. Cílem bylo umožnit uživateli ukázat nejen svĤj kalorický pĜíjem, ale také informovat ho o plnČní pitného režimu. Pro uživatele dozajista budou zajímavé také statistiky, ve kterých si mĤže nechat zobrazit souhrnné informace o nejþastČji nebo nejvíce konzumovaných potravinách za vybrané období. V poslední záložce potom má uživatel možnost pĜidat do databáze chybČjící potraviny nebo hotová jídla. Také zde mĤže zmČnit své osobní údaje nebo limity denního pĜíjmu. Celkovou provázanost aktivit nejlépe demonstruje následující obrázek (Obrázek 4.2).
Obrázek 4.2: Provázanost aktivit aplikace.
4.2.2. Komunikace serveru a aplikace Protože jsou všechny údaje o potravinách a jejich konzumacích uloženy na serveru, jedná se o nejdĤležitČjší þást celé aplikace. Z tohoto dĤvodu ji níže detailnČ popíšu a uvedu na pĜíkladu její konkrétní použití. Pro tuto komunikaci je v aplikaci vytvoĜena tĜída getJsonArray.java, která obstarává zasílání požadavkĤ na server a zpracovává získané odpovČdi. Na serveru je potom Ĝada PHP skriptĤ, které zpracovávají zaslané požadavky.
24
KAPITOLA 4. ANALÝZA A REALIZACE ANDROID APLIKACE
4.2.2.1. Implementace PHP skriptu V každém skriptu je nadefinován pĜístup k databázi, pro snazší správu je vkládán ze samostatného souboru pw.php. Pro vykonávání dotazĤ (Ukázka 4.1) do databáze je využíváno Prepared statements (pĜedpĜipravených dotazĤ) do kterých jsou pouze vkládány parametry zaslané aplikací. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
include 'pw.php'; //soubor s pristupem k DB include 'bind_assoc.php'; //funkce pro ziskani asociativniho pole //prepared statement $stmt = $db->stmt_init(); $stmt -> prepare("Select id, name from food where (name like ? or name_ascii like ?) and id>0 order by name"); //i (integer), d (double), s (string), and b (binary data) $stmt->bind_param('ss', $slovo, $slovo); //insert values and execute $slovo = "%$_REQUEST[foodName]%"; $stmt->execute(); //select all results and convert into array $stmt->store_result(); $resultrow = array(); stmt_bind_assoc($stmt, $resultrow);
Ukázka 4.1: PĜíprava a vykonání dotazu, pĜíklad vyhledávání potraviny podle názvu.
Po vykonání dotazu je nutné zpracovat výsledky (Ukázka 4.2) a pĜevést je do JSON syntaxe (JavaScript Object Notation), ve které jsou pĜenášeny data zpČt do aplikace. Výhodou je nízká datová nároþnost pro pĜenos informací a snadný pĜevod do pole. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
$prvni = true; //prepare output while($stmt->fetch()) { if($prvni){ //zacinam pole print "["; $prvni = false; } else{ print ","; } //druha a dalsi polozka - json oddelena carkou $output[] = $resultrow; print(json_encode($resultrow)); } if(json_encode($output)=="null"){ print '[{"id":"-1","name":" "}]'; }else{ print "]"; //ok, ukoncim pole }
Ukázka 4.2: Zpracování a vypsání získaných výsledkĤ, nulový výsledek vrací záporné id.
DĤležité je, aby se v tomto PHP skriptu nevypisoval na výstup žádný jiný znak z dĤvodu parsování (pĜevodu) JSON syntaxe do obyþejného pole v aplikaci. Dále je nutné soubor ukládat v kódování UTF-8 a bez BOM znaku (Byte order mark) na zaþátku souboru. V opaþném pĜípadČ by parser v aplikaci nevČdČl, jak získanou odpovČć zpracovat.
25
4.2.2.2. Implementace tĜídy getJsonArray V pĜípadČ implementace komunikaþní tĜídy v aplikaci jako pĜíklad posloužil zápisek na blogu, jehož autorem je Fahmi Rahman [14]. Tato tĜída využívá bČžný HTTP protokol, kterým zašle požadavek na server (Ukázka 4.3). V tomto požadavku je specifikována cílová adresa, tedy vykonávající skript, a pomocí metody POST jsou v hlaviþce dotazu pĜedána potĜebná data (napĜíklad hledaný text). 1 2 3 4 5 6 7 8 9 10 11 12 13 14
try { count++; Log.i("getJSON", "http post start - " + phpName + ", no." + count); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(HTTP + phpName + ".php"); // "server/script.php" httppost.setEntity(new UrlEncodedFormEntity(dvojice, "UTF-8")); Log.i("getJSON", "http post done"); HttpResponse response = httpclient.execute(httppost); Log.i("getJSON", "http response done"); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { ok = false; Log.e("getJSON", "Error in http connection " + e.toString()); }
Ukázka 4.3: PĜíklad zaslání požadavku a získání odpovČdi.
Po získání odpovČdi, kterou zpracuje server v PHP skriptu (4.2.2.1) je nutné data pĜevést (Ukázka 4.4) z JSON syntaxe do pole, se kterým dál v aplikaci pracujeme. Toto je pouze základní pĜíklad zasílání požadavkĤ na server. Celý kód je dále ošetĜen proti výpadku spojení. Pokud dojde v nČkteré této þásti k chybČ, je celý proces zaslání požadavku zopakován. V aplikaci je umožnČno opakovat tento proces maximálnČ 15krát, nebo dokud nevyprší þasový limit na vykonání požadavku, na který je pĜidČleno 15 sekund. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
//convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,Charset.forName("utf-8")), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ ok = false; Log.e("getJSON", "Error converting result "+e.toString()); } //parse json data try{ JSONArray jArray = new JSONArray(result); dvojice.clear(); return jArray; } catch(JSONException e){ ok = false; Log.e("getJSON", "Error parsing data "+e.toString()); }
Ukázka 4.4: PĜíklad zpracování JSON syntaxe do pole (JSONArray).
26
KAPITOLA 4. ANALÝZA A REALIZACE ANDROID APLIKACE
4.2.2.3. Volání tĜídy getJsonArray V pĜípadČ volání je využíváno AsyncTask tĜídy, která na pozadí vytvoĜí úkol (asynchronous task), který nejprve získá a pĜipraví data a poté podle toho, jak je tato tĜída implementována, ovlivní zobrazení dat na obrazovce [11] . V našem pĜípadČ (Ukázka 4.5) je pomocí metody addPair() pĜedán údaj o hledaném textu v databázi a na pozadí je zaslán požadavek na server, na skript searchFoodbyName.php, a jsou stažena potĜebná data. Poté dojde k použití získaných dat a aktualizaci zobrazení. V tomto pĜípadČ se na obrazovku vypíše informace o poþtu nalezených výsledkĤ a vypíše se seznam nalezených potravin. Pokud hledanému textu neodpovídá žádný výsledek, je vypsána nula. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
//stažení dat private class DownloadTask extends AsyncTask<String, Integer, JSONArray> { protected JSONArray doInBackground(String... text) { json.addPair("foodName", searchtext); jArray = json.getJArray("searchFoodbyName"); return jArray; } protected void onPostExecute(final JSONArray jArray) { pocetVysledku = jArray.length(); txpozice = (TextView) findViewById(R.id.diet_dbvysledky_VysledkyHledani); txpozice.setText(switchVysledky(pocetVysledku)); try{ if(jArray.getJSONObject(0).getInt("id")==-1){ //nic neodpovida pocetVysledku = 0; txpozice.setText(switchVysledky(pocetVysledku)); } else{ //pole vysledku nalezenych jidel vysledky = new String[pocetVysledku]; vysledkyID = new int[pocetVysledku]; for (int i = 0; i < pocetVysledku; i++) { vysledky[i] = jArray.getJSONObject(i).getString("name"); vysledkyID[i] = jArray.getJSONObject(i).getInt("id"); } lw = (ListView) getListView(); lw.setAdapter(new ArrayAdapter<String>(DbVysledky.this, R.layout.diet_listview, vysledky)); } } catch (Exception e) {}
Ukázka 4.5: PĜíklad volání tĜídy getJsonArray a zpracování výsledkĤ.
4.2.3. Propojení aktivit VČtšina aktivit v aplikaci je samostatných, bez vČtších závislostí na ostatních, a jediným pĜedávaným parametrem je informace o hledaném textu nebo potravinČ a informace, zda se má vyhledávat v celé databázi nebo jen v oblíbených položkách. Díky této skuteþnosti je celý návrh pomČrnČ jednoduchý a je snadné v aplikaci upravit funkþnost jedné aktivity bez velkého vlivu na zbytek aplikace. Také je jednoduché aplikaci rozšíĜit o další aktivity a rozšíĜit funkþnost aplikace. Dalším vstupem do aktivit jsou osobní údaje uživatele a jeho denní limity. Pro ukládání tČchto údajĤ využívám interface (rozhraní) SharedPreferences, které ukládá data ve tvaru
27 „klíþ:hodnota“. Každá aktivita poté mĤže naþíst údaje z definovaného souboru a pĜistupovat k nim pomocí klíþe. K tomuto externímu souboru má za bČžných okolností pĜistup pouze tato aplikace. Výjimku tvoĜí pouze mobilní telefony, u nichž byl proveden takzvaný root, nebo se jedná o pĜístroje urþené pĜímo pro vývoj aplikací (Android Dev Phone 1). U tČchto mobilních telefonĤ mají aplikace a uživatel vČtší oprávnČní a mohou pĜistupovat i k adresáĜĤm, ke kterým by jinak operaþní systém uživatele nepustil.
4.2.4. Spolupráce s ostatními moduly Dietologická aplikace, respektive její modul, je þásteþnČ provázán s ostatními moduly. Hlavním propojovacím bodem je rozcestník, do kterého se uživatel dostává ihned po spuštČní aplikace. Tato aktivita umožĖuje registraci, pĜihlášení a zmČnu osobních údajĤ dohromady pro všechny tĜi moduly (sledování kvality spánku, sledování pĜíjmu potravy a vyhodnocování stavu maniodepresivních pacientĤ). Hlavním výstupním a spojovacím bodem je potom webový portál, kde uživatel vidí podrobné pĜehledy za ucelené období.
Kapitola 5
5. Testování aplikace Cílem testování bylo ovČĜení funkþnosti aplikace a webového portálu. Tohoto testu se celkem zúþastnilo 11 participantĤ, kteĜí splnili podmínky cílové skupiny, takzvaného Screeneru (5.1). Participanti, kteĜí splnili podmínky screeneru, dostali emailem PĜedtestový dotazník (5.2), odkaz na stažení instalaþního souboru, odkaz na webový portál a základní informace k testování (PĜíloha B). Participanti byli požádáni o nainstalování aplikace, registraci a používání aplikace od 20.4.2012 do 27.4.2012. K používání aplikace nebyl participantĤm k dispozici žádný návod, pouze instrukce, jak aplikaci nainstalovat, neboĢ bČžný zpĤsob distribuce aplikací se provádí systémem Google Play. Po uplynutí týdenní testovací lhĤty (27.4.2012) byl participantĤm zaslán k vyplnČní Potestový dotazník (5.3), který ukonþil celé testování.
5.1. Screener Aby bylo možné ze zájemcĤ o testování vybrat vhodné participanty, byl jim pĜedložen následující prĤzkumný dotazník, takzvaný Screener.
5.1.1. PĜedkládaný screener 1. Je Váš vČk mezi 15 a 40 lety? a. Ano
b. Ne
2. Používáte mobilní telefon s operaþním systémem Android? a. Ano
b. Ne
3. Máte z mobilního telefonu pĜístup k internetu? a. Ano, GPRS/EDGE/3G
b. Ano, Wi-Fi
c. Ano, GPRS/EDGE/3G i Wi-Fi
d. Ne
4. Zajímal by Vás váš kalorický pĜíjem? a. Ano
b. Ne
5. Souhlasíte s anonymním zveĜejnČním údajĤ z prĤbČhu testování? a. Ano
b. Ne 29
30
KAPITOLA 5. TESTOVÁNÍ APLIKACE
5.1.2. Požadované odpovČdi Pro zaĜazení participantĤ do testování byly požadovány následující odpovČdi: 1. Je Váš vČk mezi 18 a 40 lety? a. Ano
b. Ne
2. Používáte mobilní telefon s operaþním systémem Android? a. Ano 3. Máte z mobilního telefonu pĜístup k internetu? a. Ano, GPRS/EDGE/3G
b. Ano, Wi-Fi
c. Ano, GPRS/EDGE/3G i Wi-Fi 4. Zajímal by Vás váš kalorický pĜíjem? a. Ano 5. Souhlasíte s anonymním zveĜejnČním údajĤ z prĤbČhu testování? a. Ano
5.2. PĜedtestový dotazník PĜedtestový dotazník umožnil získat bližší informace o participantech, jejich využívání mobilního telefonu a schopnostech práce v operaþním systému Android.
5.2.1. PĜedkládaný dotazník 1. Máte zkušenost s nČjakou podobnou aplikací? Pokud ano, tak jakou? a. Ne
b. Nevím
c. Ano
2. Jak hodnotíte své schopnosti s mobilním telefonem? a. Základní (telefonování a posílání SMS zpráv, pĜedem nainstalované aplikace) b. Pokroþilé (instalace nových aplikací, využívání internetových aplikací) c. Expertní (široká znalost systému Android, zásahy do systému) 3. Jak funkce využíváte na svém mobilním telefonu? (možné více odpovČdí) a. Telefonování a SMS zprávy b. Osobní diáĜ, kalendáĜ c. Internetové aplikace (Facebook, IM, email…) d. Zábava (hry, fotografování…) e. Jiné – uvećte jaké
31
5.3. Potestový dotazník Potestový dotazník umožnil získat názory participantĤ o používání aplikace bČhem testování. Dotazník byl rozdČlen na dva druhy otázek. UzavĜené otázky bylo možné hromadnČ posoudit a vyhodnotit tak prĤbČh testování. OtevĜené otázky daly participantĤm možnost se blíže vyjádĜit k testované aplikaci a vlastnostem nebo problémĤm, které nebylo možné shrnout mezi uzavĜené otázky.
5.3.1. PĜedkládaný dotazník UzavĜené otázky, participant odpovídá podle stupnice pod otázkami. 1. ProbČhla instalace, první spuštČní a registrace standardnČ, jako instalace jiných aplikací. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
2. V návrhu aplikace a jejím používání jsem se rychle zorientoval/a. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
3. Používání aplikace bylo jednoduché a intuitivní. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
4. Aplikace fungovala bezchybnČ a tak, jak jsem oþekával/a. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
5. Používání webového portálu bylo jednoduché a intuitivní. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
6. Webový portál fungoval bezchybnČ a tak, jak jsem oþekával/a. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
7. PĜehledy a informace o konzumaci potravin jsou dostateþné. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
8. Pokud bych chtČl/a zjistit kalorický pĜíjem, použil/a bych tuto aplikaci a webový portál. a. RozhodnČ souhlasím
b. Souhlasím
d. Nesouhlasím
e. RozhodnČ nesouhlasím
c. Nevím
32
KAPITOLA 5. TESTOVÁNÍ APLIKACE
OtevĜené otázky, participant na nČ odpovídá svými vlastními slovy. 1. Jaký byl nejvČtší problém, na který jste pĜi používání aplikace a webového portálu narazil/a? 2. Co Vás pĜi používání pĜíjemnČ pĜekvapilo? 3. Co Vás pĜi používání nepĜíjemnČ pĜekvapilo? 4. Jak hodnotíte grafický návrh aplikace a webového portálu?
5.4. Výsledky testování V následujících podkapitolách jsou uvedeny veškeré odpovČdi od jednotlivých participantĤ tak, jak jimi byly vyplnČny jednotlivé dotazníky. Z dĤvodĤ zajištČní soukromí participantĤ neuvádím žádná konkrétní jména. OdpovČdi na otevĜené otázky potestového dotazníku jsou doslovnČ citovány tak, jak mi byly od participantĤ zaslány. Proto se v nich vyskytují pĜeklepy a gramatické chyby, které jsem nijak neopravoval.
5.4.1. OdpovČdi participantĤ na screener
Participant 1
Otázka þ.1 Otázka þ.2 Otázka þ.3 Otázka þ.4 Otázka þ.5 a a b a a
Participant 2
a
a
c
a
a
Participant 3
a
a
b
a
a
Participant 4
a
a
b
a
a
Participant 5
a
a
b
a
a
Participant 6
a
a
b
a
a
Participant 7
b
a
c
a
a
Participant 8
a
a
c
a
a
Participant 9
a
a
c
a
a
Participant 10
a
a
b
a
a
Participant 11
a
a
b
a
a
Tabulka 5.1: OdpovČdi participantĤ na screener
33
5.4.2. OdpovČdi participantĤ na pĜedtestový dotazník Otázka þ.1 Otázka þ.2 Otázka þ.3 Participant 1
a
b
a, b, c, d, e (GPS)
Participant 2
c
c
a, b, c, d, e (GPS)
Participant 3
a
b
a, b, c, d
Participant 4
a
c
a, b, c, d, e (Programování aplikací)
Participant 5
a
c
a, b, c, d, e (Grafická kalkulaþka)
Participant 6
a
b
a, b, d
Participant 7
a
b
a, b, c
Participant 8
a
b
a, b, c, d, e
Participant 9
a
c
a, b, c, d
Participant 10
a
b
a, c, d
Participant 11
a
b
a, b, c, d
Tabulka 5.2: OdpovČdi participantĤ na pĜedtestový dotazník
5.4.3. OdpovČdi participantĤ na potestový dotazník 5.4.3.1. UzavĜené otázky dotazníku
Participant 1
Otázka Otázka Otázka Otázka Otázka Otázka Otázka Otázka þ.1 þ.2 þ.3 þ.4 þ.5 þ.6 þ.7 þ.8 a a a a a b b b
Participant 2
b
b
d
d
b
a
d
d
Participant 3
a
a
a
b
a
a
d
b
Participant 4
a
a
a
a
a
a
b
a
Participant 5
a
a
b
b
a
a
b
b
Participant 6
a
b
b
a
b
a
b
a
Participant 7
b
b
b
d
b
a
d
b
Participant 8
b
b
b
d
b
b
c
c
Participant 9
a
b
b
b
a
b
a
b
Participant 10
a
a
a
a
a
a
a
a
Participant 11
a
a
a
b
a
a
a
a
Tabulka 5.3: OdpovČdi participantĤ na uzavĜené otázky potestového dotazníku
34
KAPITOLA 5. TESTOVÁNÍ APLIKACE
5.4.3.2. OtevĜené otázky dotazníku Participant 1 1. „Stránka webového portálu není pĜizpĤsobena pro mobily (musí se pĜibližovat).“ 2. „velký výbČr potravin a nápojĤ“ 3. „viz. 1.“ 4. „Grafický návrh aplikace je výborný, avšak u webového portálu je design o dost horší.“
Participant 2 1. „Zadávání potravin den zpČtnČ je komplikované, þasto jsem zadával potravinu do špatného dne. Možná by bylo lepší se pĜepnout do urþitého dne a mČnit vše v rámci tohoto dne.“ 2. „PĜíjemné je takĜka funkþní prostĜedí na mobilním telefonu skrze aplikaci, které nemá zatím obdobu.“ 3. „NepĜíjemné bylo po zadání potraviny do špatného dne, kdy se muselo zajet až do pĜíslušné položky, pod jednotlivé kategorie (snídanČ, obČd,..) a zde až mazat. ZmČny na delší pĜidržení tlaþítka by byly dle mého lepším Ĝešením. Dále pak toto mazání þasto nefungovalo a bylo nutné do zde potravinu ponechat a zadat ji nulovou hmotnost.“ 4. „Grafický návrh není špatný, nČjaké úpravy by ale nebyly na škodu.“
Participant 3 1. „Odhad v gramech (mililitrech) zkonzumovaných potravin.“ 2. „Jednoduché ovládání programu v telefonu a následná kontrola na webu.“ 3. „V nabídce chybČli nČkteré potraviny (popĜípadČ hlavní jídla).“ 4. „Grafický vzhled webového by potĜeboval více doladit. Naopak vhled programu do telefonu se mi líbíl.“
Participant 4 1. „Nemám v telefonu datový tarif, proto pokud jsem jedl v místech bez volného pĜístupu napĜ. k wifi, musel jsem si pamatovat co jsem snČdl a zaznamenat to pozdČji.“ 2. „Jednoduchost pĜidávání zkonzumovaných potravin a pĜíjemná funkce oblíbených potravin pro rychlé vkládání.“ 3. „Jako v bodČ jedna, nutnost pĜipojení k internetu.“ 4. „Grafický návrh se mČ zamlouval. Jednoduchý a pĜehledný.“
Participant 5 1. „Jeden den mi nešli v mobilní aplikaci smazat konzumovaná jídla“ 2. „Lehkost používání jak webové, tak mobilní aplikace“ 3. „Nic“ 4. „Grafický návrh webové aplikace výborný, návrh mobilní aplikace velice slušnČ“
35
Participant 6 1. „Po pĜidání nové potraviny jsem si uvČdomil, že jsem zadal chybná data. Ale tento proces už nelze zvrátit.“ 2. „Intuitivní ovládání, pĜehlednost a svižnost aplikace.“ 3. „Obþas jídlo se špatnými hodnotami v databázi.“ 4. „Grafický návrh aplikace je pČkný. CelkovČ zajímavý a zároveĖ zĤstává pĜehledný. Webový portál bez zbyteþných vČcí - funkþní a pĜehledný.“
Participant 7 1. „aplikace by po zadání osobních údajĤ mČla navrhnou optimální "spotĜebu", ale to už jsem psal, nabídka zadaných potravin byla omezená, nČkteĜí labužníci asi museli doplĖovat a to vþetnČ kalorií“ 2. „nedokážu hodnotit“ 3. „nedokážu hodnotit“ 4. „spíše prĤmČr“
Participant 8 1. „málo zadaných potravin“ 2. „nic“ 3. „ikdyž jsem byla v doashu netu aplikace se nedokazala rozbehnout“ 4. „dobĜe, snadné používání a rychlá orientace v ní“
Participant 9 1. „Problém byl že nČkteré potraviny nemČli správnČ udané množství na 100g.“ 2. „PĜekvapila mČ rychlost aplikace.“ 3. „Nic“ 4. „Grafické spracování je lepší prĤmČr, byl by vhodný zásah grafika.“
Participant 10 1. „Na žádný problém jsem nenarazil“ 2. „PĜíjemný pĜehled“ 3. „Malý seznam potravin“ 4. „Velmi dobrý"
Participant 11 1. „Žádný“ 2. „PĜehlednost, možnost registru oblíbených potravin, zobrazení statistik za uplynulé dny/týdny…“ 3. „Nic“ 4. „PĜehledný, dobrý"
36
KAPITOLA 5. TESTOVÁNÍ APLIKACE
5.5. Vyhodnocení testování Pro vyhodnocení testování jsou nejdĤležitČjší výsledky získané z potestového dotazníku (5.4.3). OdpovČdi získané v pĜedtestovém dotazníku, zejména hodnocení svých schopností a využívání funkcí mobilního telefonu, nám pomohli získat další pohled na hodnocení potestového dotazníku konkrétním uživatelem. Podíl odpovČdí na uzavĜené otázky nejlépe reprezentuje následující graf (Obrázek 5.1).
Obrázek 5.1: Podíl odpovČdí potestového dotazníku.
NejménČ kladných odpovČdí získala otázka þíslo 7: „PĜehledy a informace o konzumaci potravin jsou dostateþné.“. Pokud si projdeme otevĜené otázky (þíslo 1 a 3) potestového dotazníku, mĤžeme jedním z nesouhlasných dĤvodĤ urþit zastaralou databázi potravin s chybČjícími nebo špatnými údaji. Na tuto skuteþnost si stČžovalo celkem pČt participantĤ, naopak jeden participant hodnotil obsáhlost databáze jako velmi dobrou. PĜi prohlížení konzumací jednotlivých participantĤ jsem objevil další problém souþasné databáze a tím jsou rĤzné instantní nápoje a potraviny. Nutriþní údaje u tČchto výrobkĤ jsou zadávány na 100 gramĤ této smČsi a nikoliv hotové potraviny. NapĜíklad sáþek instantní polévky (25 gramĤ) se musí rozmíchat do jednoho litru vody, ale uživatel zadal, že zkonzumoval 250 gramĤ celé smČsi bez vody. ěešením je aktualizace databáze ideálnČ doplnČná o vysvČtlující poznámky k potravinám. Dalším dĤvodem mohou být opravdu nedostateþné pĜehledy a grafy potravin, které jsou aplikací a webovým portálem nabízeny. Další nejhĤĜe hodnocenou je otázka þíslo 4: „Aplikace fungovala bezchybnČ a tak, jak jsem oþekával/a.“ Po prohlédnutí otevĜených otázek zjistíme, že si dva participanti stČžovali pĜedevším na nemožnost odstranČní zkonzumovaného jídla. Tuto chybu zpĤsobila hromadná úprava aplikaþních skriptĤ na stranČ serveru, když nedošlo k aktualizaci skriptu zajišĢující mazání. Již v prĤbČhu testování byla tato chyba odstranČna. Další participant uvádí nemožnost rozbČhnutí aplikace, aþkoliv je v dosahu internetu. Vzhledem k tomu, že aplikace využívá systémových
37 prostĜedkĤ zajišĢující pĜipojení k internetu, nelze tuto chybu pĜiþítat pouze aplikaci. Bylo by tĜeba tuto situaci dĤkladnČji provČĜit a zjistit, zda tyto problémy nemají i ostatní aplikace. Problémy z pĜedchozích dvou odstavcĤ jsou pravdČpodobnČ také dĤvodem, proþ participanti ve vČtšinČ pĜípadĤ nevyjádĜili rozhodný souhlas s otázkou þíslo 8: „Pokud bych chtČl/a zjistit svĤj kalorický pĜíjem, použil/a bych tuto aplikaci a webový portál.“. ZároveĖ jsme tČmito názory získali smČr, kterým by se mČl budoucí vývoj zamČĜit. Jeden z participantĤ si dále stČžoval na pĜíliš složité zpČtné zadávání potravin. Aþkoliv má v tomto pravdu, že zpČtné zadávání vČtšího množství potravin zabere vČtší množství þasu, nemohu s tímto problémem souhlasit. Uživatel by mČl potraviny zadávat ideálnČ právČ v tom okamžiku, kdy danou potravinu konzumuje, aby mohl ihned získat zpČtnou odezvu o své konzumaci a rozhodnout se, jestli si napĜíklad po obČdČ mĤže dovolit ještČ mouþník. Naopak velice kladnČ je hodnocen návrh aplikace i webového portálu, lehkost použití aplikace a provázání s vČtšími pĜehledy na webovém portálu. Participanti nadále byli celkem spojeni s grafickým ztvárnČním aplikace jako celku. U webového portálu je spokojenost pĜibližnČ pĤl na pĤl. NČkterým participantĤm se líbí jednoduché, funkþní a pĜehledné Ĝešení, jiní by naopak uvítali zásah grafika. ěešením by mohlo být zavedení výbČru vzhledu dle preferencí uživatele.
Kapitola 6
6. ZávČr 6.1. Shrnutí výsledkĤ a splnČní cílĤ Cílem celé práce bylo seznámit se zásadami správné výživy a životosprávy a na základČ získaných poznatkĤ navrhnout aplikaci pro mobilní telefon s OS Android pro sledování pĜijmu potravy. Dalším cílem bylo vytvoĜení webového portálu, na kterém si mĤže uživatel mobilní aplikace prohlížet grafické pĜehledy a informace o své konzumaci. Cíle práce byly ve všech bodech splnČny. Tuto domnČnku mohu lehce prokázat podle splnČní funkþních a nefunkþních požadavkĤ, které byly stanoveny v kapitole Požadavky (2.4). NČkteré nefunkþní požadavky, zejména požadavek na jednoduché a intuitivní ovládání, mČlo prokázat týdenní testování mezi uživateli (5). V tomto testování všichni až na jednoho participanta vyjádĜili souhlasné stanovisko. Požadavek na snadné rozšíĜení funkþnosti asi nejlépe dokazuje fakt, že sledování pĜíjmu potravy už nyní je propojeno s dalšími dvČma moduly pro sledování kvality spánku a vyhodnocování stavu maniodepresivních pacientĤ.
6.2. PĜínos práce Protože dĤsledky špatné výživy a životosprávy mají vliv na Ĝadu onemocnČní, pro správnou léþbu potĜebují lékaĜi o pacientovi co nejvíce informací, tedy i informace o jeho pĜijmu potravy. PĜínos této práce proto shledávám pĜedevším ve vytvoĜení mobilní aplikace pro sledování pĜíjmu potravy. Tato aplikace by navíc mohla být výchozím bodem pro další práce a pro další rozšíĜení nebo kombinaci s jinými moduly. Jako hlavní výhodu webového portálu potom spatĜuji v zavedení role lékaĜe, který si mĤže prohlížet informace o konzumacích svých pacientĤ. MĤže tak prĤbČžnČ kontrolovat své pacienty a v pĜípadČ nedodržování stanovených limitĤ jim napĜíklad mĤže zaslat varovný email. Pro pacienta má webový portál význam hlavnČ pĜi detailním prohlížení svých pĜíjmĤ za delší uplynulé období. Navíc v ýeské republice vznikla zatím pouze jedna podobná aplikace – Kalorické tabulky (2.3.2.1). Pokud by se tuto aplikaci podaĜilo dostat na obchod Google Play, mohla by zde vzniknout zajímavá konkurence, která by mohla vést ke vzájemnému vylepšování a zdokonalování aplikací.
39
40
KAPITOLA 6. ZÁVċR
6.3. Možnosti dalšího vývoje KromČ možnosti vývoje dalších modulĤ pro aplikaci, popĜípadČ webový portál, bych chtČl zmínit možnosti dalšího pokraþování vývoje aplikace nebo vylepšení nedostatkĤ, které odhalilo Testování (5). Níže uvádím nČkolik možných rozšíĜení: 1. Získání databáze s vČtším množstvím aktuálních informací o potravinách a nápojích. 2. Implementace grafĤ z webového portálu také do aplikace. 3. RozšíĜení aplikace pro potĜeby diabetikĤ (napĜ. zavedení chlebových jednotek, deníþek o aplikacích inzulínu apod.). 4. Odstranit nutnost stálého pĜipojení k internetu (zavedení interní databáze a synchronizaci s databází na serveru). 5. Možnost vyfotografovat si jídlo a pĜipojit ke konkrétní konzumaci. 6. Zavedení jídelníþku (dietního plánu) a jeho plnČní. 7. Vylepšení zadávání nové potraviny o kontrolní mechanismy. 8. Identifikace potraviny podle þárového kódu.
Literatura [1]
KLESCHT, Vladimír. PČt pilíĜĤ zdravého života. Vydání první. Brno: Computer Press, a.s., 2008. ISBN 978-80-251-2149-8.
[2]
GILMORE, Jason W. Velká kniha PHP a MySQL 5: kompendium znalostí pro zaþáteþníky i profesionály. Vyd. 1. [i.e. 2. vyd.]. Brno: Zoner Press, 2007, 864 s. ISBN 80-868-1553-6.
[3]
MURPHY, Mark L. Android 2: prĤvodce programováním mobilních aplikací. Vydání první. Brno: Computer Press, 2011, 375 s. ISBN 978-80-251-3194-7.
[4]
MÁLKOVÁ, Iva. ZdravČ jíst, zdravČ žít. 4. vydání. Praha: Spoleþnost STOB, 2005.
[5]
ŽÁKOVÁ, Lenka. Život s diabetes mellitus. Brno, 2011. Dostupné z: http://is.muni.cz/th/265144/pedf_b/Bakalarska_prace_-_Zivot_s_diabetem.pdf. BakaláĜská práce. Masarykova univerzita. Vedoucí práce PhDr. Mgr. Lenka Procházková.
[6]
BERNARD, Borek. Využití objektových technologií pĜi vývoji webových aplikací: Srovnání PHP s ASP.NET. Praha, 2004. Dostupné z: http://www.borber.com/files/Bernard-PHP-vsASP.NET.pdf. BakaláĜská práce. Vysoká škola ekonomická v Praze. Vedoucí práce Ing. Tomáš Brabec.
[7]
DEMAND MEDIA, Inc. U.S.A. Calories Per Hour [online]. [10.12.2007] [cit. 2012-04-20]. Dostupné z: http://www.caloriesperhour.com/tutorial.php
[8]
MTE SPOL. S R.O. MTE - Váš partner pĜi Diabetes [online]. [2012] [cit. 2012-04-20]. Dostupné z: http://www.mte.cz/
[9]
Cukrovka. Vitalion.cz [online]. © 2012 [cit. 2012-04-23]. Dostupné z: http://nemoci.vitalion.cz/cukrovka/
[10] STACK EXCHANGE INC. Stack Overflow [online]. [2012] [cit. 2012-04-20]. Dostupné z: http://stackoverflow.com/ [11] GOOGLE INC. Android Developers [online]. [2012] [cit. 2012-04-20]. Dostupné z: http://developer.android.com/ [12] THE PHP GROUP. PHP: Hypertext Preprocessor [online]. © 2001-2012 [cit. 2012-04-22]. Dostupné z: http://cz.php.net/ [13] VýbČr správné databáze. Linux Software [online]. [2003-2012] [cit. 2012-04-23]. Dostupné z: http://www.linuxsoft.cz/article.php?id_article=1425 [14] RAHMAN, Fahmi. Connection between PHP (server) and Android (client) Using HTTP and JSON. Fahmi Rahman: All about technology and hobbies [online]. [21.4.2011] [cit. 201204-20]. Dostupné z: http://fahmirahman.wordpress.com/2011/04/21/connection-betweenphp-server-and-android-client-using-http-and-json/ 41
42
LITERATURA
[15] ŠPINAR, David a Radek PAVLÍýEK. Pravidla pĜístupnosti: Seznam pravidel. Pravidla pĜístupnosti [online]. [2012] [cit. 2012-05-03]. Dostupné z: http://www.pravidlapristupnosti.cz/ [16] Gchartphp [online]. [2012] [cit. 2012-05-03]. Dostupné z: http://code.google.com/p/gchartphp/ [17] Návrhový vzor Page Controller. Webové aplikace [online]. © 2007-2010 [cit. 2012-05-03]. Dostupné z: http://weboveaplikace.info/2009/05/30/navrhovy-vzor-page-controller/ [18] Mod_rewrite. JANOVSKÝ, Dušan. Jak psát web [online]. [2012], 03. dubna 2012 [cit. 2012-05-03]. Dostupné z: http://www.jakpsatweb.cz/server/mod-rewrite.html [19] PARISE, Jon. The Log Package. GitHub [online]. © 2012 [cit. 2012-05-03]. Dostupné z: http://pear.github.com/Log/ [20] SLEZÁK, David. Sledování kvality spánku pomocí chytrého telefonu. Praha, 2012. BakaláĜská práce. ýVUT v Praze. Vedoucí práce Ing. Daniel Novák, Ph.D. [21] MOSINGER, JiĜí. Vyhodnocování stavu maniodepresivních pacientĤ pomocí chytrého telefonu s operaþním systémem Android. Praha, 2012. BakaláĜská práce. ýVUT v Praze. Vedoucí práce Ing. Daniel Novák, Ph.D. [22] NOVÁK, Daniel et al. OLDES: new solution for long-term diabetes compensation management. Praha, 2008.
PĜíloha A
A. Seznam použitých zkratek ANSI
American National Standards Institute
API
Application Programming Interface
ASP
Active Server Pages
BMR
Basal Metabolic Rate
BOM
Byte Order Mark
CSS
Cascading Style Sheets
DM
Diabetes Mellitus
EDGE
Enhanced Data rates for GSM Evolution (nebo Enhanced Data rates for Global Evolution)
GPRS
General Packet Radio Service
HTML
HyperText Markup Language
HTTP IIS
HyperText Transfer Protocol Internet Information Server
JSON
JavaScript Object Notation
OS PEAR
Operaþní Systém PHP Extension and Application Repository
PHP
PHP: Hypertext Preprocessor (dĜíve Personal Home Page)
SQL
Structured Query Language
UML URL
Unified Modeling Language Uniform Resource Locator
UTF
UCS Transformation Format
XHTML eXtensible HyperText Markup Language
43
PĜíloha B
B. Instrukce testování dietologické þásti aplikace 1. VyplnČní pĜedtestového dotazníku PĜedtestový dotazník je pĜiložen k prĤvodnímu emailu. OdpovČdi prosím zašlete na
[email protected] ve tvaru: þíslo otázky – odpovČć.
2. Nainstalování aplikace a nastavení webového portálu Aplikace je ke stažení na následující adrese: http://test.hanx.cz/Asleep.apk Aplikaci je možné stáhnout v poþítaþi a nakopírovat do telefonu, nebo stáhnout pĜímo v telefonu. Poté kliknutím na stažený soubor aplikaci nainstalujete. Je možné, že budete muset povolit instalaci aplikací z neznámých zdrojĤ. To se provede z hlavní obrazovky pĜes menu Nastavení > Aplikace > Neznámé zdroje – zaškrtnout; poté již bude možné aplikaci nainstalovat. Po prvním spuštČní je nutné se pĜihlásit/zaregistrovat. Poté již bude možné aplikaci zaþít používat. Po registraci se pĜihlaste na webový portál (http://a.hanx.cz/diet/) a nastavte si za svého ošetĜujícího lékaĜe ‚Johna A. Zoidberga‘ (
[email protected]).
3. Testování aplikace a webového portálu Cílem testování je ovČĜit funkþnost a použitelnost aplikace pro sledování kalorického pĜíjmu (dietologického modulu, zelená ikonka v úvodním spuštČní) a webového portálu. Webový portál umožĖuje témČĜ stejné funkce jako aplikace, ale mČl by sloužit pĜedevším jako pĜehledový, pĜípadnČ jako dohled pro lékaĜe. Zadávat své zkonzumované údaje mĤžete prostĜednictvím aplikace nebo webového portálu. Žádám vás o použití obou možností, kterou budete využívat více, záleží na vás. Velice rád bych vás požádal o co nejpoctivČjší používání aplikace a zadávání pokud možno pravdivých údajĤ. Rozhodující období testování je od 20.4. do 27.4.2012, samozĜejmČ je možné aplikaci zaþít používat dĜíve, nebo používat i po skonþení testování.
45
46
PěÍLOHA B. INSTRUKCE TESTOVÁNÍ DIETOLOGICKÉ ýÁSTI APLIKACE
4. VyplnČní potestového dotazníku V pátek 27.4. vám zašlu potestový dotazník, ve kterém zhodnotíte aplikaci. OdpovČdi mi prosím opČt zašlete na email. V pĜípadČ jakýchkoliv dotazĤ mČ neváhejte kontaktovat na uvedeném emailu. PĜedem dČkuji za otestování, Václav Burda
PĜíloha C
C. Popis instalace webového portálu a aplikace V této pĜíloze popíši, jak postupovat pĜi instalaci webového portálu a podpory mobilní aplikace na nový server. Webový portál mĤže fungovat také samostatnČ bez mobilní aplikace. Veškeré potĜebné soubory pro instalaci jsou na pĜiloženém CD v adresáĜi web. Minimální požadavky na vybavení serveru jsou: PHP verze 5, MySQL verze 5, mod_rewrite ON, sessions ON.
Pro instalaci webového portálu postupujte podle následujících bodĤ: 1. Na serveru (napĜíklad v phpMyAdminu) spusĢte instalaþní SQL skript – database.sql. 2. PĜekopírujte adresáĜ diet na Váš server. 3. V adresáĜi diet naleznČte a editujte soubor pw.php (0). V nČm nastavte pĜíslušné pĜístupové údaje a absolutní adresu projektu podle nastavení na Vašem serveru. 3 4 5 6 7 8
define('DB_SERVER', 'database.domain.com'); define('DB_USER', 'user'); define('DB_PW', 'password'); define('DB_DB', 'database'); define('URL', 'http://www.your-domain.com/diet');
Ukázka B.1: Obsah souboru pw.php s pĜístupovými údaji.
4. Editujte soubor “.htaccess“ a nastavte RewriteBase dle struktury na Vašem serveru. Dle struktury na Vašem serveru je možné, že aktuální nastavení bude funkþní i bez editace. 5. Výchozí údaje pro administrátora, po instalaci tyto údaje ihned zmČĖte! email:
[email protected] heslo: admin
Pro instalaci podpory mobilní aplikace postupujte podle následujících bodĤ: 1. Nakopírujte adresáĜ scripts z pĜiloženého CD na Váš server. 2. ObdobnČ jako u webového portálu editujte soubor pw.php a nastavte pĜístupové údaje. 3. V adresáĜi aplication\src\android\diet\db\ editujte soubor Konstanty.java a upravte následující Ĝádek podle toho, kam jste nakopírovali adresáĜ scripts. 1
public static final String HTTP_CZ = "your.domain.com/scripts/";
4. Sestavte si vlastní upravenou verzi aplikace a tu mĤžete distribuovat svým pacientĤm. Zdrojové kódy aplikace naleznete v adresáĜi aplication na pĜiloženém CD. 47
PĜíloha D
D. Screenshoty webového portálu
Obrázek D.1: PĜihlášení do aplikace, možnost registrace nebo zaslání zapomenutého hesla.
49
50
PěÍLOHA D. SCREENSHOTY WEBOVÉHO PORTÁLU
Obrázek D.2: Registraþní formuláĜ pro nového uživatele.
51
Obrázek D.3: Hlavní stránka aplikace po pĜihlášení.
52
PěÍLOHA D. SCREENSHOTY WEBOVÉHO PORTÁLU
Obrázek D.4: Detail vyhledávané potraviny s možností nahrání ilustraþního obrázku.
53
Obrázek D.5: PĜehled konzumací za minulý mČsíc, níže je ještČ graf pro sacharidy, tuky a bílkoviny.
PĜíloha E
E. Screenshoty mobilní aplikace
Obrázek E.1: Úvodní rozcestník mezi moduly.
Obrázek E.2: ýást nastavení limitĤ a osobních údajĤ.
55
56
PěÍLOHA E. SCREENSHOTY MOBILNÍ APLIKACE
Obrázek E.3: Záložka kalorického pĜíjmu.
Obrázek E.5: Záložka pitného režimu.
Obrázek E.4: Záložka statistik potravin a nápojĤ.
Obrázek E.6: Záložka voleb a možností aplikace.
57
Obrázek E.7: Výsledky hledání výrazu „chléb“.
Obrázek E.9: Detaily o vyhledané potravinČ.
Obrázek E.8: Skládání hlavního jídla.
Obrázek E.10: Seznam zkonzumovaných potravin.
PĜíloha F
F. Struktura pĜiloženého CD root ¬ application......................................................... adresáĜ se zdrojovými soubory mobilní aplikace ¬ assets.......................................................vkládané soubory do aplikace (napĜ. databáze jídel) ¬ bin .............................................................................................instalaþní apk soubor aplikace ¬ libs ......................................................................................pĜikládané použité externí balíþky ¬ res .............................................................................................. adresáĜe se zdroji (resources) ¬ drawable ..........................................................................použité ikony a definice vzhledu ¬ icons_new..................................................................................souþasné použité ikony ¬ icons_old ......................................................................................... pĤvodní verze ikon ¬ drawable-hdpi ....................................................drawable pro specifické rozlišení displeje ¬ drawable-ldpi.....................................................drawable pro specifické rozlišení displeje ¬ drawable-mdpi...................................................drawable pro specifické rozlišení displeje ¬ drawable-xhdpi ..................................................drawable pro specifické rozlišení displeje ¬ layout ...................................................................... vzhled obrazovek jednotlivých aktivit ¬ menu ......................................................................................................... vzhled pro menu ¬ values.....................................................................textové hodnoty a popisky v angliþtinČ ¬ values-cs .....................................................................textové hodnoty a popisky v þeštinČ ¬ xml.......................................................................................................nastavení preferencí ¬ src ............................................................................................adresáĜ se zdrojovými soubory ¬ android ¬ bipol........... zdrojové soubory Vyhodnocování stavu maniodepresivních pacientĤ [21] ¬ diet...................................................... zdrojové soubory pro Sledování pĜíjmu potravy ¬ daydetail .............................................. balíþek se tĜídami pro zobrazení detailu dne ¬ db.................................................................................... balíþek s ostatními tĜídami ¬ welcome ...................................................... balíþek pro registraci nového uživatele ¬ main............................................................................ zdrojové soubory pro rozcestník ¬ sleep............................................. zdrojové soubory pro Sledování kvality spánku [20] ¬ scripts................................................................................ podpĤrné skripty pro mobilní aplikaci ¬ text ..................................................................................................... adresáĜ s touto prací v PDF ¬ source........................................................................................... zdrojové soubory této práce ¬ images..................................................................................... obrázky použité v této práci ¬ screenshots ................................................................................. adresáĜ se screenshoty ¬ aplication.................................................................... screenshoty mobilní aplikace ¬ web ........................................................................... screenshoty webového portálu ¬ web.................................................................. adresáĜ se zdrojovými soubory webového portálu ¬ diet ................................................................................................................ zdrojové soubory 59