Mendelova univerzita v Brně Provozně ekonomická fakulta
Mobilní aplikace pro sledování osobních financí Diplomová práce
Vedoucí práce: Ing. Ondřej Popelka, Ph.D.
Bc. Jan Kejda
V Brně 2013
Děkuji Ing. Ondřeji Popelkovi, Ph.D. za vedení, podporu a cenné rady při tvorbě této práce.
Prohlašuji, že jsem tuto závěrečnou práci vytvořil samostatně dle pokynů vedoucího práce a za použití zdrojů, které jsou uvedeny v seznamu literatury.
V Brně dne 3.1.2013
................................................................
4
Abstract Kejda, J. Mobile aplication for monitoring personal finances. Diploma thesis. Brno. 2012. This thesis focuses on the analysis of existing applications for tracking personal finance on Android mobile platform. Requirements for new application developed using Unified Modeling Language will be defined based on output from this analysis. Designed application allows user to track his/her personal finance, e.g. income, expenses, debts, savings, budget, etc. It also provides function for importing reports and logs from various sources. Additionally it provides their comparison and pairing with previously logged entries, which improves accuracy of financial overview. This application is built as standalone tool for the given mobile platform. Keywords Android, Java, personal finances, mobile aplication
Abstrakt Kejda, J. Mobilní aplikace pro sledování osobních financí. Diplomová práce. Brno. 2012. Diplomová práce se zabývá analýzou stávajících aplikací pro sledování osobních financí na mobilní platformě Android. Na základě této analýzy jsou dále definovány požadavky pro novou aplikaci, při jejímž návrhu se využívá modelovací jazyk UML. Aplikace umožňuje uživateli sledovat své osobní finance, např. příjmy, výdaje, dluhy, úspory, rozpočty, a jiné. Nabízí dále možnost importu záznamů z jiných zdrojů a ty pak dále porovnávat a párovat s již uloženými záznamy a tím zvýšit přesnost přehledu. Aplikace je realizována jako samostatná aplikace pro danou mobilní platformu. Klíčová slova Android, Java, osobní finance, mobilní aplikace
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Analýza a návrh aplikace 2.1 Operační systém Android . . . . . . . . . . . . . . . . . 2.1.1 Struktura operačního systému Android . . . . . . 2.1.2 Hlavní komponenty operačního systémů Android 2.2 Srovnání vybraných aplikací . . . . . . . . . . . . . . . . 2.2.1 Money Lover . . . . . . . . . . . . . . . . . . . . 2.2.2 EasyMoney . . . . . . . . . . . . . . . . . . . . . 2.2.3 Expense Manager . . . . . . . . . . . . . . . . . . 2.2.4 MoneyNotes . . . . . . . . . . . . . . . . . . . . . 2.2.5 My Money . . . . . . . . . . . . . . . . . . . . . 2.2.6 Daily Money . . . . . . . . . . . . . . . . . . . . 2.2.7 Financisto . . . . . . . . . . . . . . . . . . . . . . 2.2.8 CWMoney . . . . . . . . . . . . . . . . . . . . . 2.2.9 Expense Control . . . . . . . . . . . . . . . . . . 2.2.10 MoneyWise . . . . . . . . . . . . . . . . . . . . . 2.3 Zpětná vazba od uživatelů . . . . . . . . . . . . . . . . . 2.4 Specifikace požadavků aplikace Oikoz . . . . . . . . . . . 2.4.1 Základní popis . . . . . . . . . . . . . . . . . . . 2.4.2 Souhrnný popis . . . . . . . . . . . . . . . . . . . 2.4.3 Funkční požadavky . . . . . . . . . . . . . . . . . 2.4.4 Nefunkční požadavky . . . . . . . . . . . . . . . . 2.4.5 Jedinečnost aplikace . . . . . . . . . . . . . . . . 2.5 Návrh řešení . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Use case diagram . . . . . . . . . . . . . . . . . . 2.5.2 Sekvenční diagram pro import záznamů . . . . . 2.5.3 Diagram aktivit přiřazování párů . . . . . . . . . 2.5.4 Logický datový model . . . . . . . . . . . . . . . 2.5.5 Struktura uživatelského rozhraní aplikace . . . . 3 Implementace 3.1 Použité technologie . . . . . . . . . . . . . 3.1.1 Java Development Kit (JDK) . . . 3.1.2 Vývojové prostředí . . . . . . . . . 3.1.3 Android SDK . . . . . . . . . . . . 3.1.4 Android Development Tools (ADT) 3.1.5 SQLite . . . . . . . . . . . . . . . . 3.1.6 AChartEngine . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 7
. . . . . . . . . . . . . . . . . . . . . . . . . . .
8 8 10 13 14 15 16 17 18 19 20 21 22 23 24 25 25 25 26 26 28 29 30 30 32 33 35 38
. . . . . . .
41 41 41 41 42 42 42 44
6
OBSAH
3.2
Popis 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9
řešení . . . . . . . . . . . . . . Architektura aplikace . . . . Struktura aplikace Oikoz . . . Tvorba aktivity import . . . . Uživatelský vzhled na různých Lokalizace aplikace . . . . . . Soubory pro import . . . . . Ověření funkčnosti . . . . . . Správa opakovaných událostí Práva aplikace . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . verzích OS Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
44 44 45 46 52 53 53 54 55 55
4 Diskuze
56
5 Závěr
57
6 Literatura
58
Přílohy
60
A Elektronická příloha
61
B Náhledy aplikace
62
1
ÚVOD A CÍL PRÁCE
1 1.1
7
Úvod a cíl práce Úvod
V dnešní uspěchané době se lidem může velice lehce stát, že ztratí přehled o svých financích. Přehled o financích založený pouze na výpisech z účtu může být pro člověka zavádějící a nedostatečný, protože nedokáže zachytit všechna hlediska finančních operací. Proto je pochopitelné, že lidé hledají nástroje, které jim poskytnou lepší přehled o tom, co se děje s jejich penězi. Tyto nástroje mohou mít různou formu, ale stejný cíl. Jedná se například o osobní poznámkový blok, založené účty od nákupů, tabulku v počítači nebo mobilní zařízení. Některé z nich jsou však uživatelsky přívětivější a mají lepší předpoklady využití než jiné. Z toho důvodu, že v současné době u sebe lidé mají mobilní zařízení, například chytré telefony, tablety a různé databanky, je nejlepší možnou volbou aplikace přímo v nich. Díky tomu mohou mít lidé přehled o svých osobních financích neustále při sobě.
1.2
Cíl práce
Cílem této práce je vytvoření aplikace pro sledování osobních financí na mobilních zařízeních s operačním systémem Android. Tato aplikace bude schopna zpracovávat vložené příjmy, výdaje, rutinní operace, dluhy, úspory a rozpočty a dále bude schopna porovnávat a párovat údaje s výpisem z účtu a další. Aplikace bude lokalizována do českého a anglického jazyka. V práci bude obsažena analýza vybraných, již existujících aplikací, které se touto problematikou zabývají, budou srovnány jejich funkce a vlastnosti a na základě této analýzy budou vytvořeny požadavky na aplikaci novou. Návrh nové aplikace bude využívat modelovacího jazyka UML. Výsledná aplikace bude implementována formou samostatného programu fungujícího pod operačním systémem Android s využitím aplikačního frameworku této platformy. Na závěr bude funkční verze této aplikace zpřístupněna na internetové stránce Google Play.
2
ANALÝZA A NÁVRH APLIKACE
2
8
Analýza a návrh aplikace
Návrh aplikace vychází z nedostatků, které existující aplikace mají a bude spojovat všechny hlavní funkce, které by aplikace pro správu osobních financí měla mít. Před srovnáním vybraných aplikací bude popsán samotný operační systém, na kterém aplikace fungují.
2.1
Operační systém Android
Operační systém Android je rozsáhlá open source platforma určená pro mobilní zařízení, jako jsou chytré telefony, tablety, navigace a další. Z historického hlediska se první střípky tohoto systému datují do roku 2003, kdy byla v Palo Altu založena společnost Android Incorporation, a to Andym Rubinem, Richem Minerem, Nickem Searsem a Chrisem Whitem. Tento systém oslovil společnost Google Inc., která Android Inc. v roce 2005 koupila. Na vývoji systému se nepodílela jen společnost Google, ale celé uskupení firem, které vzniklo v roce 2007 pod názvem Open Handset Alliance (OHA). OHA je uskupení telekomunikačních operátorů, softwarových a technologických společností a výrobců mobilních zařízení. Celé uskupení v čele se společností Google stojí za vývojem operačního systému Android a kromě společnosti Google sem patří například Samsung, LG, Motorola, Intel, NVidia, Vodafone, T-mobile a další. Cílem OHA je vytvořit otevřené standardy pro mobilní zařízení. V témže roce bylo vydáno první SDK 1 pro systém Android a o rok později byl představen první mobilní telefon fungující s operačním systémem Android ve verzi 1.0.(Yadav, 2011) V polovině roku 2012 ohlásila společnost Google, že operační systém Android je aktivní na 400 milionech mobilních zařízení a z analýzy, kterou provedla společnost IDC 2 v letech 2011 a 2012, vyplynulo, že zařízení se systémem Android mají 75% podíl na trhu s mobilními zařízeními. Podrobné údaje z analýzy jsou v tab. 1, která zobrazuje zastoupení jednotlivých operačních systémů v mobilních zařízeních prodaných v třetím kvartálu v letech 2011 a 2012 z analýzy IDC (2012). Od roku 2008 a vydání první verze 1.0 uběhlo několik let a pro systém Android vyšlo několik nových verzí. Z pohledu vývojáře jsou tyto verze velice důležité, protože každá verze systému je založena na určitém API 3 a informace o jejich rozšíření vývojáři pomáhají určit, na kterou verzi se má zaměřit. tab. 2 zobrazuje všechny verze operačního systému Android od roku 2008 až do prosinec 2012. Aktuální stav nasazení jednotlivých verzí v mobilních zařízeních je aktuální ke dni 1.11.2012 z Dashboards, Android Developers (2012). 1
Software Development Kit je sada nástrojů pro tvorbu aplikací. International Data Corporation je analytická společnost se zaměřením na trh informačních a komunikačních technologií. 3 Application Programming Interface rozhraní pro programování aplikací. 2
2.1
9
Operační systém Android
Tab. 1: Jednotky prodeje mobilních zařízení v milionech kusů a tržní podíl jejich operačních systémů v třetím kvartálu let 2011 a 2012 (IDC, 2012)
Operační systém Android iOS BlackBerry Symbian Windows Phone Jiné Celkem
3Q12 objem prodeje 136,0 26,9 7,7 4,1 3,6 2,8 181,1
3Q12 tržní podíl 75,0% 14,9% 4,3% 2,3% 2,0% 1,5% 100,0%
3Q11 objem prodeje 71,0 17,1 11,8 18,1 1,5 4,2 123,7
3Q11 tržní podíl 57,5% 13,8% 9,5% 14,6% 1,2% 3,4% 100,0%
Tab. 2: Jednotlivé verze operačního systému Android a jejich rozšíření (Dashboards, Android Developers, 2012) Verze 1.0 1.1 1.5 1.6 2.0 - 2.1 2.2 2.3.0 - 2.3.7 3.0 - 3.2 4.0.0 - 4.0.4 4.1
Název
Cupcake Donut Eclair Froyo Gingerbread Honeycomb Ice Cream Sandwich Jelly Bean
API 1 2 3 4 5-7 8 9-10 11-13 14-15 16
Nasazení 0% 0% 0,1% 0,3% 3,1% 12% 54,2% 1,8% 25,8% 2,7%
Každé API je trochu jiné v závislosti na dané verzi. Obsahuje balíčky a třídy jádra, XML prvky, atributy pro deklaraci Android manifestu, oprávnění přístupu ke zdrojům, záměry, možná práva pro přístup a další. Mobilní zařízení, na kterých funguje operační systém Android, se dají dále rozdělit podle velikosti uživatelské obrazovky a hustoty bodů na ní. Z pohledu vývojáře je tato informace důležitá zejména při návrhu uživatelského rozhraní, protože vývojář musí navrhnout, jakým způsobem bude uživatelské rozhraní rozvrženo a jaká velikost jednotlivých prvků má být zvolena. Informace o zastoupení velikostí obrazovek a hustoty bodů u mobilních zařízení fungujících na operačním systému Android ke dni 1.10.2012 je zobrazena v tab. 3. (Dashboards, Android Developers, 2012) Tab. 3: Zastoupení operačního systému Android na mobilních zařízeních s různou velikostí obrazovky a hustotou bodů (Dashboards, Android Developers, 2012) Velikost small normal large xlarge
Celkem 2,7% 86,6% 6,1% 4,6%
ldpi 1,7% 0,4% 0,1%
mdpi 11,0% 2,4% 4,6%
hdpi 1,0% 50,1%
xhdpi 25,1% 3,6%
2.1
Operační systém Android
10
Do kategorie small a normal se dají zařadit například chytré telefony s velikostí obrazovky do 5 palců. U kategorie large a xlarge to jsou obrazovky s velikostí od 4,5 do 10 palců, například tablety. Kategorie rozdělení podle velikosti obrazovky nemají ostré hranice a jejich rozdělení současně s rozdělením podle hustoty bodů je zobrazeno na obr. 1. (Supporting Multiple Screens, Android Developers, 2012)
Obr. 1: Rozdělení mobilních zařízení podle velikosti obrazu a hustoty bodů (Supporting Multiple Screens, Android Developers, 2012)
2.1.1
Struktura operačního systému Android
Struktura samotného operačního systému se dá rozdělit na několik hlavních částí. Grafický přehled jejich uspořádání je pak vidět na obr. 2. Je to jádro Linux, aplikační framework, základní aplikace, knihovny a běhové prostředí, jak popisuje Felker (2011). Každá část systému bude obecně popsána. Jádro Linux Operační systém Android byl vytvořen na otevřeném jádře Linux. Volba Linuxu jako základu pro operační systém Android byla učiněna na základě osvědčených vlastností, které Linux má, jak uvádí Felker (2011). • bezpečnost systému • správa operační paměti • řízení procesů a přidělování zdrojů • správa síťového provozu • ovladače pro hardware Knihovny Android obsahuje v základu několik užitečných knihoven, které může vývojář využívat. Knihovny jsou založeny na různých otevřených projektech a upraveny pro snadné použití pří návrhu aplikací pro operační systém Android. (Felker, 2011) OpenGL multiplatformní API pro vykreslování 2D a 3D počítačové grafiky WebKit webový prohlížeč poskytující základní funkce pro zobrazení webového obsahu SQLite knihovna pro správu relační databáze
2.1
Operační systém Android
11
Media frameworks
knihovna pro práci s multimediálním obsahem, například nahráváním a spouštěním hudby a videa Secure Sockets Layer knihovna pro zabezpečení komunikace
SSL
Obr. 2: Hlavní části operačního systému Android. (Felker, 2011)
Běhové prostředí Běhové prostředí operačního systému Android se stará o samotné spuštění a běh aplikací. Pro operační systém Android se programuje v programovacím jazyce Java s tím rozdílem, že o samotný běh se zde nestará JVM 4 , jak je u jazyka Java běžné, ale Dalvik VM. Základem u programovacího jazyka Java je uložení zdrojového kódu do textových souborů s příponou .java. Kompilátor javac pak tyto zdrojové soubory kompiluje do souborů .class. V souboru .class není nativní kód procesoru. Místo toho obsahuje bajtový kód (bytecode), což je strojový jazyk JVM. Samotné spuštění aplikace potom obstarává JVM. (Zakhour a kol., 2007) U operačního systému Android není použit JVM, ale společností Google vytvořený Dalvik Virtual Machine, který je na rozdíl od JVM zaměřen jen na operační 4
Java Virtual Machine je program pro spuštění aplikací napsaných v programovacím jazyce Java.
2.1
Operační systém Android
12
systém Android a je otevřený. Hlavním důvodem k tomuto kroku byla uzavřená licence u JVM, kterou v současné době vlastní společnost Oracle. Oproti tomu nástroje jazyka Java a knihovny jsou z velké části otevřené. (Gargenta, 2011) Rozdíl ve zpracování aplikace na Java VM a Dalvik VM je zobrazen na obr. 3, kde je názorně ukázán průběh zpracování zdrojového kódu až po jeho spuštění na virtuálním stroji. Kde v případě virtuálního stroje Dalvik je bajtový kód jazyku Java před spuštěním zkompilován na bajtový kód Dalvik, který je poté zpracován na Dalvik VM.
Obr. 3: Průběh zpracování a spuštění aplikace u Java VM a Dalvik VM (Gargenta, 2011)
Aplikační framework Aplikační framework obsahuje sadu knihoven a služeb, které se využívají při vývoji a tvorbě aplikací a zajišťují některé nezbytné funkce, jak popisuje Gargenta (2011). Activity manager správa životního cyklu aktivit Telephony manager poskytuje přístup k telefonním službám a údajům View system správa pohledů a vrstev pro vykreslování uživatelského prostředí Location manager poskytuje přístup k informacím o poloze
2.1
Operační systém Android
13
Základní aplikace Každý operační systém Android obsahuje v základu několik aplikací, které uživateli poskytují základní funkce pro práci (Gargenta, 2011). Mezi tyto aplikace patří například aplikace pro volání, správu kontaktů, posílání textových zpráv, prohlížení webového obsahu, dále kalendář, poštovní klient a mnoho dalších. Počet základních aplikací se může lišit, protože mnoho výrobců dělá vlastní systémové nadstavby a instalují své aplikace. 2.1.2
Hlavní komponenty operačního systémů Android
Operační systém Android má několik základních komponentů, které jsou při vývoji aplikace klíčové. Patří mezi ně View, Activity, Intent, Content Provider, Service a AndroidManifest.xml, jak popisuje Komatineni a MacLean (2012). View (pohled) View je základním elementem uživatelského prostředí. View reprezentuje například tlačítko, textový popis, editační pole, prvek výčtu a mnoho dalšího. View může tvořit hierarchické struktury a obsahovat další View. Ve výsledku je vše, co uživatel vidí na obrazovce, množina několika View. Activity (aktivita) Activity je třída, která se stará o vykreslení uživatelského prostředí jednoho a více hlavních View a vykresluje samostatnou obrazovku v aplikaci. Určuje, co může uživatel v aplikaci provádět, například editovat telefonní čísla a jména u kontaktu, poznamenávat události v kalendáři nebo hrát hry. Aktivit bývá v aplikaci více a většinou je jejich počet shodný s počtem uživatelských obrazovek. Intent (záměr) Intent se dá vyložit jako záměr pro určitou činnost. Záměry v operačním systému Android mohou být spuštěny na základě podnětu aplikace nebo systému. Prostřednictvím záměru lze specifikovat, čeho je třeba dosáhnout a umožňuje systému říct, který vhodný nástroj zvolit. Záměry se často používají k otevírání aktivit a spouštění služeb. Content Provider (dodavatel obsahu) Content Provider obstarává sdílení a předávání dat mezi mobilními aplikacemi v zařízení. Může se jednat například o načtení informací o kontaktu nebo práci s databází jiné aplikace. Service (služba) Operační systém Android umožňuje běh procesů na pozadí. Takovými procesy jsou služby, které mohou běžet na pozadí i když samotná aplikace již nemá spuštěnou
2.2
Srovnání vybraných aplikací
14
žádnou aktivitu. Například služba, která kontroluje emailovou schránku a v případě nové zprávy zobrazí upozornění, nebo přehrávač, který hraje hudbu i po uzavření hlavní obrazovky aplikace. AndroidManifest.xml AndroidManifest u každé aplikace definuje její obsah a chování. V manifestu jsou zapsány všechny aktivity, služby, oprávnění a funkce, které aplikace potřebuje pro svůj běh. Jedná se o jeden z klíčových zdrojů, který se kontroluje před instalací samotné aplikace do zařízení. Zvláštní důraz je kladen na přehled oprávnění, která definují, co vše aplikace v zařízení může provádět a čeho může využívat.
2.2
Srovnání vybraných aplikací
Oficiálním portálem pro aplikace u operačního systému Android je internetový obchod Google Play 5 . Na stránce lze získat i jiný obsah, například knihy, časopisy, hudbu, filmy a také je zde možnost nákupu referenčních zařízení z řady Nexus od společnosti Google. Pro Českou republiku je tato stránka omezena pouze na aplikace pro Android. U každé aplikace na této stránce mohou uživatelé, kteří si danou aplikaci stáhnou, hodnotit a psát připomínky formou komentářů. Hodnocení je zde prováděno označením příslušného počtu hvězdiček, kdy pět hvězdiček znamená nejlepší hodnocení a jedna hvězdička hodnocení nejhorší. Na stránce se nachází několik zajímavých aplikací se zaměřením na sledování osobních financí. Pro analýzu byly vybrány ty aplikace, které měly počet stažení od 100 000 až po pět milionů, a ačkoliv tato čísla neprezentují aktivní uživatele, poskytují určitou informaci o rozšíření dané aplikace. Dalším hlediskem výběru byla výhradně pozitivní hodnocení od uživatelů (5 a 4 hvězdičky). U hodnocení kladů a záporů těchto aplikací bylo přihlíženo ke zpětné vazbě od uživatelů.
5
https://play.google.com
2.2
Srovnání vybraných aplikací
2.2.1
15
Money Lover
Aplikace je v kategorii 500 tisíc až milion stažení a od uživatelů má 11 tisíc kladných ohodnocení.6 Aplikace je dostupná ve dvou verzích, v placené a neplacené. Placená verze je oproti neplacené doplněna exportem záznamů a odstraněním reklamního banneru. Tato aplikace obsahuje velké množství užitečných funkcí pro sledování osobních financí. Poskytuje uživateli velmi dobrý přehled nad příjmy a výdaji, dále mu umožňuje evidovat jeho dluhy, úspory a rozpočty a je zde také možnost nastavení operací s opakováním. Uživatel má možnost plné správy účtů a kategorií a aplikace také poskytuje graficky přehled nad časovými úseky použitím grafů. V aplikaci je možné si databázi zálohovat a uživateli umožňuje provést export záznamů do formátu CSV. Nevýhodou aplikace může být špatná orientace u určitých funkcí a absence možnosti importování záznamů do aplikace. Aplikace je lokalizovaná do několika jazyků včetně českého. Klady: • správa příjmů, výdajů a rozpočtů • možnost opakovaní operací • správa účtů a kategorií • přehled s použitím grafů • záloha databáze • export záznamů • lokalizace do českého jazyka Zápory: • chybí možnost importu • špatná orientace v uživatelském prostředí
Obr. 4: Náhledy aplikace Money Lover
6
https://goo.gl/3cpjm
2.2
Srovnání vybraných aplikací
2.2.2
16
EasyMoney
Aplikace je v kategorii milion až pět milionů stažení a od uživatelů má téměř 10 tisíc kladných ohodnocení.7 Aplikace je dostupná ve verzi trial na 30 dní, po jejichž uplynutí je nutné zakoupení verze plné. Tato aplikace je zaměřena na správu osobních financí přes jednotlivé účty. Uživateli umožňuje evidovat příjmy, výdaje a rozpočty a operace lze nastavit s opakováním. Uživatel má možnost plné správy účtů a kategorií, aplikace poskytuje grafický přehled nad časovými úseky použitím grafů a dále je možné si v aplikaci databázi zálohovat a provádět export a import záznamů. Importovat lze pouze takové záznamy, které si uživatel v této aplikaci exportuje. Uživatelské prostředí je, s výjimkou seznamové nabídky kategorií a výčtu časových úseků, přehledné a jednoduché. U časových úseků a kategorií jsou nabídky příliš dlouhé a nepřehledné. Uživateli chybí možnost kontroly a správy dluhů a úspor. Aplikace je lokalizovaná do několika jazyků, ne však do českého. Klady: • správa příjmů, výdajů a rozpočtů • možnost opakovaní operací • správa účtů a kategorií • přehledné grafy • záloha databáze • export záznamů Zápory: • chybí možnost importu CSV jiné struktury • špatná orientace v seznamových nabídkách • bez možnosti správy dluhů a úspor
Obr. 5: Náhledy aplikace EasyMoney 7
http://goo.gl/mF2sx
2.2
Srovnání vybraných aplikací
2.2.3
17
Expense Manager
Aplikace je v kategorii milion až pět milionů stažení a od uživatelů má 9 tisíc kladných ohodnocení.8 Aplikace je dostupná ve dvou verzích, v placené a neplacené, jediným rozdílem mezi nimi je reklamní banner u neplacené verze. Expense manager umožňuje evidovat příjmy, výdaje, rozpočty a opakující se operace a uživatel má možnost správy kategorií. Přehled nad financemi je zajištěn grafy a textovými výpisy. V aplikaci je možné si databázi zálohovat a využívat exporty a importy s jednotnou strukturou bez jakékoliv možnosti volby. V aplikaci dále chybí možnost přiřazovat záznamy k jednotlivým účtům. Uživatelské prostředí může v některých funkcích působit nepřehledně, výpisy jsou nadbytečné a zhoršují orientaci. Uživatel nemá možnost jakékoliv správy dluhů a úspor. Aplikace je lokalizována do anglického jazyka. Klady: • správa příjmů, výdajů a rozpočtů • možnost opakovaní operací • správa kategorií • přehledné grafy • záloha databáze Zápory: • export bez možnosti nastavení • import pouze z exportu vytvořeného aplikací • špatná orientace u některých funkcí • absence správy dluhů, úspor a účtů
Obr. 6: Náhledy aplikace Expsense Manager
8
http://goo.gl/kIBta
2.2
Srovnání vybraných aplikací
2.2.4
18
MoneyNotes
Aplikace je v kategorii 100 až 500 tisíc stažení a od uživatelů má 300 kladných ohodnocení.9 Aplikace je dostupná ve dvou verzích, v placené a neplacené, jediným rozdílem mezi nimi je reklamní banner u neplacené verze. Tato aplikace umožňuje sledování financí z pohledu správy jednotlivých kategorií, v těchto kategoriích evidovat příjmy a výdaje a dále poskytuje možnost nastavení rozpočtů a účtů. Poskytuje náhled na kategorie s využitím výsečových grafů. Uživatel má možnost zálohovat databázi a exportovat záznamy. Chybí zde však možnost definovat vlastní kategorie a kontrolovat své dluhy a úspory. Aplikace neumožňuje záznamy importovat. V uživatelském prostředí není zcela jasné rozdělení kategorií na příjmové a výdajové, jsou zde pouze stejně barevné ikony bez konkrétního rozdělení. Záznamy nelze nastavit s časovým opakováním. Aplikace je lokalizována do anglického jazyka. Klady: • správa příjmů, výdajů a rozpočtů • přehledné grafy • záloha databáze • export záznamů Zápory: • chybí možnost importu • špatná orientace u kategorií • kategorie nelze editovat • absence správy dluhů, úspor • bez možnosti opakování záznamů
Obr. 7: Náhledy aplikace MoneyNotes
9
http://goo.gl/mWwhn
2.2
Srovnání vybraných aplikací
2.2.5
19
My Money
Aplikace je v kategorii 100 až 500 tisíc stažení a od uživatelů má 700 kladných ohodnocení.10 Aplikace je dostupná v neplacené verzi. My Money je jednoduchá aplikace, která umožňuje sledování osobních financí z pohledu příjmů a výdajů a dále poskytuje možnosti tvorby rozpočtů, u kterých však nelze nastavit nic jiného než název. Aplikace má možnost spravovat účty, ne však kategorie. V případě, že chce uživatel záznam nějak kategorizovat, může vybrat rozpočet. Je zde určitý přehled nad finančními operacemi pomocí grafů, které jsou bez možnosti nastavení. V aplikaci chybí správa dluhů a úspor a není zde ani možnost přehlednějšího exportu a importu. Zmíněný export a import aplikace pouze zálohuje a obnovuje záznamy. Aplikace je lokalizovaná do několika jazyků, ne však do českého. Klady: • správa příjmů, výdajů a rozpočtů • přehlednost a orientace v uživatelském rozhraní Zápory: • omezení exportu a importu • nelze spravovat dluhy, úspory a kategorie • grafy bez možnosti výběru časového úseku
Obr. 8: Náhledy aplikace My Money
10
http://goo.gl/3kq5B
2.2
Srovnání vybraných aplikací
2.2.6
20
Daily Money
Aplikace je v kategorii 500 tisíc až milion stažení a od uživatelů má 4 tisíce kladných ohodnocení.11 Aplikace je dostupná v neplacené verzi. Jedná se o jednoduchou aplikaci, v níž si může uživatel evidovat příjmy a výdaje. Je zde umožněna správa účtů a kategorií s graficky jednoduchým přehledem. Výpisy v daných obdobích poskytuje aplikace pouze v textové formě, chybí zde správa rozpočtů, dluhů, úspor a opakovaných operací. Z hlediska exportu a importu je práce v aplikaci omezená pouze na manipulaci s CSV, který je vytvořen samotnou aplikací. Dobrý dojem mírně kazí nepřehledné menu voleb u některých funkcí v nastavení. Celá aplikace je postavená na designu dvou hlavních oken a uživatelské prostředí je doplněno sadou pěkně zpracovaných ikon. Aplikace je lokalizována do anglického jazyka. Klady: • správa příjmů a výdajů • přehledná správa účtů a kategorií Zápory: • export a import s omezeným použitím • nelze spravovat dluhy, úspory a rozpočty • přehled pouze v textové formě • chybí možnosti opakovaných operací
Obr. 9: Náhledy aplikace Daily Money
11
http://goo.gl/cGrmZ
2.2
Srovnání vybraných aplikací
2.2.7
21
Financisto
Aplikace je v kategorii 100 až 500 tisíc stažení a od uživatelů má 10 tisíc kladných ohodnocení.12 Aplikace je dostupná v neplacené verzi s možností finanční podpory vývojáře. Financisto je přehledná aplikace pro sledování osobních financí s celou řadou funkcí. Uživateli nabízí správu příjmů a výdajů s možností opakovaných operací, dále je zde dobře zpracovaná správa rozpočtů a jejich přehled a nechybí zde ani přehledné výpisy a grafy za zvolené období. V aplikaci je umožněna správa úspor za využití projektů. Export a import má rozšířené nastavení, nicméně pro import lze použít jen CSV soubor generovaný samotnou aplikací a tato aplikace má také možnost zálohy a obnovy databáze. Uživatelské prostředí je tvořeno čtyřmi hlavními, velice přehlednými okny, ve kterých se uživatel pohybuje pomocí záložek. Aplikace je lokalizována do několika jazyků včetně češtiny. Klady: • správa příjmů, výdajů a rozpočtů • přehledná správa účtů, kategorií a opakovaných transakcí • grafický i textový přehled • záloha databáze Zápory: • export a import s omezeným využitím • bez možnosti správy dluhů
Obr. 10: Náhledy aplikace Financisto
12
http://goo.gl/HyALM
2.2
Srovnání vybraných aplikací
2.2.8
22
CWMoney
Aplikace je v kategorii milion až pět milionů stažení a od uživatelů má téměř 44 tisíc kladných ohodnocení.13 Aplikace je dostupná ve dvou verzích, v placené a neplacené, u placené verze jsou uživateli poskytnuty další funkce exportu. CWMoney je přehledná aplikace určená výhradně ke sledování příjmů a výdajů. Uživateli poskytuje u vkládání záznamů velký výběr kategorií a podkategorií, a dále umožňuje spravovat účty a nabízí rozsáhlý grafický a textový přehled nad časovými obdobími. Chybí zde různé funkce, například správa dluhů, úspor a evidování opakovaných transakcí. Databázi lze zálohovat a záznamy exportovat do formátu CSV, ale import zde není možný. Uživatelské prostředí je přehledné a zobrazené v jednom okně. Aplikace je lokalizována do čínštiny a angličtiny. Klady: • správa příjmů a výdajů • přehledná správa účtů • možnost volby kategorií a podkategorií • grafický i textový přehled • záloha databáze a export záznamů Zápory: • absence importu záznamů • nelze vytvářet opakované operace • absence správy rozpočtů, dluhů a úspor
Obr. 11: Náhledy aplikace CWMoney
13
http://goo.gl/VqCiv
2.2
Srovnání vybraných aplikací
2.2.9
23
Expense Control
Aplikace je v kategorii 100 až 500 tisíc stažení a od uživatelů má 3 tisíce kladných ohodnocení.14 Aplikace je dostupná v neplacené verzi. Aplikace pro sledování osobních financí se soustřeďuje především na kategorie a podkategorie. Ty jsou needitovatelné a pro příjmové a výdajové operace stejné, což není příliš praktické. Možnosti přiřazení záznamů k účtům chybí, stejně jako správa rozpočtů, opakovaných transakcí, úspor a dluhů. Export a import v této aplikaci není nijak nastavitelný a zastává funkci zálohy a obnovy databáze. Přehled za dané období je pouze v textové formě bez možnosti lepšího nastavení. Uživatelské prostředí je přehledně rozděleno do pěti záložek s možností změny barevného schématu. Aplikace má lokalizaci do anglického jazyka. Klady: • správa příjmů, výdajů a rozpočtů • možnost volby kategorií a podkategorií • nastavení uživatelského prostředí Zápory: • absence importu záznamů z jiných zdrojů • nelze vytvářet opakované operace • absence správy rozpočtů, dluhů, úspor a účtů • přehled bez možnosti nastavení
Obr. 12: Náhledy aplikace Expsense Control
14
http://goo.gl/tmurD
2.2
Srovnání vybraných aplikací
2.2.10
24
MoneyWise
Aplikace je v kategorii 100 až 500 tisíc stažení a od uživatelů má 1600 kladných ohodnocení.15 Aplikace je dostupná ve dvou verzích - v neplacené a placené. Placená verze odstraňuje reklamní banner a přidává možnost transakce mezi účty. MoneyWise je aplikace pro správu osobních financí zaměřená na evidenci příjmů a výdajů. Uživatel má možnost správy rozpočtů, účtů a kategorií, které se ovšem nedělí na výdajové a příjmové, ale k záznamům je možné přidávat barevné štítky pro další kategorizaci. Díky propracovanému systému filtrů u rozpočtů lze evidovat i dluhy a úspory, ovšem mírně složitějším způsobem, chybí správa opakovaných operací a import záznamů. Export je zde velmi propracován s možností odeslání na email ve formátu html a CSV. Aplikace poskytuje možnost zálohy a obnovy databáze. Je zde rovněž propracované zobrazení grafů v časových úsecích a uživatelské prostředí je přehledné a poskytuje snadnou orientaci. Aplikace je lokalizovaná do anglického jazyka. Klady: • správa příjmů, výdajů a rozpočtů • možnost volby kategorií a štítků • přehledné grafy • graficky přehledné uživatelské prostředí • propracovaný export • rozmanité využití rozpočtů Zápory: • absence importu • nelze vytvářet opakované operace
Obr. 13: Náhledy aplikace MoneyWise
15
http://goo.gl/3ah4t
2.3
Zpětná vazba od uživatelů
2.3
25
Zpětná vazba od uživatelů
Na základě příspěvků uživatelů u výše zmíněných aplikací v internetovém obchodě Google Play, hlavních stránkách aplikací a stránkách na sociálních sítích, byly vyhodnoceny základní funkce, o které mají uživatelé zájem a které u aplikace pro sledování osobních financí očekávají. Uživatelé chtějí mít v první řadě možnost evidovat své příjmy a výdaje. U těchto záznamů vyžadují základní informace, jako je název, datum, kategorie a informace o účtu. U příjmů a výdajů očekávají možnost opakování v určitých časových intervalech a schopnost automatického vytváření takových záznamů. Uživatelé chtějí mít možnost vytvářet své vlastní kategorie a účty, které by jim zjednodušily správné zařazení záznamů a zlepšily celkový přehled nad financemi. Dále chtějí mít možnost stanovit rozpočty pro kategorie a následně zobrazovat aktuální stav rozpočtu. Těmito rozpočty uživatelé myslí stanovení určité hranice pro útratu. Důležitou funkcí je také evidence dluhů a úspor, kde je opět důležitá možnost sledování současného stavu. Dluhy mohou být dvojího významu, kdy je uživatel věřitelem nebo dlužníkem a úspory pak mohou být chápany jako peníze, které si uživatel odkládá stranou pro pozdější využití. Uživatelé vyžadují funkce, které jim dokážou poskytnout informace o aktuálním stavu jejich financí. Takovou funkcí je textový výpis nebo graf. Dalším předpokladem je, že data budou moci z aplikace zálohovat, popřípadě je přenést a nahrát v jiném zařízení. Pro uživatele je rovněž důležitá funkce exportu záznamů v takové formě, aby je mohli otevřít například v počítači pro další přehled nebo zpracování. U aplikací uživatelům vadí, že nemají možnost přidání záznamů jiným způsobem než manuálně. Zde by ocenili například import výpisu z účtu. S tím je spojena nespokojenost s nepřesností samotných aplikací, kdy při užívání aplikace může vznikat rozdíl mezi uživatelem zadanou hodnotou a hodnotou reálnou. V těchto případech jsou uživatelé odkázáni na ruční změnu záznamů, aby zajistili, že jejich přehled v aplikaci bude přesný. To je pro uživatele zdlouhavé, pracné a nemusí si takových změn vždy všimnout, což vede k chybnému přehledu nad jejich financemi. Většina existujících aplikací má několik základních funkcí, ale žádná z nich nemá všechny, které uživatel očekává.
2.4
Specifikace požadavků aplikace Oikoz
Na základě analýzy požadavků na aplikaci pro sledování osobních financí byly specifikovány požadavky na aplikaci novou, která bude schopna poskytnout uživateli všechny potřebné funkce. Nová aplikace se bude jmenovat Oikoz. 2.4.1
Základní popis
Aplikace by měla uživateli umožňovat přehled nad jeho osobními financemi. To zajistí několika základními funkcemi, které mu bude poskytovat. Umožní zaznamenávat příjmy a výdaje a ty pak dále zohledňovat v plánech rozpočtů, dluhů a úspor.
2.4
Specifikace požadavků aplikace Oikoz
26
Hlavní přehledy o stavu a operacích budou poskytnuty buď textovou nebo grafickou formou a uživatel také bude mít možnost porovnávat záznamy, které jsou zaznamenané v aplikaci oproti reálným záznamům, například s výpisem z účtu. Rovněž bude poskytovat nástroje pro export záznamů a jejich zálohu. 2.4.2
Souhrnný popis
Účel a využití software Aplikace bude sloužit ke sledování osobních financí a bude se snažit uživateli pomoci pochopit, jakým způsobem hospodaří se svými penězi. Bude umožňovat evidenci jednorázových a opakovaných příjmů a výdajů a poskytovat možnost dalšího rozdělení jednotlivých záznamů do kategorií, účtů a dále evidovat uživatelem vytvořené rozpočty, dluhy a úspory a nabízet podrobný přehled jejich plnění. Umožní mu tedy celkový pohled na zdroje jeho příjmů a jejich další použití, což může uživateli pomoci lépe kontrolovat a komplexně sledovat jeho finance. Přehled hlavních funkcí Aplikace bude mít několik hlavních funkcí, které budou uživateli nabízeny. Důraz bude kladen na přidávání záznamů, ať už se jedná o příjmy nebo výdaje, které mohou být zařazeny k různým účtům a kategoriím s možnou vazbou na dluh, úsporu nebo rozpočet. Aplikace bude poskytovat uživateli možnost přehledů nad jeho současnými financemi a nad tím, jak s nimi nakládá. Pro zajištění vetší přesnosti zde bude funkce importu záznamů z jiných zdrojů, například z výpisu z účtu, kde bude zajištěna možnost párovat importované záznamy se záznamy zadanými. Pro další zpracování a přehled na jiných zařízeních poskytne aplikace možnost záznamy exportovat. Omezující požadavky Aplikaci si bude moci stáhnout pouze osoba s uživatelským účtem u společnosti Google a pro samotný běh aplikace bude nutné mít mobilní telefon s operačním systémem Android alespoň ve verzi 2.2 Froyo, ale aplikace bude fungovat i v novějších verzích systémů. 2.4.3
Funkční požadavky
Zaznamenání příjmu nebo výdaje funkce přidání záznamů příjmového nebo výdajového charakteru vstupy základní informace: název, charakter záznamu, datum, kategorie, účet, částka, nepovinně požadavek na opakování provedení zadané údaje se ověří, zpracují a uloží
2.4
Specifikace požadavků aplikace Oikoz
27
Zobrazení přehledu funkce poskytuje uživateli přehled o jeho financích a jejich současném stavu v časových úsecích, například přehledy výdajů v kategoriích za poslední měsíc, přehled příjmů a výdajů v měsících za poslední rok, změny celkového stavu v časových úsecích apod. vstupy konkrétní volba přehledu, časový úsek pro sledované období provedení aplikace na základě zadaného vstupu od uživatele zobrazí konkrétní přehled a zobrazí odpovídající data Import záznamů funkce import příjmových a výdajových záznamů z jiných zdrojů s možností párování vstupy soubor pro import, volba šablony pro import, záznamy z importu a záznamy z aplikace tvořící společné možné páry provedení aplikace načte soubor z mobilního zařízení a získá z něj potřebné údaje a v případě, že se nachází v aplikaci záznamy, které by mohly odpovídat záznamům z importovaného souboru, informuje uživatele o možném párování a poté, co uživatel zvolí záznamy pro import, aplikace záznamy uloží a v případě párování pouze změní existující Stanovení rozpočtu funkce vytvoření plánu pro rozpočet vstupy základní informace: název, popis, částka, počáteční datum, a nepovinně kategorie, konečné datum, požadavek na opakování provedení zadané údaje se ověří, zpracují a uloží Export záznamů funkce vytvoření a poskytnutí souboru obsahujícího informace o provedených příjmech nebo výdajích vstupy časový rozsah pro výběr záznamů, další možnost uložení (odeslání emailem, uložení na vzdálené datové úložiště) provedení aplikace vybere záznamy splňující časový požadavek a vhodným způsobem je uloží do souboru, uživatele informuje o uložení a umístění a nabídne mu další možnost přeposlání souboru Zaznamenání dluhu funkce vytvoření záznamu o dluhu, který může být dvojího charakteru (uživatel může být dlužníkem nebo věřitelem) vstupy základní informace: název, popis, charakter dluhu, dlužná částka, datum vytvoření a datum splatnosti provedení zadané údaje se ověří, zpracují a uloží
2.4
Specifikace požadavků aplikace Oikoz
28
Zaznamenání úspory funkce vytvoření záznamu úspory vstupy základní informace: název, popis, cílová částka provedení zadané údaje se ověří, zpracují a uloží Záloha a obnova dat v programu funkce zajišťuje uložení dat aplikace do souboru, z něhož je možné tato data později přenést nebo obnovit vstupy u zálohy další možnost uložení (odeslání emailem, uložení na vzdálené datové úložiště), u obnovy volba vstupního souboru provedení aplikace uloží veškerá svá data do souboru, uživatele informuje o uložení a umístění a nabídne mu další možnost přeposlání, při obnově uživatel zvolí soubor, ze kterého má být obnova provedena 2.4.4
Nefunkční požadavky
Uživatelské rozhraní Uživatelské rozhraní bude rozděleno do několika obrazovek, které budou navrženy a přizpůsobeny pro zobrazení na mobilním zařízení. Rozhraní by mělo být přehledné a poskytovat hlavní funkce programu takovým způsobem, aby přechod mezi nimi byl snadný a rychlý. Důležité bude při návrhu uživatelského prostředí dodržení určitého konceptu, používaného u návrhů pro mobilní systém Android, jak je popsáno na Design, Android Developers (2012). Hardware, software a komunikační rozhraní Aplikace musí být po hardwarové stránce nenáročná, nebude mít vliv na plynulý běh operačního systému a nebude požadovat více než 5MB místa v paměti zařízení. Aplikace musí být schopna fungovat na mobilních zařízeních s velikostí obrazovky definovanou u operačního systému Android jako normal a hustotou obrazu mdpi až xhdpi, což odpovídá většině současných chytrých telefonů. Z pohledu softwaru bude aplikace moci dále využívat aplikace pro správu souborů a odesílání emailů. Vše ostatní bude obsaženo v samotném operačním systému nebo v přiložených knihovnách a systém musí být alespoň ve verzi 2.2 Froyo API úroveň 8. Uživatel komunikuje s aplikací prostřednictvím dotykové obrazovky nebo hardwarové klávesnice podle daného modelu zařízení. Výkonnostní požadavky Odezva aplikace se musí pohybovat pro běžné operace pod jednu sekundu, u importu záznamů a práce se zálohou a obnovou dat pak maximálně okolo tří sekund.
2.4
Specifikace požadavků aplikace Oikoz
29
Bezpečnostní požadavky Požadavky na bezpečnost aplikace bude v tomto případě zajišťovat samotný operační systém a vhodné nastavení jeho zabezpečení ze strany uživatele. Požadavky na zajištění dat Data v aplikaci budou moci být zálohována a obnovena na základě iniciativy uživatele. 2.4.5
Jedinečnost aplikace
Aplikace Oikoz by měla splňovat všechny požadavky na aplikaci pro sledování osobních financí, na rozdíl od výše popsaných aplikací, a dále by měla uživateli poskytovat možnosti, jak zajistit mnohem lepší přesnost zadaných záznamů použitím párování se záznamy z jiných zdrojů. Princip párování by měl řešit problém nepřesnosti mezi uživatelem zadanou hodnotou a reálnou hodnotou operace. Jako příklad se dá uvést situace, kdy jde uživatel nakupovat do obchodu a platí kartou. Do aplikace si zadá záznam o výdaji, například 400,- Kč, což je cena produktu, který kupuje. Později ale zjistí, že mu byl napočítán poplatek za platbu kartou a cena, kterou skutečně platil, je o několik korun vyšší. Dalším příkladem může být opakovaná platba,kdy si uživatel v aplikaci zadá, že každý měsíc zaplatí za telefonní tarif 1000,- Kč. Tato platba se mu bude každý měsíc automaticky zaznamenávat, ale reálně se může lišit, protože uživatel každý měsíc provolá jinou sumu. Variant, kdy může dojít k nepřesnosti mezi zadanou a reálnou hodnotou, je samozřejmě více, ale všechny vedou k tomu, že uživatel má nepřesné údaje o stavu svých financí. Párování potom tyto nepřesnosti dokáže opravit a u zaznamenaných údajů hodnotu změnit. K tomu je nezbytný soubor, ve kterém jsou reálné operace uvedeny. Tím může být výpis z uživatelova účtu, který si jednou měsíčně do aplikace importuje a provede párování. Aplikace bude dále propojovat všechny základní funkce a umožní uživateli snadno sledovat své osobní finance s možností zajištění přesnosti záznamů.
2.5
Návrh řešení
2.5
30
Návrh řešení
Zadaným požadavkům nevyhovuje ani jedna vybraná aplikace a proto byla navržena aplikace nová. U návrhu této aplikace je využit modelovací jazyk UML16 , který je souhrnem grafických notací k vytváření analytických a návrhových modelů a umožňuje modelovat jednoduché a složité aplikace pomocí stejné formální syntaxe (Kanisová, Müller, 2006). 2.5.1
Use case diagram
Případ užití je metodou pro zachycení funkčních požadavků na systém. Případy užití popisují typické interakce mezi uživatelem systému a samotným systémem a předkládají nám informaci o tom, jak je systém používaný. (Bittner, Spence, 2003) Systémem, se kterým zde uživatel přichází do styku, je v tomto případě aplikace Oikoz. Uživatelem systému je potom brán samotný uživatel této aplikace. Jednotlivé případy užití jsou pak zobrazeny na obr. 14. Uživatel zde figuruje jako jediný aktér a má úplný přístup ke všem hlavním funkcím. Jednotlivé případy užití zde popisují hlavní funkce aplikace. Tyto funkce budou podrobněji popsány. Zaznamenání příjmu nebo výdaje Uživatel provede finanční operaci a chce si ji v aplikaci zaznamenat. Při vytváření záznamu zadává důležité informace, jako je název, datum, kategorie, účet, ke kterému se záznam váže, hodnota provedené operace a v případě, že se daná operace má opakovat v časovém intervalu, tak i její opakování. V případě opakovaného záznamu aplikace tuto informaci dále uchovává a vkládá záznam za uživatele v daném čase automaticky. U jednotlivých záznamů si pak uživatel může zobrazit podrobnosti a v případě, že při zadávání provedl nějakou chybu, záznam editovat nebo jej úplně smazat. Zobrazení přehledu Uživatel chce sledovat svůj finanční stav s určitým časovým nadhledem, například informace o stavu za poslední měsíc, nebo výdaje v jednotlivých kategorií za poslední rok. Aplikace poskytne takový textový nebo grafický přehled, který bude dávat ucelený náhled na jeho finance. Import záznamů Uživatel má záznamy o svých finančních operacích i z jiného zdroje, tím může být výpis z bankovního účtu, a chce je do aplikace zaznamenat. Pro uživatele aplikace bude zprostředkovávat možnost párování záznamů, které mohou být v aplikaci již zaneseny a tím zajistí, že nedojde k vytvoření stejného záznamu. Párování existujících 16
Zkratka Unified Modeling Language.
2.5
Návrh řešení
31
záznamů v aplikaci a záznamů z importu může zároveň zajistit uživateli zachování přesnosti. Stanovení rozpočtu Uživatel chce stanovit určité hranice, za co bude utrácet. Při vytváření rozpočtu zadá název, popis, maximální hodnotu, počáteční datum, volitelné konečné datum, opakování a kategorii, které se má rozpočet týkat. Uživatel bude moci sledovat aktuální stav těchto rozpočtů a v případě, že jej překročí, bude aplikace tento stav indikovat. Export záznamů Uživatel se rozhodne, že chce záznamy z aplikace dále zpracovat nebo prohlížet jinde než v samotné aplikaci. To mu aplikace umožní exportem záznamů do vhodného formátu. Zde uživatel pro exportování záznamů zvolí časový úsek, ve kterém ho záznamy zajímají. Zaznamenání dluhu Uživateli vznikl dluh, ať už je dlužníkem nebo věřitelem a tento dluh chce v aplikaci zaznamenat a sledovat jeho plnění. Při vytváření zadá název, popis (jestli on dluží někomu nebo někdo dluží jemu), dlužnou částku, datum vytvoření a pokud chce, může zadat také datum splatnosti. Aplikace mu umožní přehled o tom, v jakém stavu se dluh nachází, jestli je splacen, zatím nesplacen, nebo nesplacen po datu splatnosti. Uživatel má u dluhů možnost editace a to v případě, že by při vytváření chybně zadal informaci o dluhu a také možnost smazání dluhu, pokud jej již nechce sledovat nebo evidovat. Zaznamenání úspory Uživatel se rozhodne, že si chce ukládat peníze stranou a na něco spořit. Při zadávání uživatel jednoduše zadá název, popis a pokud chce, tak i cílovou hodnotu úspory. Aplikace mu pak poskytne možnost náhledu na jeho úspory a jejich současný stav. Úsporu lze editovat nebo mazat, a to v případě, že ji uživatel použije nebo se rozhodne spoření ukončit. Záloha a obnova dat Uživatel využívá zálohu a obnovu dat v případě, že chce data přenést do aplikace na jiném zařízení nebo pokud chce zajistit zálohu svých záznamů. Zde kromě uložení do samotného zařízení bude aplikace poskytovat i odeslání na jiný úložný prostor nebo email.
2.5
Návrh řešení
32
Obr. 14: Use case diagram aplikace Oikoz
2.5.2
Sekvenční diagram pro import záznamů
Sekvenční diagram typicky zachycuje chování jednoho scénáře. Ukazuje několik vzorových objektů a zpráv, které jsou předávány mezi těmito objekty v rámci daného případu užití. (Fowler, 2009) V případě aplikace pro systém Android budou třídy, které se starají o zajištění uživatelského vzhledu, obsahovat i aplikační logiku a přistupovat k databázi. Jedním z důležitých případů užití je import záznamů, jehož sekvenční model je zobrazen na obr. 15. Diagram popisuje proces importu záznamů, jehož výsledkem je vložení nových záznamů nebo změna existujících záznamů, pokud jsou spárovány. Pro import stiskne uživatel v aplikaci na obrazovce tlačítko pro výběr souboru, třída spustí aplikaci pro správu souborů, kde uživatel zvolí konkrétní soubor, který chce importovat. Aplikace pro správu souborů odešle aktivitě informaci o cestě k souboru a uživatel dále zvolí příslušnou šablonu pro zpracování zvoleného souboru a přejde k dalšímu výběru. Třída import získá ze souboru záznamy a z nich důležité informace. Těmi jsou název, hodnota, datum a v případě výpisu z účtu také název protiúčtu a popis operace. U těchto jednotlivých záznamů potom vyhledá možné páry a všechny záznamy vloží do databáze do dočasné tabulky. Po uložení záznamů ze souboru do databáze zavolá import třídu pro volbu položek, která se stará o vypsání záznamů z dočasné
2.5
Návrh řešení
33
tabulky v databázi a jejich možných párů. Třída pro volbu položek z databáze získá záznamy a ty uživateli poskytne formou výčtu. U jednotlivých záznamů má uživatel zobrazeny možné páry a ty může v případě, že se jedná o chybné přiřazení změnit nebo zrušit. Na základě uživatelem provedených změn musí být z výčtu patrné, které záznamy jsou pro import do aplikace vybrány a jaké mají páry. Po výběru záznamů pro import uživatel stiskne tlačítko pro dokončení výběru a příslušné záznamy jsou buď zaznamenány do aplikace nebo jsou v případě páru upraveny hodnoty u již existujících záznamů v aplikaci.
Obr. 15: Sekvenční diagram pro use case import záznamů
2.5.3
Diagram aktivit přiřazování párů
Sekvenční diagram pro import ukazuje, jakým způsobem probíhá komunikace jednotlivých objektů v aplikaci Oikoz. Pro představu o tom, jak probíhá vybírání párů pro importované záznamy, bude zvolen diagram aktivit, který bude popisovat postup, jakým aplikace v takovém případě postupuje.
2.5
Návrh řešení
34
Páry se mohou vytvářet dvěma způsoby. Jedním z nich je nalezení blízkého páru, který kontroluje datum a hodnotu záznamu a v případě, že najde záznam v aplikaci, který má stejné datum a podobnou hodnotu jako záznam z externího zdroje, navrhne tyto dva záznamy do páru. Tento způsob je vhodný pro běžně zaznamenané operace. Druhým způsobem je vyhledání podle párovacího vzoru, který může vytvořit uživatel pro záznamy v aplikaci. V tomto případě se bude mluvit o obecném páru, který vzniká na základě názvu záznamu, protiúčtu a časové tolerance. Párování obecných párů podle párovacích vzorů je vhodné v případě opakujících se záznamů, kde se reálná operace může časově a finančně lišit, ale probíhá vždy se stejnou protistranou. Obě dvě metody by tedy měly zajistit správné párování jak u běžných, tak u opakovaných operací. Párování a zpřesnění je samozřejmě závislé na tom, zda má uživatel k dispozici výpis z účtu nebo jiný dokument o reálně provedených operacích. Přiřazování páru je zobrazeno na obr. 16, který popisuje, jak postupuje aplikace při získávání dat ze souboru a nalezení možného páru před samotným přidáním do databáze viz bod 4.1 obr. 15.
Obr. 16: Diagram aktivit pro nalezení páru
2.5
Návrh řešení
2.5.4
35
Logický datový model
Pro zachycení datové struktury aplikace Oikoz je navržen datový model, který je schopen zachytit nezbytnou strukturu pro zajištění všech hlavních funkcí. V této fázi bude vytvořen logický datový model. To je takový datový model, který je nezávislý na implementaci a není třeba v této fázi brát v úvahu konkrétní typ relační databáze (Kanisová, Müller, 2006). Každá entita v tomto návrhu má svůj význam a jejich celkové propojení je zobrazeno na obr. 17. Protože účel jednotlivých atributů nemusí být na první pohled zřejmý, bude význam jednotlivých entit a jejich atributů dále podrobněji popsán. Do popisu nebude zahrnut atribut id, u všech entit se jedná o umělý primární klíč pro jednoznačnou identifikaci jednotlivých entit.
Obr. 17: Logický datový model aplikace
2.5
Návrh řešení
36
Zajímavým atributem je active, který poskytuje informaci o smazání, některé entity je potřeba zachovávat i po smazání, například u účtů, kategorií a použití, protože u záznamu je vhodné poukázat na to, s čím byl propojen, i když byla propojená entita uživatelem smazána, například záznam propojený s účtem, který byl již zrušen. Pro smazanou entitu je použito číslo 0, číslo 1 pro aktivní a číslo 2 pro entitu, která nemůže být z databáze odstraněna. Jednotlivé finanční operace ( zaznam“) ” Reprezentuje konkrétní záznam příjem/výdaj, jinak řečeno konkrétní záznam o provedené finanční operaci. • name – název záznamu • value – hodnota záznamu (kladná pro příjem, záporná pro výdaj) • date – datum provedení operace • active – informace o smazání záznamu • account_name – reference na protiúčet, pouze dodatečná informace u záznamů z importu • kategorie_id – reference na kategorii • ucet_id – reference na účet • opakovani_id – reference na opakování • info_id – reference na způsob vytvoření • pouziti_id – reference na další použití Kategorie pro rozdělení záznamů ( kategorie“) ” Reprezentuje kategorii, ke které může být záznam přiřazen. • name – název kategorie • active – informace o smazání kategorie • typ_kategorie_id – reference na typ kategorie Typ kategorie pro rozdělení záznamů ( typ_kategorie“) ” Rozděluje samotné kategorie na další možné typy podle použití. • name – název typu kategorie (příjmová, výdajová, speciální) Propojení záznamů na další využití ( pouziti“) ” Propojuje záznam s konkrétním existujícím dluhem nebo úsporou. • name – název použití (dluhu nebo úspory podle zvoleného typu) • date – počáteční datum • to_date – konečné datum • value – hodnota • description – popis • active – informace o smazání • typ_použití_id – reference na typ použití
2.5
Návrh řešení
37
Typ případu využití ( typ_pouziti“) ” Určuje konkrétní charakter použití. • name – název typu použití (já dlužím někomu, někdo dluží mně, úspora) Jednotlivé finanční účty ( ucty“) ” Reprezentuje jednotlivé účty, ke kterým se záznamy vážou. • name – název účtu • active – informace o smazání účtu Informace o způsobu uložení záznamu ( info“) ” Popisuje, jakým způsobem byl záznam vytvořen. • name – popis způsobu o uložení do aplikace, například ručně, automaticky, párováním apod. Stanovené rozpočty ( rozpocet“) ” Reprezentuje rozpočet určený ke sledování výdajů v čase. • name – název rozpočtu • description – popis použití • date – počáteční datum • to_date – konečné datum • value – stanovená maximální hodnota pro rozpočet • opakovani_id – reference na opakování • kategorie_id – reference na danou kategorii Opakované vytvoření ( opakovani“) ” Popisuje, v jakém časovém intervalu se provádí automatické vytvoření. • name – popis opakování, například bez opakování, denně, týdně, měsíčně, ročně Párovací vzory ( parovani“) ” Reprezentuje párovací vzory obecných párů. • name – název záznamu pro obecný pár nebo jeho podřetězec • protiucet_id – reference na protiúčet • days – časová tolerance ve dnech Záznamy pro import ( import“) ” Popisuje záznam z importu a podstatné informace o něm. Samotná tabulka je vytvořena jen dočasně během procesu importování nových záznamů. • name – název importovaného záznamu • date – datum provedení • protiucet_id – název protiúčtu • account_name – reference na protiúčet
2.5
Návrh řešení
38
• value – hodnota záznamu z importu • zaznam_id – informace o možném páru Názvy protiúčtů ( protiucet“) ” Reprezentuje název protiúčtu, které mohou záznamy z importu obsahovat. • name – název protiúčtu 2.5.5
Struktura uživatelského rozhraní aplikace
Při návrhu uživatelského prostředí je nutné brát ohled na to, pro jak velké obrazovky je aplikace určena a jakým způsobem jsou pohledy v operačním systému Android propojeny. Je nutné se zaměřit na uživatelský vzhled aplikace z hlediska barev, stylů, umístění prvků, ikon a dalšího. (Design, Android Developers, 2012). Aplikace Oikoz musí být schopna fungovat na zařízeních s velikostí obrazovky normal, tedy obrazovky od 3 do 5 palců, proto je nutné uživatelský vzhled navrhnout takovým způsobem, aby byly všechny důležité funkce snadno dostupné a přehledné. Je zároveň důležité využít dostupných standardních prvků, například záložek, výčtů, přepínačů a dalších, které operační systém Android poskytuje a zachovat určitou koncepci při návrhu vzhledu. Tím se zajistí, že uživatel, zvyklý na jiné aplikace Android, bude schopen aplikaci Oikoz ovládat intuitivně a orientace v ní mu nebude činit potíže. Podrobný návrh několika uživatelských oken je zobrazen na obr. 18. V podobném stylu budou vytvořeny i další obrazovky.
Obr. 18: Návrhy uživatelských obrazovek: záložka menu ikon, záložka záznamy a záložka rozpočty
2.5
Návrh řešení
39
Propojení jednotlivých uživatelských obrazovek a navigace mezi nimi:
Obr. 19: Diagram zobrazující navigaci v uživatelském rozhraní.
Bloky diagramu s modrým zbarvením jsou obrazovky, které vyplňují celý obraz, zelené bloky rovněž vyplňují celý obraz a mají mezi sebou záložkovou navigaci a bloky s šedou barvou jsou dialogová okna, která nevyplňují celou obrazovku, ale pouze částečně překrývají předchozí. Speciální fialový blok je aplikační menu, které má zobrazení podobné dialogovému oknu. Záznamy a rozpočty s opakováním, které se mají do aplikace v budoucnu zaznamenat jsou viditelné pouze z bloků Opakované záznamy a Opakované rozpočty, nikde jinde se v aplikaci nezobrazují a nejsou zahrnuty do žádných přehledů.
2.5
Návrh řešení
40
Celým obrazem se rozumí plocha pro vykreslení aplikace, ne celá obrazovka mobilního zařízení, protože je v ni vyhrazeno místo pro informační panel s časem, indikaci signálu, stav baterie a jiné, a u novějších mobilních zařízení bez hardwarových tlačítek i část pro jejich vykreslení (viz obr. 18). Pro průchod zpět se v aplikaci bude využívat softwarové/hardwarové tlačítko zpět, které je vidět na spodní liště návrhů a v případě, že bude aplikace spuštěna na operačním systému s API 14 a vyšší, bude uživatel moci využít i tlačítko home v horní liště, viz kapitola 3.2.5. Celé uživatelské rozhraní bude vytvořeno s použitím základních prvků a témat, které operační systém Android poskytuje a bude navrženo tak, aby umožňovalo uživateli snadnou navigaci celou aplikací.
3
IMPLEMENTACE
3
41
Implementace
3.1
Použité technologie
Při vytváření aplikací pro operační systém Android se využívá několika nástrojů, které usnadňují vývoj, testování a ladění aplikací. Některé z nich byly použity i při vývoji a testování mobilní aplikace Oikoz. 3.1.1
Java Development Kit (JDK)
Pokud vyvíjíme aplikace pro operační systém Android, je nutné mít základní sadu nástrojů pro programování v jazyce Java. Tuto sadu poskytuje společnost Oracle v produktu JDK, který obsahuje základní prostředky nezbytné pro vývoj aplikací pro platformu Java. (Allen, 2012) Mezi hlavními nástroji, které JDK obsahuje, jsou: JRE Java Runtime Enviroment je běhové prostředí pro spuštění aplikací, obsahující virtuální stroj a sadu základních knihoven Java Core API java zavaděč aplikace Java pro interpretaci class souborů generovaných překladačem javac překladač zdrojového kódu do bajt kódu jdb debugger pro testování a ladění programů javadoc nástroj pro generování dokumentace z komentářů a zdrojového kódu jar nástroj pro vytváření jar archivů pro distribuci programů a knihoven Z těchto nástrojů se u vývoje aplikací pro operační systém Android využívají hlavně knihovny Java Core API, protože Android má vlastní variantu virtuálního stroje, kterým je Dalvik. Aplikace nejsou distribuovány ve formátu .jar, ale .apk 17 3.1.2
Vývojové prostředí
Pro snadnější práci při vývoji, testování a ladění aplikací je vhodné zvolit vývojové prostředí, které tuto práci může usnadnit a zajistit integraci všech potřebných nástrojů. V současné době jsou pro vývoj aplikací pro operační systém Android dostupná vývojová prostředí, jako je například IntelliJ IDEA, NetBeans a již zmiňovaný a společností Google doporučovaný Eclipse. Pro vývoj aplikace Oikoz byla zvolena platforma Eclipse, která je určena pro programování v jazyce Java a umožňuje nainstalovat další nástroje pro vývoj aplikací. Poskytuje vývojáři dobrý přehled nad strukturou aplikace a nabízí všechny užitečné nástroje na jednom místě. Hlavní rozšiřitelnost programu Eclipse je zajištěna instalací pluginů, které toto vývojové prostředí rozšiřují o možnost vývoje pro jiné programovací platformy nebo poskytují další užitečné nástroje. 17
Android application package file je formát používaný pro distribuci aplikací pro operační systém Android.
3.1
Použité technologie
3.1.3
42
Android SDK
Další nezbytnou součástí pro vývoj aplikací pro operační systém Android je Android Software Development Kit (SDK), který obsahuje hlavní nástroje a je dostupný pro operační systémy Linux, Windows a MacOS (Steele, To, 2011). Seznam hlavních nástrojů a jejich funkce při vývoji aplikace: SDK Tools Obsahuje nezbytné nástroje pro vývoj aplikací, například pro testování, ladění (DDMS 18 ), správu AVD19 , dále obsahuje Android emulátor, nástroj pro správu grafických layoutů a další. SDK Platformtools Obsahuje nástroje pro vývoj na konkrétní platformě. Documentation Offline dokumentace pro verze Android API. SDK Platform SDK pro konkrétní verzi Android. Obsahuje knihovny, systémový obraz, ukázky kódů, skiny emulátorů a mnoho dalšího. Sources for SDK Kopie zdrojového kódu pro konkrétní platformy. Google APIs Další API od společnosti Google rozšiřující o další funkce, například Google Maps pro podporu, zobrazení a práci s mapami v aplikaci. Android Support Sada statických knihoven pro podporu některých funkcí z nových platforem pro platformy starší. 3.1.4
Android Development Tools (ADT)
Po instalaci Android SDK a vývojového prostředí Eclipse je třeba dále nainstalovat Android Development Tools. Instalace probíhá nainstalováním pluginů do vývojového prostředí Eclipse a vývojáři poskytuje velmi dobré rozhraní pro vývoj aplikací. ADT zajišťuje snadné vytvoření nového Android projektu, návrh uživatelského rozhraní, ladění aplikace za použití nástrojů y SDK Tools a vytváření .apk balíčků aplikace pro její distribuci a mnoho dalšího. (Mednieks a kol., 2011) 3.1.5
SQLite
SQLite je otevřený databázový systém pro správu relačních databází a je jednou ze základních knihoven, které operační systém Android obsahuje. Pro SQLite je v operačním systému Android vytvořena řada tříd pro práci a je navržena pro co nejmenší paměťovou náročnost a nejvyšší rychlost. SQLite je z velké části založena na standardech SQL-92 pro SQL. (Allen, Owens, 2010) SQLite má omezený výběr datových typů, které lze v databázi použít. Je to integer pro celá čísla, real pro čísla reálná, text pro uchování textových řetězců, 18 19
Dalvik Debug Monitor Server sada nástrojů pro ladění aplikací. Android Virtual Device nástroj pro správu a práci s emulátory pro operační systém Android.
3.1
Použité technologie
43
blob pro uchování dat a null pro prázdnou hodnotu. S těmito základními datovými typy si musí vývojář vystačit a absenci datových typů, jako například date, musí kompenzovat vhodných uložením do jednoho z výše uvedených datových typů, jak popisuje Hipp (2012). Pro uložení informace o čase lze využít několika možností, například Unix Time20 jako celé číslo nebo textový řetězec v určitém formátu. V aplikaci Oikoz je zvolena druhá možnost a všechny informace o datech jsou uloženy do datového typu text podle standardu ISO860121 . Omezení datových typů pro uchování informací v databázi se odráží i na samotném fyzickém modelu, který je vidět na obr. 20.
Obr. 20: Fyzický model databáze aplikace Oikoz 20
Unix Time je hodnota odpovídající počtu sekund od 1.1.1970 00:00:00 UTC. ISO8601 je mezinárodní standard pro zápis data a času vydaný Mezinárodní organizací pro normalizaci (ISO). 21
3.2
Popis řešení
3.1.6
44
AChartEngine
AChartEngine je knihovna pro vykreslování grafů v aplikacích pro mobilní operační systém Android. AChartEngine umožňuje vykreslení několika typů grafů, například sloupcových, výsečových, bodových, spojnicových a dalších. (Dromereschi, 2012) Pro vykreslování grafů v aplikacích pro operační systém Android existují i jiné knihovny, ale ty neposkytují grafy a funkce, které byly vhodné pro aplikaci Oikoz, postrádají dokumentaci nebo mají minimální podporu. Proto byl vybrán AChartEngine, aktivní projekt, který má podporu jak ze strany komunity, tak vývojářské společnosti produktu AChartEngine a je k němu poskytnuta dobrá dokumentace. Knihovna AChartEngine je využita v aplikaci Oikoz v části pro zobrazení finančního přehledu, kde je využit výsečový graf pro zobrazení výdajů za jednotlivé kategorie a sloupcové grafy pro zobrazení příjmů, výdajů a zobrazení aktuálního stavu.
3.2 3.2.1
Popis řešení Architektura aplikace
V aplikace Oikoz je datová struktura všech záznamů a dalších informací uchována v jedné databázi, ke které se přistupuje prostřednictvím třídy pro práci s databází SQLiteDatabase22 . Při práci se záznamy z databáze se dále využívá cursor 23 . Tento způsob propojení databáze (modelu), aktivit (controlleru) a XML návrhů (view) popisuje Mednieks a kol. (2011). Diagram propojení jednotlivých částí je zobrazen na obrázku číslo 21.
Obr. 21: Diagram propojení view, modelu databáze a controlleru (Mednieks a kol., 2011) 22
SQLiteDatabase je standardní třída operačního systému Android s metodami pro volání SQL příkazů a práci s databází. 23 Cursor je rozhraní poskytující přístup k vráceným záznamům z databáze na základě dotazu.
3.2
Popis řešení
3.2.2
45
Struktura aplikace Oikoz
Projekty operačního systému Android mají specifické uspořádání do stromové struktury adresářů. Tato struktura je vytvořena pro každý nový projekt a umožňuje rozšíření o další funkce, například adresáře pro překlad do jiných jazyků, adresáře grafických podkladů pro obrazovky s různou hustotou pixelů a další. (Murphy, 2011) Popis struktury projektu aplikace Oikoz: src složka uchovávající zdrojový kód aplikace v jazyce Java, obsahuje jednotlivé třídy s příponou .java gen složka, do které překladové nástroje systému Android umístí zdrojový kód, který tyto nástroje vygenerují assets složka obsahující ostatní statické soubory, které mají být použity v aplikaci bin složka uchovávající aplikaci po zkompilování, zejména pak její podobu ve formátu .apk libs složka obsahující archivy třetích stran, které aplikace využívá, knihovny ve formátu .jar res složka uchovávající další zdroje aplikace drawable složka uchovávající obrázky layout složka obsahující views uživatelského prostředí napsaných v jazyce XML menu složka obsahující návrh menu, ve formátu XML values složka obsahující další zdroje aplikace, například řetězce, návrhy stylů, definice barev, pole a další, vše ve formátu XML xml složka obsahující další dodatečné soubory ve formátu XML, které nelze zařadit do jiných složek raw složka obsahující další dodatečné soubory, které nelze zařadit do jiných složek a jsou jiného formátu než XML AndroidManifest.xml XML soubor popisující vyvíjenou aplikaci a její komponenty (aktivity, služby, přístupová práva atd.), které aplikace obsahuje Další rozdělení zdrojových souborů Složka src dále obsahuje několik balíčků, které rozdělují zdrojové soubory na další typy podle jejich použití. com.jankejda.adapters balíček obsahující třídy pro vyplnění výčtových nabídek com.jankejda.database balíček obsahující třídu pro práci s databází com.jankejda.oikoz balíček obsahující třídy všech aktivit com.jankejda.templates balíček obsahující třídy šablon pro syntaktickou analýzu souborů
3.2
Popis řešení
3.2.3
46
Tvorba aktivity import
Každá aktivita má svůj životní cyklus a stav, ve kterém se nachází a který se může během používání aplikace měnit. Životní cyklus aktivity je zobrazen na obr. 22.
Obr. 22: Životní cyklus aktivity (Steele, To, 2011)
Třída aktivita obsahuje několik metod, které se volají v průběhu změny stavu, v nichž se nachází a tvoří základní strukturu každé aktivity. Jednou ze zajímavých aktivit je aktivita pro import záznamů. Návrh aktivity pro import se dá shrnout do několika kroků, které jsou pro všechny nově vytvořené aktivity podobné. Prvním krokem je vytvoření import_main.xml souboru ve složce res/layout. Soubor definuje uživatelské rozhraní pro zvolenou aktivitu a obsahuje všechny potřebné prvky view, jejich rozmístění a klíčové atributy. Ukázka definice prvku tlačítka pro uložení s jeho atributy ze souboru import_main.xml:
3.2
Popis řešení
47
(...) <Button android:id="@+id/iSave" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_marginTop="26dp" android:text="@string/import_button_move" android:layout_below="@+id/iBank" android:layout_centerHorizontal ="true" android:background="@drawable/my_button" (...)
Atribut id je k jednoznačné identifikaci prvku v projektu, atributy layout definují velikost a umístění prvku, atribut text odkazuje na řetězec uložený v XML souboru umístěný ve složce res/value a obsahuje řetězec Přejít k výběru“ a atri” but background mění vzhled pozadí prvku, v tomto případě je využit vlastní návrh na vzhled tlačítka. Samotné prvky views se dají rozmisťovat dle několika modelů, hlavními modely jsou LinearLayout a RelativeLayout. LinearLayout je založený na uspořádávání prvků do řádků nebo sloupců a RelativeLayout je založen na základě vzájemných vztahů jednotlivých prvků. (Murphy, 2011) V aplikaci Oikoz je ve většině případů využíván model RelativeLayout, protože poskytuje rychlejší návrh a umožňuje lepší flexibilitu v případě dalších změn. Druhým krokem je vytvoření nové třídy Import.java v adresáři projektu src a příslušném balíčku a stanovení rodičovské třídy Activity. V této chvíli jsou třídě dostupné všechny důležité metody rodičovské třídy a je možné s ní pracovat jako s aktivitou. Ve třídě je dále nutné definovat propojení layoutu a jeho jednotlivých view. Ukázka kódu z třídy Import.java popisující propojení layoutu a tlačítka pro uložení: 1
public class Import extends Activity implements OnClickListener{
2 3
private Button save;
4 5
(...)
6 7 8 9 10
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState ); setContentView(R.layout.import_main);
11 12
(...)
13 14 15
save = (Button) findViewById(R.id.iSave); save.setOnClickListener(this);
3.2
Popis řešení
48
16
(...)
17
}
18 19
public void onClick(View v) { switch (v.getId ()) { case R.id.iSave: if(FilePath != null){ createImportTabel (); setBufferReader (); startAnalyzing (); closeBufferReader (); }else{ Toast.makeText(getBaseContext (), R.string.import_toast_missing_file , Toast.LENGTH_LONG).show (); }
20 21 22 23 24 25 26 27 28 29 30 31
Intent i = new Intent("android.intent.action.IMPORTLIST"); startActivity(i); finish (); break;
32 33 34 35 36
(...)
37
}
38 39
(...)
40 41
}
Na řádku kódu 8 až 19 je zobrazen obsah metody onCreate(), která se spouští při vytváření aplikace, viz obr. 22. Metoda obsahuje na řádku kódu 10 propojení na layout uživatelského vzhledu a na řádku kódu 14 potom propojení prvku tlačítka na konkrétní objekt Button, se kterým lze dále z pohledu aplikační logiky pracovat. Na řádku kódu 15 je pro objekt tlačítka zavedeno chování v případě, že je prvek stisknut a na řádku kódu 21 je zobrazena metoda, která obsahuje konkrétní akce, které se mají v případě stisknutí tohoto tlačítka vykonat. V tomto případě pro tlačítko save na řádcích kódu 22 až 35 provedení několika metod, spuštění nové aktivity a zavření aktivity současné. Posledních krokem při tvorbě nové aktivity je její zavedení do AndroidManifest.xml, kde se uvede její název, popis pro horní lištu, orientace a další, především ale její popis pro možné volání pomocí záměrů. Ukázka kódu pro zavedení nové aktivity v AndroidManifest.xml: (...)
(...)
Atribut name popisuje třídu dodávající aktivitu, label udává popis, který se u aktivity zobrazuje na horní liště, screenOrientation udává orientaci obrazu
3.2
Popis řešení
49
a intent-filter obsahuje podmínky pro spuštění aktivity. Action je využíván pro volání této aktivity z aktivity jiné a category se používá pro zařazení aktivity do určité kategorie, například kategorie launcher, která říká, že se jedná o startovní aktivitu, u ostatních potom kategorie default. Funkce samotné aktivity import je taková, že uživateli poskytuje možnost importovat záznamy z externího souboru. Uživatel má v aktivitě možnost výběru souboru pro import a šablony pro provedení syntaktické analýzy nad tímto souborem. V případě, že uživatel stiskne tlačítko pro přechod k výběru jednotlivých záznamů, aktivita vyhledá pro záznamy ze souboru možné páry a podstatné informace zaznamená do tabulky v databázi. O další výběr, zobrazení párů a o samotný import záznamů se pak stará aktivita jiná, kterou pomocí záměru aktivita import spustí. Jakým způsobem uživatel postupuje v aktivitě import, je zobrazeno na obr. 23.
Obr. 23: Postup při výběru souboru pro import.
Nejdříve uživatel stiskne tlačítko složky, pro vyhledání souboru, ze kterého mají být záznamy importovány. Stisknutím tlačítka složky se spustí metoda getFilePath(), která má na starost spuštění aplikace pro práci se soubory, ve které si uživatel vybere soubor pro import. Aplikace pro správu souborů je spuštěna s požadavkem na předání dat a tím je zajištěno, že když uživatel zvolí soubor, aplikace pro správu souborů se ukončí a pošle zpět data, ze kterých se v metodě onActivityResult() z třídy Import získají informace o cestě k souboru.
3.2
Popis řešení
50
Ukázka metod getFilePath() a onActivityResult() ze třídy Import: (...) private void getFilePath () { try { Intent intent = new Intent(Intent. ACTION_GET_CONTENT ); intent.setType("file /*"); startActivityForResult(intent , PICKFILE_RESULT_CODE ); } catch (Exception e) { Toast.makeText(this , R.string.import_no_fileapp , Toast.LENGTH_SHORT).show (); } } (...) protected void onActivityResult(int requestCode , int resultCode , Intent data) { if(requestCode == PICKFILE_RESULT_CODE){ if(resultCode == RESULT_OK){ FilePath = data.getData ().getPath (); way.setText(FilePath); } } } (...)
Po získání informace o umístění souboru může uživatel zvolit příslušnou šablonu ze seznamu šablon, který je zobrazen formou výčtového menu. Informace o zvolené šabloně se ukládá do proměnné template, která se využívá pro volbu šablony v případě, že uživatel stiskne tlačítko Přejít k výběru. Když tak uživatel učiní, zavolá se několik metod, createImportTable() pro vytvoření tabulky import, která slouží k uchování informací o záznamech a jejich párech, setBufferReader() pro získání obsahu z externího souboru, startAnalyzing() pro spuštění syntaktické analýzy souboru. Metoda startAnalyzing() zkontroluje, jaká šablona byla zvolena a zavolá metodu třídy konkrétní šablony pro vyplnění tabulky. V případě šablony pro Českou spořitelnu je to například TemplateCeskaSporitelna(this).fillTable(). Jednotlivé šablony jsou vytvořeny jako třídy, které jsou potomky abstraktní třídy SourceTemplate a jejich hlavním obsahem je zpracování obsahu externího souboru pro získání jednotlivých informací o záznamech. Instance třídy Import je předána jako parametr do konstruktoru třídy SourceTemplate pro přístup k jejím metodám a proměnným. Pro šablony je důležitý BufferReader, který uchovává obsah externího souboru a metoda fillImport(), která vyhledává pro konkrétní záznam možný pár a ukládá jej s dalšími důležitými informacemi do tabulky import. Tato konstrukce usnadňuje vytváření šablon.
3.2
51
Popis řešení
Metoda fillTable() šablony pro syntaktickou analýzu z CSV souboru České spořitelny: 1 2 3 4 5 6 7
public void fillTable (){ try { while (( line = importClass.bufferReader.readLine ()) != null) { lineNum ++; line = line.replace("\"", ""); if(lineNum > startingLine){ String [] words = line.split(",");
8
words[posDate] = ISO8601.format(BankDateFormat.parse(words [1])); words[posValue] = String.valueOf(Double.parseDouble(words [3])); words[posAccount] = words[posAccount ]. replaceAll(" +", " ");
9 10 11 12
importClass.fillImport(words[posName], words[posDate], words[posValue], words[posAccount], words[posAccountName ]);
13
} } } catch (NumberFormatException e) { e.printStackTrace (); } catch (IOException e) { e.printStackTrace (); } catch (ParseException e) { e.printStackTrace (); }
14 15 16 17 18 19 20 21 22 23
}
Hlavní část metody fillTable() je mezi řádky kódu 3 a 14, kde probíhá načítání jednotlivých řádků z BufferReaderu do řetězce line reprezentujícího jednotlivé řádky z CSV souboru a tento řetězec je dále dle potřeby upraven (viz řádek kódu 5). Mezi řádky kódu 6 až 14 je podmínka, která kontroluje, jestli má být daný řádek zpracován a pokud je podmínka splněna, řetězec je rozdělen do pole words podle oddělovacího znaku daného CSV souboru (viz řádek kódu 7). Jednotlivé údaje jsou upraveny do patřičného formátu pro metodou fillImport() viz řádek kódu 9 až 11 a na řádku kódu 13 se volá samotná metoda fillImport(), která údaje o záznamu zpracuje, vyhledá pro něj pár a údaje vloží do tabulky import. Vyhledávání párů probíhá dvěma způsoby. Prvním je vyhledání blízkého páru, který pro záznamy ze souboru pro import vyhledává takové záznamy v aplikaci, které se časově shodují a mají toleranci částky záznamu deset procent. Druhým způsobem je vyhledání obecného páru podle vzoru z tabulky parovani, kde je sledován název u záznamů v aplikaci, tolerance ve dnech a protiúčet záznamu z importu. U sledování názvu stačí, aby záznam v aplikaci obsahoval podřetězec z tabulky parovani, není nutná úplná shoda. Tím je zajištěno, že bude nalezen pár i v případě, že k záznamu uživatel nějakou informaci dopíše. Pokud je nalezen blízký pár, tak obecný pár se už nevyhledává. Vzory pro obecné páry lze definovat u záznamů v aplikaci a jejich přehled a editaci lze provádět z nástrojů aplikace. Poté, co jsou všechny záznamy z externího souboru zpracovány a uloženy do tabulky import, se spustí aktivita ImportList s výčtem záznamů a jejich možnými páry. Zde uživatel označuje, jaké záznamy chce do aplikace vložit, popřípadě měnit nebo rušit páry. Samotné vložení záznamů do aplikace se pak odvíjí od toho, jestli mají nebo nemají přiřazený pár. V případě, že pár nemají, se vytvoří záznam nový a pokud pár mají, změní se pouze hodnota u již existujícího záznamu v aplikaci.
3.2
Popis řešení
3.2.4
52
Uživatelský vzhled na různých verzích OS Android
Při návrhu aplikace, která má fungovat na různých verzích operačního systému Android, je vhodné si uvědomit, že některé prvky z vyšší verze nebude možné správně zobrazit a použít u verze nižší. To je částečně zajištěno samotným zadáním nejnižší a nejvyšší verze v AndroidManifestu aplikace. Jsou však prvky, které využít lze, ale budou zobrazeny pouze tehdy, jestliže bude aplikace spuštěna v dané verzi, například prvek ActionBar, který je v aplikaci Oikoz využit. Rozdíl mezi verzemi se může týkat i samotného vzhledu některých prvků. Ukázka vzhledu aplikace Oikoz na různých verzích operačního systému Android je na obr. 24.
Obr. 24: Dvě stejné aktivity aplikace Oikoz na operačním systému Android verze 2.2(vlevo) a 4.1(vpravo).
Viditelný rozdíl je u vzhledu záložek, ukazatele průběhu a horní lišty samotné aplikace. Zatímco v nižší verzi je lišta využita jen pro zobrazení názvu spuštěné aplikace, vyšší verze s ActionBar umožňuje umístění dalších ikon, vyhledávání a mnoho dalšího. Do ActionBar je vloženo tlačítko pro přidání položek a tlačítko pro návrat na hlavní obrazovku, které je vedle ikonky aplikace. Funkčnost samotné aplikace je samozřejmě na různých verzích zachována a rozdíly jsou pouze ve vzhledu některých prvků. Hlavní rozdíly ve vzhledu prvků a samotného operačního systému Android se odehrály mezi verzemi 2 a 4. Pro aplikaci Oikoz byl vytvořen vlastní grafický podklad pozadí prvků button a spinner. Tím je zajištěn lepší vzhled některých uživatelských obrazovek a podobnost uživatelského prostředí mezi starší a novější verzí operačního systému Android.
3.2
Popis řešení
53
Ukázka kódu vlastního pozadí u tlačítek ze souboru my_button.xml ze složky res/drawable: <selector xmlns:android="http: // schemas.android.com/apk/res/android">
Tlačítka s tímto vzhledem mají průhledné pozadí a barevně se zbarví pouze v případě stisknutí. Vždy jsou ze stran doplněny o šedé čáry a jejich vzhled je vidět na obr. 24 ve spodní části uživatelských obrazovek. 3.2.5
Lokalizace aplikace
V současné době je operační systém Android lokalizován do 57 jazyků. V případě aplikace Oikoz je provedena lokalizace do českého a anglického jazyka. Pro lokalizaci aplikace do jiného jazyka lze využít jednoduchého postupu, který vyžaduje, aby veškeré použité texty v aplikaci byly umístěny v souboru strings.xml ve složce res/values. Pro další jazykové varianty je nutné vytvořit novou složku values s příponou udávající konkrétní lokalizaci podle ISO 639-124 , do níž je zkopírován soubor strings.xml a přeložen do konkrétního jazyka. Soubor values bez přípony je základní složka se zdroji a z této složky čerpá aplikace v případě, že nenalezne složku pro konkrétní variantu lokalizace, která odpovídá lokalizaci mobilního zařízení. (Localization, Android Developers, 2012) Výchozí lokalizace aplikace Oikoz je v anglickém jazyce a pro zobrazení v českém jazyce je vytvořena nová složka ve tvaru values-cs, která obsahuje soubor strings.xml s českými podklady. Tím je pro aplikaci Oikoz zajištěna lokalizace do českého i anglického jazyka, ale s primární lokalizací do jazyka anglického. Angličtina jako výchozí jazyk byla zvolena z toho důvodu, že se jedná o světově rozšířený jazyk a v případě, že si aplikaci Oikoz stáhne uživatel například z Francie nebo Německa, se aplikace zobrazí v jazyce anglickém. Český jazyk je zobrazen pouze v případě nastavení samotného mobilního zařízení do českého jazyka. 3.2.6
Soubory pro import
Asi nejvhodnějším zdrojem informací o reálně provedených platbách je výpis z bankovního účtu. Většina českých bank poskytuje možnost exportování výpisu do několika formátů, z nichž nejčastějším je CSV 25 soubor. Pro aplikaci Oikoz bylo vytvořeno několik šablon pro syntaktickou analýzu CSV souborů několika bankovních institucí. Byla vybrána Česká spořitelna, mBank, Komerční banka, GE Money Bank a Fio banka. Do aplikace se dají samozřejmě přidávat další šablony z jiných zdrojů. 24 25
ISO 639-1 je mezinárodní standard definující kódy jazyků. Comma–separated values jednoduchý formát pro výměnu tabulkových dat.
3.2
54
Popis řešení
U každého záznamu je podstatných několik údajů, které jsou nezbytné pro jeho další zpracování a zanesení. Je to název, datum, hodnota a volitelně protiúčet a popis. V každém CSV souboru u výše zmíněných bank, pro které byla vytvořena šablona, se umístění údajů a formát těchto údajů liší a proto nelze vytvořit jednu společnou šablonu. Ukázka struktury CSV České spořitelny je na obr. 25.
Obr. 25: Struktura CSV souboru České spořitelny s vyznačením důležitých údajů
3.2.7
Ověření funkčnosti
Pro testování aplikací obsahuje Android SDK nástroj Dalvik Debug Monitor Server, který obsahuje mnoho užitečných nástrojů pro ladění a testování aplikace a byl použit i při vývoji aplikace Oikoz. Mezi hlavní funkce DDMS patří: • přehled zapojených zařízení a emulátorů s podrobnými informacemi o nich • rozšířená kontrola emulátorů, například simulace telefonních aktivit • zobrazení a filtry logů operačního systému Android • sledování zátěže na zařízení • sledování alokace objektů v paměti • sledování síťového provozu Aplikace Oikoz byla testována na několika různých fyzických zařízeních a emulátorech. Pro testování byla vybrána zařízení a emulátory takovým způsobem, aby byly splněny parametry stanovené ve specifikaci požadavků, viz kapitola 2.4.4. Přehled testovaných zařízení a jejich specifikace je v tab. 4. Tab. 4: Zařízení, na kterých byla testována aplikace Oikoz. Popis Samsung Nexus S Samsung Galaxy S Samsung Galaxy Mini II Emulator 1 Emulator 2 Emulator 3 Emulator 4
Verze 4.1.2 2.3.6 2.3.6 4.2 4.2 2.2 2.2
API 16 10 10 17 17 8 8
Obrazovka 4 4 3,2 4,7 3,7 3,7 3,2
Hustota bodů hdpi hdpi mdpi xhdmi hdmi hdmi mdmi
3.2
Popis řešení
3.2.8
55
Správa opakovaných událostí
V aplikaci Oikoz je možné vytvářet záznamy a rozpočty s určitým časovým opakováním. To může být například měsíční platba za telefon, nebo týdenní rozpočet na koníčky. Aplikace Oikoz řeší realizaci těchto záznamů a rozpočtů při každém spuštění takovým způsobem, aby kontrola proběhla maximálně jednou denně. To zajišťuje metoda checkRepetitive() ve třídě MainScreen, která ověřuje, jestli byla ten den provedena kontrola opakujících se položek. V případě, že tak učiněno nebylo, zavolá třídu Repeating, která se na pozadí aplikace postará o vytvoření záznamů a rozpočtů, které měly být vytvořeny a zároveň vytvoří tyto položky pro budoucí opakované použití. Položky, které se mají v budoucnu vytvořit, může uživatel spravovat z obrazovek záznamů a rozpočtů pod tlačítkem Opakované. Samotná třída Repeating je potomkem třídy AsyncTask, která je určena k provádění akcí na pozadí aplikace a nemá vliv na vykreslování uživatelského vzhledu nebo na jeho chování. 3.2.9
Práva aplikace
Každá aplikace má ve chvíli vytvoření jen omezená práva pro práci s dalšími prvky a službami na mobilním zařízení, to je například přístup k Internetu, práce s kamerou, přístup k SMS zprávám a další. V případě, že aplikace ke svému fungovaní tyto prvky nebo služby potřebuje, musí nastavit příslušná práva v AndroidManifest.xml. Aplikace Oikoz využívá například přístup k externímu úložišti telefonu a to z aktivity pro export záznamů a z aktivity pro zálohu a obnovu databáze. Následující ukázka kódu popisuje, co bylo do AndroidManifest.xml potřeba doplnit pro zajištění správné funkčnosti aktivit pro čtení a zápis u externího úložiště: <uses -permission android:name="android.permission. READ_EXTERNAL_STORAGE " /> <uses -permission android:name="android.permission. WRITE_EXTERNAL_STORAGE " />
Všechna práva, které má aplikace k dispozici, jsou zároveň zobrazena u aplikace v obchodě Google Play a při instalaci aplikace z .apk souboru. Uživateli umožňují udělat si představu o tom, do čeho všeho aplikace může zasahovat a vyvarovat se tak nebezpečných aplikací, které by jeho telefon mohly poškodit nebo získávat citlivé informace.
4
DISKUZE
4
56
Diskuze
Aplikace Oikoz vznikla za účelem poskytování jednoduchého, ale zároveň přesného a uceleného přehledu nad osobními financemi uživatele. Na trhu pro mobilní operační systém Android již existují aplikace, které se rovněž zabývají sledováním osobních financí, nicméně žádná z analyzovaných aplikací neobsahovala všechny důležité funkce a všechny tyto aplikace se potýkaly s nepřesnostmi, které mohou během jejich používání vznikat. Aplikace Oikoz nabízí uživateli několik základních funkcí, které od aplikace pro sledování osobních financí očekává. Je to například zaznamenávání příjmů a výdajů, dluhů, úspor a rozpočtů. Aplikace dále nabízí uživateli přehled nad financemi, například ve formě textové bilance nebo formou grafů a poskytuje sadu základních funkcí pro práci se záznamy, například export, import, záloha a obnova databáze. Zmíněný import dále obsahuje jedinečnou funkci pro párování uživatelem zaznamenaných transakcí se záznamy z externích zdrojů a tím zajišťuje zpřesnění operací v aplikaci. U aplikace Oikoz je také důležité se zamyslet nad tím, jakým způsobem bude distribuována. Nejlepším způsobem pro zveřejnění aplikace fungující na operačním systému Android, je oficiální internetový obchod Google Play. Pro zveřejnění na internetovém obchodě Google Play je nezbytné mít uživatelský účet u společnosti Google a dále být registrovaným vývojářem aplikací pro operační systém Android. Cena za registraci jako vývojáře je jednorázová a to 25 dolarů. Vývojář má k dispozici vývojovou konzoli, kde může aplikace vkládat a ty jsou pak zobrazeny na Google Play pod jeho jménem. Při vkládání aplikace je vhodné se zamyslet nad možnostmi, jak aplikaci zpeněžit a prosadit ji mezi uživateli. Těchto možností je více, jak popisuje Finne a Lui (2012). Hlavní možnosti jsou: Free aplikace je zdarma a může obsahovat reklamní banner, v současnosti nejrozšířenější řešení Premium placená aplikace s jednorázovou platbou Trial aplikace je na určitou dobu zdarma, po uplynutí doby je nutné ji zaplatit pro další používání Subscription opakované platby po určitém časovém intervalu Aplikace Oikoz je v současné době nasazena zdarma a bez reklam na internetovém obchodě Google Play26 . U aplikace je možný další rozvoj, na který mají vliv zejména nově rozšířené bezdotykové platby mobilním telefonem s využitím technologie NFC 27 . Tento způsob platby je realizován aplikací v mobilním zařízení, ať už se jedná o aplikace od bank nebo o aplikace jiné, například Google Wallet 28 . S těmito aplikacemi by se dala aplikace Oikoz dále propojit a umožnit tak lepší a přesnější zaznamenávání operací. V takovém případě by se dalo dále uvažovat o nasazení aplikace Oikoz v placené verzi. 26
Lze ji najít na Google Play pod názvem Oikoz“ ” Near field communication je technologie pro bezdrátovou komunikaci na krátkou vzdálenost. 28 Google Wallet je platební systém od společnosti Google. 27
5
5
ZÁVĚR
57
Závěr
Cílem této práce bylo navrhnout a vytvořit aplikaci pro operační systém Android, která by umožnila uživateli sledovat jeho osobní finance. Nejdříve byla provedena analýza a srovnání existujících aplikací, které se rovněž zabývají sledováním osobních financí a na základě této analýzy a zpětné vazby od uživatelů byly stanoveny hlavní funkce, které by tato aplikace měla mít a nedostatky, které současné aplikace mají. Mezi hlavní nedostatky patří nepřesnost, chybějící import záznamů z různých zdrojů, nepřehledné uživatelské rozhraní a absence některých funkcí. Hlavní funkce aplikace pro sledování osobních financí byly rozvedeny ve specifikaci požadavků na aplikaci novou, která byla pojmenována Oikoz a která kromě propojení hlavních funkcí také řeší nedostatky, které jiné aplikace mají. Dále byl vytvořen návrh řešení vycházející ze specifikace požadavků, při kterém byl využit modelovací jazyk UML, a na základě tohoto návrhu byla vytvořena aplikace Oikoz. Aplikace je schopna zpracovávat vložené příjmy, výdaje, rutinní operace, dluhy, půjčky, úspory a rozpočty a dále je schopna porovnávat a párovat údaje se záznamy z externích zdrojů, například z výpisu z účtu a tím zajistit vyšší přesnost zaznamenaných operací. Aplikace dále obsahuje nástroje pro práci se záznamy, například import, který zároveň zajišťuje párování externích záznamů se záznamy v aplikaci, export záznamů pro zobrazení a práci s těmito záznamy v jiných aplikacích a zálohu a obnovu dat aplikační databáze. Aplikace poskytuje uživateli přehled nad zaznamenanými operacemi z pohledu účtů a kategorií a nabízí souhrnné přehledy za časová období. K těmto přehledům jsou v aplikaci využity výsečové a sloupcové grafy nebo přehled v textovém výpisu. Aplikace Oikoz obsahuje některé doplňkové nástroje, jako je například kalkulačka spropitného, výpočet úroku u vkladu nebo vytvoření připomínky platby. Aplikace byla vytvořena takovým způsobem, aby fungovala na většině chytrých telefonů s operačním systémem Android a byla lokalizována do českého a anglického jazyka. Aplikace byla dále zdarma zpřístupněna na internetovém obchodě Google Play.
6
6
LITERATURA
58
Literatura
Allen, G. Beginning Android 4. Apress, 2012. 604 s. ISBN 978-1-4302-3984-0. Allen, G., Owens, M. The Definitive Guide to SQLite. Apress, 2010. 368 s. ISBN 978-1-4302-3225-4. Bittner, K., Spence, I. Use case modeling. Boston: Addison-Wesley, 2003. 347 s. ISBN 978-02-017-0913-1. Dashboards, Android Developers [online]. Google Inc., 2012 [citováno 2012-11-26]. Dostupné z:
. Design, Android Developers [online]. Google Inc., 2012 [citováno 2012-11-05]. Dostupné z: . Dromereschi, D. achartengine, Charting library for Android [online]. The 4ViewSoft Company, 2012 [citováno 2012-11-16]. Dostupné z: . Felker, D. Android Aplication Development For Dummies. 1. vyd. Indianapolis, Indiana: Wiley Publishing, Inc., 2011. 384 s. ISBN 978-0-470-77018-4. Finne, C., Lui, K. Monetizing Android Apps [online]. Google Inc., 2012 [citováno 2012-11-28]. Dostupné z: . Fowler, M. Destilované UML. 1.vyd. Praha: Grada, 2009. 173 s. ISBN 978-80247-2062-3. Gargenta, M. Learning Android. O’Reilly Media, Inc., 2011. 270 s. ISBN 978-1449-39050-1. Hipp, D. R. Datatypes In SQLite Version 3 [online]. Hipp, Wyrick & Company, Inc., 2012 [citováno 2012-11-15]. Dostupné z: . IDC. Android Marks Fourth Anniversary Since Launch with 75.0% Market Share in Third Quarter [online]. International Data Corporation, 2012 [citováno 2012-11-19]. Dostupné z: . Kanisová, H., Müller, M. UML srozumitelně. 2. vyd. Brno: Computer Press, 2006. 176 s. ISBN 80-251-1083-4. Komatineni, S., MacLean, D. Pro Android 4. Apress, 2012. 1020 s. ISBN 9781-4302-3930-7. Localization, Android Developers [online]. Google Inc., 2012 [citováno 201211-21]. Dostupné z: . Mednieks, Z. a kol. Programming Android. O’Reilly Media, Inc., 2011. 504 s. ISBN 978-1-449-38969-7. Murphy, M. L. Android 2: Průvodce programováním mobilních aplikací. 1. vyd. Brno: Computer Press, 2011. 376 s. ISBN 978-80-251-3194-7. Supporting Multiple Screens, Android Developers [online]. Google Inc., 2012 [citováno 2012-11-26]. Dostupné z: .
6
LITERATURA
59
Steele, J., To, N. The Android Developer’s Cookbook: Building Applications with the Android SDK. Addison-Wesley, 2011. 400 s. ISBN 978-0-321-74123-3. Yadav M. History of Android [online]. Tech2Crack, 2011 [citováno 2012-10-09]. Dostupné z: . Zakhour, S. a kol. Java 6: Výukový kurz. 1. vyd. Brno: Computer Press, 2007. 534 s. ISBN 978-80-251-1575-6.
Přílohy
A
A
ELEKTRONICKÁ PŘÍLOHA
61
Elektronická příloha
Přílohou této práce je CD s elektronickým obsahem. Oikoz.zip kompletní projekt aplikace Oikoz, obsahuje grafické podklady, zdrojové kódy, spustitelné .apk, návrhy layoutů XML a další dp.pdf elektronická verze diplomové práce
B
B
NÁHLEDY APLIKACE
Náhledy aplikace
Následující obrázky zobrazují některé uživatelské obrazovky z aplikace Oikoz.
Obr. 26: Menu, záznamy, rozpočty
Obr. 27: Kategorie, přehled pro výběr konkrétního přehledu, textový přehled bilance
62
B
NÁHLEDY APLIKACE
Obr. 28: Přehled výdajů v kategoriích, přehledu příjmů a výdajů, přehledu stavu financí
Obr. 29: Dluhy, dialog pro přidání nové položky, vytváření příjmového záznamu
63
B
NÁHLEDY APLIKACE
Obr. 30: Import souboru, přehledu záznamů z importovaného souboru, nástroje
64