Mendelova univerzita v Brně Provozně ekonomická fakulta
Mobilní aplikace „Botanický klíč“ Bakalářská práce
Vedoucí práce: Ing. Dita Dlabolová
Ondřej Pala
Adamov 2013
Rád bych poděkoval své přítelkyni, rodině a v neposlední řadě i mé vedoucí práce Ing. Ditě Dlabolové za užitečné rady při tvorbě práce.
Prohlašuji, že jsem tuto bakalářskou práci řešil samostatně a s použitím uvedené literatury. V Adamově dne 19. dubna 2013
_________________
Abstract PALA, Ondřej. Mobile application „Botanical key". Brno, 2013. Bachelor thesis. Mendel university in Brno. This thesis is about creating mobile application botanical key for operating system Android. A principle of Botanical key is described in the thesis, history and features of operating system Android, method of creating applications for the above mentioned operating system and design and implementation of application Botanical key of course. Keywords Botanical key, Android, mobile application.
Abstrakt PALA, Ondřej. Mobilní aplikace „Botanický klíč". Brno, 2013. Bakalářská práce. Mendelova univerzita v Brně. Bakalářská práce se zabývá vytvořením aplikace Botanický klíč pro operační systém Android. V práci je popsán princip botanického klíče, historie a vlastnosti operačního systému Android, způsob vytváření aplikací pro výše uvedený operační systém a samozřejmě také návrh a implementace aplikace Botanický klíč. Klíčová slova Botanický klíč, Android, mobilní aplikace.
6
Úvod a cíl práce
Obsah 1
2
3
Úvod a cíl práce
11
1.1
Úvod ......................................................................................................... 11
1.2
Cíl práce ................................................................................................... 11
Botanický klíč
12
2.1
Princip botanického klíče ........................................................................ 12
2.2
Mobilní aplikace ...................................................................................... 12
2.3
Webové aplikace ...................................................................................... 13
Operační systém Android
14
3.1
Historie operačního systému Android .................................................... 14
3.2
Verze operačního systému Android ........................................................ 14
3.2.1
Android 1.0 ...................................................................................... 14
3.2.2
Android 1.1 ....................................................................................... 15
3.2.3
Android 1.5 Cupcake ........................................................................ 15
3.2.4
Android 1.6 Donut ........................................................................... 16
3.2.5
Android 2.0/2.1 Eclair ..................................................................... 16
3.2.6
Android 2.2 Froyo ............................................................................ 17
3.2.7
Android 2.3/2.4 Gingerbread .......................................................... 17
3.2.8
Android 3.0/3.1/3.2 Honeycomb .................................................... 18
3.2.9
Android 4.0/4.0.1/4.0.2 Ice Cream Sendwich ................................ 18
3.2.10 Android 4.1 Jelly Bean ..................................................................... 19 3.3
Architektura operačního systému Android ............................................ 20
3.3.1
Linux Kernel ................................................................................... 20
3.3.2
Libraries ........................................................................................... 21
3.3.3
Android Runtime ............................................................................. 21
3.3.4
Application Framework ................................................................... 21
3.3.5
Applications ..................................................................................... 21
3.4
Vlastnosti operačního systému Android ................................................. 21
Úvod a cíl práce
4
Vývoj aplikací pro operační systém Android 4.1
5
23
Základní komponenty aplikací ............................................................... 23
4.1.1
Aktivita ............................................................................................ 23
4.1.2
Služba (Service)............................................................................... 23
4.1.3
Poskytovatelé obsahu (Content provider) ...................................... 23
4.1.4
Záměr (Intent) ................................................................................ 23
4.1.5
Přijímač (Broadcast receiver) ......................................................... 23
4.1.6
Oznámení (Notification) ................................................................. 23
4.2
Vývojové prostředí .................................................................................. 24
4.3
Android Virtual Device (ADT) ................................................................ 24
4.4
Struktura projektu Android aplikace ..................................................... 25
4.4.1
AndroidManifest.xml ...................................................................... 25
4.4.2
Složka res ........................................................................................ 25
4.4.3
Složka libs........................................................................................ 26
4.4.4
Složka assets .................................................................................... 26
4.4.5
Složka bin ........................................................................................ 26
4.4.6
Složka src......................................................................................... 26
4.4.7
Složka gen........................................................................................ 26
Implementace aplikace Botanický klíč
27
5.1
AndroidManifest.xml.............................................................................. 27
5.2
Uživatelské rozhraní aplikace ................................................................. 28
5.2.1 5.3
6
7
Prvky uživatelské rozhraní použité v aplikaci ................................ 28
Implementace aplikace ........................................................................... 30
5.3.1
Uložení informací o rostlinách ....................................................... 30
5.3.2
Hlavní menu aplikace ...................................................................... 31
5.3.3
Určení druhu rostliny ..................................................................... 32
5.3.4
Zobrazení všech rostlin ................................................................... 36
5.3.5
Zobrazení rostlin vyhledaných a uložených uživatelem ..................37
5.3.6
Zobrazení informací o aplikaci ....................................................... 38
5.3.7
Vnořená menu ................................................................................. 39
Distribuce aplikace
41
8
7
Úvod a cíl práce
6.1
Google Play .............................................................................................. 41
6.2
Alternativní obchody s Android aplikacemi ........................................... 41
6.3
Prezentace na vlastní webové stránce ..................................................... 41
Závěr
42
7.1
Možnost dalšího rozšíření aplikace .........................................................42
7.2
Technické zhodnocení aplikace ...............................................................42
7.3
Ekonomické zhodnocení aplikace ...........................................................43
8
Literatura
44
A
Diagram aktivit aplikace Botanický klíč
47
B
Přiložené CD
48
Úvod a cíl práce
9
Seznam obrázků Obr. 1 Mobilní aplikace WA Conifers & Wildflowers Keys pro operační systém Android, zdroj: https://play.google.com/store 12 Obr. 2 Mobilní aplikace Key: Plant Families pro operační systém Android, zdroj: https://play.google.com/store 13 Obr. 3 Webová aplikace pro určení druhu rostliny, zdroj: www.rostliny.prirodou.cz
13
Obr. 4 HTC Dream (T-Mobile G1)- první mobilní telefon s operačním systémem Android, zdroj: http://cs.wikipedia.org/wiki/T-Mobile_G1
15
Obr. 5 Logo operačního systému Android 1.5 Cupcake, zdroj: www.blogs.computerworld.com
16
Obr. 6 Logo operačního systému Android 1.6 Donut, zdroj: www.en.paseban.com
16
Obr. 7 Logo operačního systému Android 2.0/2.1 Eclair, zdroj: www.fitrian.net 17 Obr. 8 Logo operačního systému Android 2.2 Froyo, zdroj: www.androinica.com
17
Obr. 9 Logo operačního systém Android 2.3/2.4 Gingerbread, zdroj: www.news.samdroid.net
18
Obr. 10 Tablet s operačním systém Android Honeycomb, zdroj: www.justit.cz 18 Obr. 11 Logo operačního systému Android 3.0/3.1/3.2 Honeycomb, zdroj: www.home.zcu.cz 18 Obr. 12 Logo operačního systému Android 4.0/4.0.1/4.0.2 Ice Cream Sendwich, zdroj: www.agorandroid.com
19
Obr. 13 Logo operačního systému Android 4.1 Jelly Bean, zdroj: www.dotekomanie.blog.mobilmania.cz 20 Obr. 14 Vrstvy architektury operačního systému Android, zdroj: www.developer.android.com 20
10
Úvod a cíl práce
Obr. 15
Vývojové prostředí Eclipse
24
Obr. 16
Android Virtual Device Manager
25
Obr. 17
Hlavní menu aplikace Botanický klíč
32
Obr. 18
Určení charakteristických znaků rostliny
33
Obr. 19
Setřídění výsledků podle zadaného kritéria
34
Obr. 20
Výsledky vyhledávání rostlin
36
Obr. 21
Výsledky vyhledávání rostlin – kliknutí na rostlinu
36
Obr. 22
Seznam všech rostlin v aplikaci Botanický klíč
37
Obr. 23
Uložené uživatelovy rostliny – reakce na kliknutí
38
Obr. 24
Aktivita zobrazující informace o aplikaci
39
Obr. 25
Vnořené menu
40
Obr. 26
Propojení aktivit v aplikaci Botanický klíč
47
Úvod a cíl práce
11
1 Úvod a cíl práce 1.1
Úvod
V současné době už mobilní telefony neslouží pouze k telefonování a posílání SMS zpráv. S rozvojem informačních technologií došlo také k rozvoji mobilních telefonů, které v dnešní době disponují mnoha dalšími funkcemi, jako je například fotoaparát, GPS apod. a v neposlední řadě i operačními systémy.
1.2 Cíl práce Cílem této práce je vytvoření mobilní aplikace Botanický klíč pro operační systém Android. Aplikace bude především určena uživatelům zabývajícím se oblastí botaniky. Může být uplatněna jak studenty botanických a přírodovědných oborů, tak i lidmi, kteří se o oblast přírodních věd a botaniky zajímají. V první části bude objasněn princip fungování botanického klíče, další část se bude zabývat historickým vývojem operačního systému Android a jeho vlastnostmi. Způsob vytváření aplikací pro systém Android a další náležitosti spojené s vývojem aplikací pro tento operační systém, budou uvedeny ve třetí části práce. Čtvrtá část se pak bude zabývat samotným návrhem a implementací aplikace Botanický klíč. V páté části bude popsán princip distribuce aplikací pro operační systém Android. V poslední části bude uvedeno zhodnocení celé práce a to zejména z technického a ekonomického hlediska.
12
Botanický klíč
2 Botanický klíč 2.1 Princip botanického klíče Použitím botanického klíče můžeme ve většině případů zcela přesně určit, o jakou rostlinu se jedná. Postupným určením nejdůležitějších vlastností a znaků, jako je například určení zda se jedná o bylinu, polokeř, keř či strom, je zmenšována množina rostlin, o které by se mohlo jednat. (Faustus, L., Skoch, M., Polívka, F., 1984)
2.2 Mobilní aplikace Současný rozmach chytrých mobilních telefonů s operačními systémy, tzv. smartphonů, umožnil rozvoj mnoha druhů aplikací z různých oblastí a tak vzniklo mnoho povedených aplikací i z oblasti botaniky. Jedná se například o aplikaci WA Conifers & Wildflowers Keys, která slouží k určení rostlin vyskytujících se ve státě Washington. (WA Cofifers & Wildflowers Keys, 2012)
Obr. 1 Mobilní aplikace WA Conifers & Wildflowers Keys pro operační systém Android, zdroj: https://play.google.com/store
Dále je na Google Play k dostání aplikace Key: Plants Families, která umožňuje jak určovat rostliny podle botanického klíče, tak i například ověřit si své znalosti z oblasti rostlin. (Key: Plant Families, 2012)
Botanický klíč
13
Obr. 2 Mobilní aplikace Key: Plant Families pro operační systém Android, zdroj: https://play.google.com/store
2.3 Webové aplikace Jedná se o aplikaci, která je uživatelům poskytována z webového serveru a to prostřednictvím počítačové sítě Internet. V současné době existuje mnoho aplikací z oblasti botaniky, jakou jsou například různé atlasy rostlin, nebo i botanické klíče k jejich určování. (Atlas rostlin, 2006)
Obr. 3
Webová aplikace pro určení druhu rostliny, zdroj: www.rostliny.prirodou.cz
14
Operační systém Android
3 Operační systém Android Jedná se o operační systém, který byl vytvořen společností Google. Je založený na open source platformě. Samotný operační systém je pak založen na Linuxovém jádře, konkrétně na různých verzích 2.6. Toto jádro zajišťuje zabezpečení systému, správu paměti, správu procesů, dále pak také přístup k síti a k různým ovladačům vnitřních senzorů, jako je například fotoaparát, GPS apod. Aplikace, které jsou v zařízení nainstalované, nebo si je do něj nainstaluje uživatel, přistupují k funkcím jádra pomocí Android API. Operační systém Android je převážně určen pro chytré mobilní telefony (tzv. smartphony) a tablety. (Urbányai M., 2012)
3.1 Historie operačního systému Android V roce 2003 byla v Kalifornii v USA založena společnost Android. Zakladately společnosti byli Andy Rubin, Rich Miner, Nick Sears a Chris White. Po založení se společnost začala zabývat vývojem aplikací pro mobilní zařízení. V roce 2005 tuto společnost odkoupila firma Google a poté v listopadu roku 2007 došlo společností Google k oficiálnímu představení platformy Android. (Urbányai M., 2012)
3.2 Verze operačního systému Android Od první verze prošel operační systém Android mnoha změnami. Postupně byly opravovány chyby z předešlých verzí a přidávána nová funkčnost. Jednotlivé verze jsou pojmenovány abecedně podle jmen zákusků, např. Cupcake, Donut atd. (Urbányai M., 2012) 3.2.1
Android 1.0
Jedná se o první verzi operačního systému, založenou na Linuxovém jádře 2.6.25. První mobilní zařízení, které tento operační systém používalo, byl mobilní telefon HTC Dream (T-Mobile G1). Mezi hlavní funkce této verze patřil: Webový prohlížeč, který umožňoval prohlížení HTML a XHTML stránek, dále umožňoval zobrazit více stránek, pomocí záložek. Fotoaparát pro pořizování fotografií. Android Market (dnešní Google Play), pro nákup různých aplikací. Email, pro přístup k emailovým schránkám, byla zajištěna podpora POP3, IMAP4 a SMTP. Gmail. Google Contacts, umožňující synchronizovat kontakty s aplikací Kontakty v zařízení.
Operační systém Android
15
Google Calendar, umožňující synchronizovat se s aplikací Kalendář v zařízení. Google Maps a Street View. Google Sync, pro synchronizaci kontaktů, kalendáře a Gmailu. Google Talk, pro zasílání textových zpráv. Media Player, pro přehrávání video souborů uložených v zařízení. Youtube pro sledování videí na této webové stránce. Další aplikace jako je například kalkulačka, galerie obrázků apod. (Urbányai M., 2012)
Obr. 4 HTC Dream (T-Mobile G1)- první mobilní telefon s operačním systémem Android, zdroj: http://cs.wikipedia.org/wiki/T-Mobile_G1
3.2.2
Android 1.1
Oproti předešlé verzi došlo k minimu změn, jelikož byl tento operační systém stále určen pouze pro jedno mobilní zařízení a to konkrétně stále pro HTC Dream (T-Mobile G1). (Urbányai M., 2012) 3.2.3
Android 1.5 Cupcake
Tato verze operačního systému založená na Linuxovém jádře 2.6.27, přinesla mnoho nových vylepšení a změn. Mezi hlavní nové funkce patřilo: Animace při přechodech mezi jednotlivými obrazovkami. Umožnění rotace aplikací. Zrychlení a zlepšení fotoaparátu. Zrychlení GPS. Implementace softwarové klávesnice a domovské obrazovky. Umožnění nahrávání videa pomocí fotoaparátu. Podpora video formátů MPEG-4 a 3GP. (Urbányai M., 2012)
16
Operační systém Android
Obr. 5 Logo operačního systému Android 1.5 Cupcake, zdroj: www.blogs.computerworld.com
3.2.4
Android 1.6 Donut
Jedná se o verzi založenou na Linuxovém jádře 2.6.29. Opět byla vylepšena předchozí verze operačního systému, zachovány stávající funkce a přidány nové, jako například: Vylepšené grafické rozhraní, např. pro fotoaparát a galerii. Nová funkce rychlého vyhledávání. Vylepšený Android Market. Vylepšeno vyhledávání hlasem. Přidán indikátor využití baterie, umožňující uživatelům sledovat jaká aplikace právě využívá energii z baterie. (Urbányai M., 2012)
Obr. 6
Logo operačního systému Android 1.6 Donut, zdroj: www.en.paseban.com
3.2.5
Android 2.0/2.1 Eclair
I když se jedná opět o verzi postavenou na Linuxovém jádře 2.6.29, přinesla tato verze opět mnoho změn: Vylepšení softwarové klávesnice. Přidání digitálního zoomu u fotoaparátu. Nový webový prohlížeč s podporou HTML5. Podpora pro více velikostí displejů. (Urbányai M., 2012)
Operační systém Android
Obr. 7
Logo operačního systému Android 2.0/2.1 Eclair, zdroj: www.fitrian.net
3.2.6
Android 2.2 Froyo
17
Tato verze operačního systému založená na Linuxovém jádře 2.6.32, byla představena slavnostně na konferenci Google/IO v roce 2010 a přinesla podporu nových technologií a samozřejmě také nové funkce: Možnost instalace aplikací na paměťovou kartu zařízení. Vylepšení fotoaparátu a videokamery. Možnost ze zařízení vytvořit Wifi hotspot. Zvýšení výkonu díky JIT (Just in time) kompilátoru. Vylepšení správy RAM paměti. (Urbányai M., 2012)
Obr. 8
Logo operačního systému Android 2.2 Froyo, zdroj: www.androinica.com
3.2.7
Android 2.3/2.4 Gingerbread
V současnosti se jedná o nejvyužívanější verzi operačního systému Android. Je založena na Linuxovém jádře 2.6.35. Mezi hlavní nové funkce v této verzi patří: Google Maps s 3D přístupem. Výrazné zlepšení funkce pro kopírování a vkládání textů. Vylepšení softwarové klávesnice. (Urbányai M., 2012)
18
Operační systém Android
Obr. 9 Logo operačního systém Android 2.3/2.4 Gingerbread, zdroj: www.news.samdroid.net
3.2.8
Android 3.0/3.1/3.2 Honeycomb
Tato verze operačního systému byla určena pouze pro tablety, proto se většina vylepšení týká grafiky a uživatelského rozhraní. I přesto byly přidány některé nové funkce: Ovládání operačního systému bylo uzpůsobeno pro tablety. Uzpůsobení operačního systému tak, že nebyly potřeba k jeho ovládání žádná hardwarová tlačítka. Vylepšení widgetů. Vylepšení Google Maps. (Urbányai M., 2012)
Obr. 10
Tablet s operačním systém Android Honeycomb, zdroj: www.justit.cz
Obr. 11
Logo operačního systému Android 3.0/3.1/3.2 Honeycomb, zdroj: www.home.zcu.cz
3.2.9
Android 4.0/4.0.1/4.0.2 Ice Cream Sendwich
Jedná se o verzi operačního systému, která byla uvedena na trh v roce 2011. Na rozdíl od předešlé verze je určena jak pro tablety, tak i pro smartphony. Opět byla zachována funkčnost z předchozí verze systému a přidány nové funkce:
Operační systém Android
19
Vylepšení práce se sociálními sítěmi. Vylepšení fotoaparátu. Detekování obličeje při videohovorech. Vylepšení hlasového vyhledávání. Ovládání aplikací pohybovými gesty. Android Beam, pro výměnu informací mezi dvěma zařízeními, které mají NFC čip. Wifi Direct, pro přímé spojení dvou zařízení pomocí Wifi. (Čerpáno z Urbányai M., 2012)
Obr. 12 Logo operačního systému Android 4.0/4.0.1/4.0.2 Ice Cream Sendwich, zdroj: www.agorandroid.com
3.2.10 Android 4.1 Jelly Bean V současnosti se jedná o nejnovější verzi operačního systému Android. Tato verze byla uvedena na trh v roce 2012 a obsahuje mnoho nových funkcí a vylepšení: Vylepšení fotoaparátu. Odemykání zařízení pomocí obličeje. Více stylů softwarových klávesnic, jako je například QWERTY, QWERTZ apod. Podpora více uživatelských účtů. Možnost restartování základních aplikací nainstalovaných v zařízení (Android market, 2012).
20
Operační systém Android
Obr. 13 Logo operačního systému Android 4.1 Jelly Bean, zdroj: www.dotekomanie.blog.mobilmania.cz
3.3 Architektura operačního systému Android Operační systém Android je složený celkem z pěti vrstev. Jednotlivé vrstvy mají své funkce a mohou spolu i spolupracovat. (Android-App-Market, 2012)
Obr. 14
Vrstvy architektury operačního systému Android, zdroj: www.developer.android.com
3.3.1
Linux Kernel
Jedná se o nejnižší vrstvu architektury operačního systému Android. Jde o jádro operačního systému. Při spuštění zařízení se systémem Android je toto jádro zavedeno do operační paměti zařízení a je mu uděleno právo řízení, což znamená, že má stálou kontrolu nad systémem a může neustále řídit všechny běžící procesy, spravovat paměť apod. (Android-App-Market, 2012)
Operační systém Android
3.3.2
21
Libraries
Nad Linux Kernel je umístěna další vrstva, kterou jsou tzv. Libraries neboli knihovny. Obsahuje například knihovny zajišťující komunikaci, sledování stavu telefonu, přijímání telefonních hovorů a SMS zpráv (konkrétně knihovna android.telephony). Všechny tyto knihovny souhrnně nazýváme Android API. (Android-App-Market, 2012) 3.3.3
Android Runtime
V této vrstvě je umístěn virtuální stroj DVM (neboli Dalvik Virtual Machine) a základní knihovny programovacího jazyka Java s tím, že knihovny AWT a Swing (pro vytváření uživatelského rozhraní) byly nahrazeny knihovnami pro tvorbu uživatelského rozhraní pro operační systém Android. Aplikace pro systém Android jsou vytvářeny v programovacím jazyce Java, poté jsou překládány do Java byte kódu a pak do tzv. mezikódu pomocí Dalvik kompilátoru. Tento kód je poté spuštěn pomocí DVM. Každá aplikace je tudíž samostatný proces, který má vlastní instanci DVM. (Android-App-Market, 2012) 3.3.4
Application Framework
Tato vrstva operačního systému Android je velmi důležitá zejména pro vývojáře aplikací pro systém Android. Umožňuje jim totiž přistupovat k různým službám, které pak můžou použít ve svých aplikacích a tyto služby jim následně umožní například využívat prvky uživatelského rozhraní apod. Mezi důležité služby této vrstvy patří: View System, který slouží k tvorbě uživatelského rozhraní. Content Providers pro přístup k obsahu jiných aplikací. Activity Manager pro ovládání životního cyklu aplikací. Resource Manager pro přístup ke zdrojům jako jsou například řetězce, grafické soubory apod. (Android-App-Market, 2012) 3.3.5
Applications
Nejvyšší vrstva architektury systému Android. Jsou to samotné aplikace, které využívají uživatelé zařízení. Jedná se například o aplikace, které jsou již na zařízení přeinstalovány, nebo si je uživatel na zařízení sám nainstaluje. (AndroidApp-Market, 2012)
3.4 Vlastnosti operačního systému Android Mezi hlavní vlastnosti operačního systému Android patří: Handset layouts, které umožňuje adaptabilní změnu rozvržení podle velikosti obrazovky.
22
Operační systém Android
Databáze, která slouží k uchovávání dat, konkrétně je využívána relační databáze SQLite, která je pro mobilní zařízení uzpůsobena. Připojení k technologiím jako je GSM/EDGE, CDMA, Bluetooth, Wifi, NFC apod. Odesílání SMS a MMS zpráv. Telefonování, včetně videohovorů. Podpora více jazyků. Webový prohlížeč, umožňující prohlížet webové stránky, ukládat je do záložek apod. Možnost přehrávání a prohlížení médií jako MP3, MIDI, WAV, JPEG, PNG, GIF apod. Hardwarová podpora pro fotoaparát, GPS, dotykový displej, gyroskop apod. Více dotykové ovládání. Hlasové vyhledávání. (UJBÁNYAI, M., 2012)
Vývoj aplikací pro operační systém Android
23
4 Vývoj aplikací pro operační systém Android 4.1 Základní komponenty aplikací Každá aplikace pro operační systém Android může být složena z několika základních komponent. (Urbányai M., 2012) 4.1.1
Aktivita
Aktivita je vlastně jedna obrazovka aplikace. Aplikace jsou většinou složeny z více aktivit. Jedna z aktivit bývá označena jako hlavní a ta je uživateli vždy spuštěna jako první. Spustí-li se další aktivita, je předešlá aktivita pozastavena a umístěna do zásobníku, který funguje jako LIFO (last in, first out), to znamená, že pokud uživatel stiskne tlačítko Zpět, je ze zásobníku vyjmuta a spuštěna první aktivita, která se nachází na jeho vrcholu. (Urbányai M., 2012) 4.1.2
Služba (Service)
Hlavní rozdíl oproti aktivitě je v tom, že služba neposkytuje uživateli uživatelské rozhraní. Službu může spustit nějaká aplikace, služba poté pracuje na pozadí. (Urbányai M., 2012) 4.1.3
Poskytovatelé obsahu (Content provider)
Slouží k poskytování dat mezi různými aplikacemi. Jedná se vlastně o jedinou možnost jak sdílet data mezi různými aplikacemi v systému Android. (Urbányai M., 2012) 4.1.4
Záměr (Intent)
Záměrem definujeme, co se má v určitou chvíli stát. Například můžeme definovat záměr spustit další aktivitu. (Urbányai M., 2012) 4.1.5
Přijímač (Broadcast receiver)
Přijímač naslouchá a stane-li se definovaná akce nebo určitá událost, tak provede nějakou reakci, například může být definován přijímač, který naslouchá, zda nepřichází telefonní hovor. V případě že ano, je provedeno oznámení této skutečnosti uživateli. (Urbányai M., 2012) 4.1.6
Oznámení (Notification)
Slouží k informování uživatele o nějaké skutečnosti. Máme několik možností, jak vytvořit oznámení:
24
Vývoj aplikací pro operační systém Android
Toast oznámení- jedná se o zprávu, která se na určitý čas objeví v aktuální aktivitě a poté zase zmizí, uživatel na ni nemůže nijak reagovat. Oznámení ve stavovém řádku- do stavového řádku je přidán další řádek s ikonou příslušné aplikace a s příslušným oznámením. Dialogové okno- zobrazí se uživateli s příslušnou zprávou a od uživatele je vyžadována interakce, obsahuje tlačítka pro potvrzování. (Urbányai M., 2012)
4.2 Vývojové prostředí Pro vývoj aplikací určených pro operační systém Android je nejvhodnější vývojové prostředí Eclipse, konkrétně Eclipse pro vývoj aplikací v programovacím jazyce Java. Dále je nutné mít na svém počítači nainstalován Android SDK, který slouží konkrétně k vývoji aplikací pro operační systém Android. Tyto dvě komponenty (Eclipse a Android SDK) jsou propojeny pomocí pluginu Android Developer Tools (zkráceně jako ADT), který poté vývojové prostředí Eclipse rozšíří například o komponenty uživatelského rozhraní pro potřeby vývoje Android aplikací. (Developer Tools, 2010)
Obr. 15
Vývojové prostředí Eclipse
4.3 Android Virtual Device (ADT) Jedná se o emulátor zařízení s operačním systémem Android. ADT je součástí Android SDK. Pomocí něj si můžeme vytvořit emulátor s požadovanou verzí operačního systému Android, požadovanou velikostí paměti apod. (Developer Tools, 2010)
Vývoj aplikací pro operační systém Android
Obr. 16
25
Android Virtual Device Manager
4.4 Struktura projektu Android aplikace 4.4.1
AndroidManifest.xml
XML soubor, který popisuje aplikaci. Obsahuje například minimální verzi operačního systému Android, pro kterou je aplikace určena, cílovou verzi operačního systému Android pro kterou je tato aplikace určena, dále pak název balíčku (např. com.example.botanicky.klic), práva, která tato aplikace vyžaduje, jako například právo pro přístup na internet apod. Součástí tohoto souboru je pak také seznam všech aktivit, které se v aplikaci vyskytují. Dále je zde uvedeno, která aktivita je označena jako hlavní (je uživateli zobrazena pokaždé při spuštění aplikace). (Murphy M. L., 2011) 4.4.2
Složka res
Složka obsahující ikony použité v aplikaci a to ve všech rozlišeních, XML soubory definující rozvržení prvků u jednotlivých aktivit, XML soubory obsahující položky menu, soubor strings.xml, obsahující všechny použité řetězce v aplikaci, a soubor styles.xml, který určuje vzhled celé aplikace (např. pozadí každé aktivity v aplikaci apod.). (Murphy M. L., 2011)
26
4.4.3
Vývoj aplikací pro operační systém Android
Složka libs
Obsahuje Java archivy, které jsou v aplikaci použity. (Murphy M. L., 2011) 4.4.4
Složka assets
V této složce se nachází všechny soubory, které mají dále být v aplikaci použity, např. textové soubory apod. (Murphy M. L., 2011) 4.4.5
Složka bin
V ní jsou obsaženy soubory aplikace po jejím zkompilování. (Murphy M. L., 2011) 4.4.6
Složka src
Obsahuje všechny soubory se zdrojovými kódy aplikace v programovacím jazyce Java, uložené v daném jmenném prostoru. (Murphy M. L., 2011) 4.4.7
Složka gen
Obsahuje soubory se zdrojovým kódem v programovacím jazyce Java, které byly vygenerovány pomocí Android SDK. (Murphy M. L., 2011)
Implementace aplikace Botanický klíč
27
5 Implementace aplikace Botanický klíč Mobilní aplikace Botanický klíč je implementována pro operační systém Android. Je zajištěna funkčnost od verze Android 2.3 až po verzi systému Android 4.0. Dále je pro plnou funkčnost aplikace vyžadováno funkční datové připojení. Aplikace je implementována spojením několika aktivit a informace jsou uloženy v lokální databázi, která je umístěna v paměti mobilního telefonu.
5.1
AndroidManifest.xml
Jedná se o XML soubor, který je základem každé aplikace pro operační systém Android. Je v něm definováno jméno jmenného prostoru, ve kterém se aplikace nachází, dále číslo udávající kód a jméno verze aplikace. Velmi důležitou položkou je také definice minimální verze operačního systému Android (android:minSdkVersion), pro kterou je aplikace určená. V případě, že je aplikace umístěna na Google Play, je při požadavku na její stažení do mobilního telefonu uživatele zkontrolována verze jeho systému a pokud je menší než požadovaná minimální verze definována v aplikaci, je uživatel upozorněn a aplikace není do jeho zařízení stažena. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.botanicky.klic" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
Další důležitou součástí Android Manifestu je definice práv aplikace. Jelikož jsou informace o vyhledaných rostlinách zobrazovány na webových stránkách, je v aplikaci definováno právo přístupu aplikace na Internet. Na tuto skutečnost je uživatel upozorněn při instalaci aplikace do mobilního telefonu. <uses-permission android:name="android.permission.INTERNET" >
V poslední řadě je obsahem tohoto souboru definice každé aktivity použité v aplikaci. O každé aktivitě je uvedeno její jméno, její typ (zda je hlavní nebo ne) a orientace obrazovky. Pouze jedna aktivita je označena jako hlavní, jako tzv. launcher, to znamená, že je uživateli zobrazena jako první při spuštění aplikace.
28
Implementace aplikace Botanický klíč
5.2 Uživatelské rozhraní aplikace Uživatelské rozhraní je definováno pomocí XML souboru. Tento soubor v sobě obsahuje všechny prvky uživatelského rozhraní, které se v dané aktivitě nacházejí. U každého prvku je definován jeho jedinečný identifikátor a mnoho dalších vlastností. Mezi ty nejvýznamnější, které jsou definovány v aplikaci u všech prvků, patří android:layout_width, který nabývá hodnoty fill_parent, což znamená, že prvek je umístěn po celé šířce obrazovky, která je dostupná a dále pak android:text, který většinou nabývá hodnoty @string/identifikátor, kde identifikátor slouží k identifikaci řetězce, který je pod tímto názvem uložen v XML souboru strings.xml. 5.2.1
Prvky uživatelské rozhraní použité v aplikaci
Základním prvkem každé definice vzhledu aktivity je tzv. layout. V aplikaci je použito lineární rozvržení (LinearLayout), což znamená, že každý prvek uživatelského rozhraní je umístěn na jeden řádek, v případě, že aktivita je definována jako vertikální. V určitých případech, to zejména pokud se v aktivitě vyskytuje větší množství prvků a hrozí nebezpečí, že by se nevešly na obrazovku, je lineární rozvržení ještě obaleno prvkem zvaným ScrollView, který umožňuje obrazovkou posouvat. Takto je to učiněno u hlavní aktivity BotanickyKlic a dále pak u aktivity OAplikaci. Mezi další prvky použité v aplikaci patří samozřejmě tlačítka, neboli Button. Velmi důležitým atributem každého tlačítka je android:onClick, který definuje akci, která se stane po stisknutí příslušného tlačítka. V aplikaci je vždy po stisknutí tlačítka spuštěna daná aktivita. Spuštění zajistí metoda, jejíž název je umístěn jako parametr atributu android:onClick. Příslušná metoda se nachází v Java souboru, který k příslušné aktivitě patří. <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_lupa" android:drawableRight="@drawable/ic_lupa" android:height="40dp" android:onClick="urciRostlinu" android:text="@string/urceniRostliny" />
Implementace aplikace Botanický klíč
29
Velmi používaným prvkem v aplikaci je také Radiobutton, který slouží k označení určitých voleb. Radiobuttony, které spolu souvisejí, jsou sdruženy do Radiogroup, které zajistí, že z příslušné skupiny lze vybrat (označit) pouze jeden Radiobutton. Obsluha akce, která se stane po označení určitého Radiobuttonu je provedena atributem android:onClick, podobně jako je tomu u tlačítek. Radiobutton jsou v aplikaci použity pro výběr většiny parametrů rostlin, jako je např. zda má rostlina viditelný květ apod.
V aplikaci je také použit Spinner. Jedná se o prvek, na který když uživatel klikne, zobrazí se mu nabídka možností a uživatel si zvolí jednu s nich. Hodnoty, které se uživateli nabídnou po rozbalení Spinneru jsou definovány pomocí atributu android:entries, který v tomto případě nabývá hodnoty @array/barvy. Atribut @array/barvy, načte z XLM souboru string.xml, pole barvy typu string. Spinner je v aplikaci použit pro výběr barvy květu rostliny. <Spinner android:id="@+id/spinnerBarvy" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/barvy"/>
Dalším významným prvkem, který je použit v aplikaci je Seekbar. U tohoto prvku je třeba definovat jeho maximální hodnotu, je to uskutečněno pomocí atributu android:max. Jedná se o prvek, kterým může po dotyku na něj uživatel pohybovat a tím nastavuje jeho aktuální hodnotu. V aplikaci je tento prvek použit pro určení výšky rostliny.
30
Implementace aplikace Botanický klíč
<SeekBar android:id="@+id/seekBarVyska" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="300" android:paddingLeft="15dp" android:paddingRight="15dp"/>
V neposlední řadě jsou v aplikaci také použity prvky Imageview, který slouží k zobrazení obrázku, konkrétně v aplikaci je pomocí něj zobrazeno logo aplikace v hlavní aktivitě a prvek Textview, který slouží k pouhému zobrazení textu, který je dán atributem android:text.
5.3 Implementace aplikace 5.3.1
Uložení informací o rostlinách
Vyhledávání příslušných rostlin probíhá pomocí informací, které jsou uloženy v databázi. V aplikaci jsou celkem dvě databáze. Jedna zajišťuje uložení všech informací o rostlinách, podle kterých se poté určuje, o jakou rostlinu se jedná a druhá databáze slouží k uložení vyhledaných rostlin, pokud si to uživatel přeje. Třída DatabaseHelper, která dědí od třídy SQLiteOpenHelper, slouží k vytvoření databáze rostlin. Do globálních proměnných typu string, které jsou nazvány podle sloupců databáze, jsou přiřazeny řetězce, které jsou stejné jako názvy proměnných. Těchto proměnných je pak využito při vkládání dat do databáze. private static final String DATABASE_NAME="databazeRostlin2013"; public static final String JMENO="jmeno"; public static final String VIDITELNE_KVETY="viditelneKvety"; public static final String VIDITELNE_LISTY="viditelneListy";
Samotné vytvoření databáze pak proběhne provedením SQL příkazu pro vytvoření tabulky, který je dosazen jako parametr metodě execSQL. Tato metoda je metodou třídy SQLiteOpenHelper. db.execSQL("CREATE TABLE rostliny (_id INTEGER PRIMARY KEY AUTOINCREMENT, jmeno TEXT, viditelneKvety TEXT, viditelneListy TEXT, typRostliny TEXT, vyskaMax INTEGER, typStonku TEXT, mesicKveteniMin INTEGER, mesicKveteniMax INTEGER, barvaKvetu TEXT, typListu TEXT, trny INTEGER, chloupky INTEGER, url TEXT, misto TEXT);");
Poté následuje inicializace (vložení dat) do databáze, data jsou do databáze vkládány pouze jednou, v případě, že již databáze v mobilním telefonu existuje, tak podruhé vytvořena není. Vložení dat probíhá vytvořením instance třídy ContentValues a následným použitím její metody put, která přebírá jako parametr název sloupce a jeho hodnotu, kterou si má zapamatovat. Proto jsou také vytvo-
Implementace aplikace Botanický klíč
31
řeny na začátku globální proměnné, které nabývají hodnot jmen sloupců tabulky databáze. Poté je zavolána metoda insert, která je metodou třídy SQLiteOpenHelper, ze které je děděno. cv.put(JMENO, "Huseníček rolní"); cv.put(VIDITELNE_KVETY, "Ano"); cv.put(VIDITELNE_LISTY, "Ano"); cv.put(TYP_ROSTLINY, "Bylina"); cv.put(VYSKA_MAX, 30); cv.put(TYP_STONKU, "Lodyha"); cv.put(MESIC_KVETENI_MIN, 4); cv.put(MESIC_KVETENI_MAX, 5); cv.put(BARVA_KVETU, "Bílá"); cv.put(TYP_LISTU, "Jednoduchý"); cv.put(TRNY, "Ne"); cv.put(CHLOUPKY, "Ano"); cv.put(URL, "http://cs.wikipedia.org/wiki/Husen%C3%AD%C4%8Dek_roln%C3%AD"); cv.put(MISTO, "Slunná místa"); db.insert("rostliny", JMENO, cv);
Třída DatabaseHelper2 opět dědí od třídy SQLiteOpenHelper a zajišťuje vytvoření databáze pro uložení vyhledaných rostlin uživatelem. Oproti předešlé databázi je tato mnohem menší a obsahuje tabulku pouze se třemi sloupci, konkrétně se sloupcem který slouží pro uložení jména rostliny a sloupec pro uložení odkazu na webové stránky, kde se uživatel dozví více informací o příslušné rostlině. Databáze je vytvořena opět příkazem execSQL. db2.execSQL("CREATE TABLE mojeRostliny (_id INTEGER PRIMARY KEY AUTOINCREMENT, jmeno TEXT, url TEXT);");
5.3.2
Hlavní menu aplikace
Hlavní menu aplikace Botanický klíč představuje aktivita BotanickyKlic, jejíž obsahem jsou čtyři tlačítka, z nichž každé slouží ke spuštění další aktivity. První tlačítko slouží k určení rostliny, další pro zobrazení seznamu všech rostlin, které jsou v dané aplikaci uloženy, dále obsahuje tlačítko pro zobrazení uložených rostlin uživatele a v poslední řadě i tlačítko zobrazující informace o aplikaci Botanický klíč. Aktivitě je přiřazen vzhled (rozvržení) pomocí příkazu setContentView. Každé tlačítko má pak definováno samostatnou metodu, která se spustí jako reakce na stisk tlačítka. Jelikož se jedná o hlavní menu aplikace, každé tlačítko vytváří záměr spustit příslušnou aktivitu a poté ji spustí. Speciální případ nastane, když uživatel klikne na tlačítko Moje uložené rostliny. Napřed je proveden SQL dotaz (SELECT * FROM mojeRostliny ORDER BY jmeno). Výsledky tohoto SQL dotazu se uloží do instance třídu Cursor a pokud po posunu na první prvek této instance je jeho hodnota null, je zobrazeno Toast oznámení a uživateli je opět
32
Implementace aplikace Botanický klíč
spuštěna hlavní aktivita (hlavní menu), protože je databáze jeho vyhledaných rostlin ještě prázdná. public void zobrazSeznamMychRostlin(View view){ SQLiteDatabase db2 = null; Cursor constantsCursor = null; String SQLSelect = "SELECT * FROM mojeRostliny ORDER BY jmeno"; db2=(new DatabaseHelper2(this)).getWritableDatabase(); constantsCursor=db2.rawQuery(SQLSelect, null); if (constantsCursor.moveToFirst() == false) { Toast.makeText(this, "Databáze vašich rostlin je prázdná.", 1000).show(); } else { Intent intent = new Intent(this, SeznamMychRostlin.class); startActivity(intent); } }
Obr. 17
Hlavní menu aplikace Botanický klíč
5.3.3
Určení druhu rostliny
Před samotným určením druhu rostliny je uživateli zobrazena aktivita obsahující upozornění, týkající se požadavků na určované rostliny. Uživateli je sděleno, že nejlepších výsledků dosáhne, když se bude pokoušet určit druh rostliny, která má právě viditelný květ. Určení rostliny poté obstarává aktivita UrceniRostlinyZadani. Jedná se o aktivitu obsahující globální proměnné pro všechny zadávané znaky rostliny, podle kterých se následně provede vyhledání. Všechny globální proměnné jsou na začátku inicializovány, aby mohl být na konci této aktivity po kliknutí na tlačítko Vyhledej rostlinu, proveden test, zda jsou všechny proměnné různé od inicializačních hodnot. Pokud by tomu tak nebylo, je uživateli zobrazen dialog, informujícího o skutečnosti, že zapomněl vyplnit některou z položek k určení rostliny.
Implementace aplikace Botanický klíč
33
Jako první uživatel zadává, zda má rostlina viditelné listy, zaškrtnutím příslušného Radiobuttonu se uloží odpověď do globální proměnné viditelneListy. V případě, že uživatel zaškrtne odpověď ano, jsou mu uvedeny do aktivity Radiobuttony určující druh listů, pokud je zaškrtnuta odpověď ne, jsou mu tyto Radiobuttony uvedeny do neaktivity a do globální proměnné typListu je přiřazena hodnota Nemá listy. Podobně je to zajištěno u určení, zda má rostlina viditelný květ. V případě, že má, může uživatel určit barvu za pomocí Spinneru, v případě, že nemá viditelný květ, tak barvu určit nemůže. Při procházení dalších otázek k určení rostliny jsou opět do příslušných globálních proměnných přiřazovány hodnoty, které odpovídají tomu, co uživatel zvolil např. na Radiobuttonu, nebo pomocí Seekbaru, který slouží k určení výšky rostliny.
Obr. 18
Určení charakteristických znaků rostliny
Po stisknutí tlačítka Vyhledej rostlinu, je spuštěna další aktivita, která umožňuje uživateli zvolit, podle jakého kritéria chce třídit vyhledané rostliny. Může si zvolit třídění podle výšky rostliny nebo podle jejich jména. Z předešlé aktivity jsou to této aktivity přeneseny hodnoty všechny proměnných, obsahují důležité informace pro následné vyhledání rostlin, pomocí instance třídy Bundle. Bundle b = new Bundle(); b.putString("viditelneListy", viditelneListy) b.putString("viditelnyKvet", viditelnyKvet); b.putString("typRostliny", typRostliny); b.putString("typStonku", typStonku); b.putInt("mesic", mesic); b.putString("typListu", typListu); b.putString("trny", trny); b.putString("chloupky", chloupky); b.putString("barva", barva); b.putInt("vyska", vyska); b.putString("misto",misto); intent.putExtras(b);
34
Obr. 19
Implementace aplikace Botanický klíč
Setřídění výsledků podle zadaného kritéria
Po stisknutí tlačítka Zobraz setříděné rostliny, je opět spuštěna další aktivita, která už zobrazí vyhledané rostliny. Konkrétně se jedná o aktivitu VysledkyHledani. Rostliny vyhledá SQL dotaz, který se zřetězuje s příslušnými proměnnými, aby se porovnaly hodnoty těchto proměnných s požadovanými sloupci tabulky databáze. Celý výsledek vyhledávání je pak seřazen podle hodnoty proměnné setrid, která buď nabývá hodnoty vyska nebo jmeno. SQLSelect = "SELECT * FROM rostliny WHERE (viditelneListy = '" + viditelneListy + "') AND (viditelneKvety = '" + viditelnyKvet + "') " + "AND (typRostliny = '" + typRostliny + "') AND (typStonku = '" + typStonku + "') AND (mesicKveteniMin <= " + mesic + " <= mesicKveteniMax) " + " AND (typListu = '" + typListu + "') AND (trny = '" + trny + "') AND (chloupky = '" + chloupky + "') AND (barvaKvetu = '" + barva + "') AND (vyskaMax >= " + vyska + ")AND (misto = '" + misto + "') ORDER BY "+ setrid;
Tento SQL dotaz je dosazen do metody rawQuery, která je definována pro instance třídy SQLiteDatabase. Výsledky této operace jsou poté vloženy do instance třídy Cursor a pomyslný kurzor je posunut na první záznam, v případě, že nebyly vyhledány žádné rostliny, je do instance třídy Cursor přiřazena hodnota null. Nastane-li tento případ, je uživateli zobrazeno Toast oznámení, jelikož nebyly vyhledány žádné rostliny a uživatel je vrácen zpět na předešlou aktivitu. V případě, že jsou nalezeny rostliny, jsou uživateli zobrazeny a po kliknutí na příslušnou rostlinu, je uživateli zobrazen dialog, který mu nabízí dvě možnosti, buď si rostlinu uloží a prohlédne si informace o ní, nebo si pouze prohlédne informace o rostlině. Je však nutné mít funkční datové připojení. protected void onListItemClick (ListView l, View v, int position, long id){ super.onListItemClick(l, v, position, id); final String url = constantsCursor.getString(13).toString(); final String jmeno = constantsCursor.getString(1).toString(); new AlertDialog.Builder(this) .setTitle("Pozor") .setMessage("Co chcete provést ?") .setNeutralButton("Uložit a zobrazit informace", new DialogInterface.OnClickListener() {
Implementace aplikace Botanický klíč
35
public void onClick(DialogInterface dialog, int which) { ContentValues values=new ContentValues(2); values.put("jmeno", jmeno); values.put("url", url); db2.insert("mojeRostliny", "jmeno", values); constantsCursor.requery(); Toast.makeText(getApplicationContext(), "Záznam vložen", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } }) .setPositiveButton("Neukládat a zobrazit informace", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } }) .show(); }
36
Implementace aplikace Botanický klíč
Obr. 20
Výsledky vyhledávání rostlin
Obr. 21
Výsledky vyhledávání rostlin – kliknutí na rostlinu
5.3.4
Zobrazení všech rostlin
Zobrazení rostlin obstarává aktivita SeznamRostlin. Nejedná se o nic jiného, než o seznam všech rostlin, které jsou obsažené v aplikaci. Z databáze jsou vybrány všechny rostliny a seřazeny podle jména. Po kliknutí na příslušnou rostlinu, jsou opět zobrazeny podrobnější informace pomocí webového prohlížeče, který otevře webovou stránku o příslušné rostlině.
Implementace aplikace Botanický klíč
Obr. 22
Seznam všech rostlin v aplikaci Botanický klíč
5.3.5
Zobrazení rostlin vyhledaných a uložených uživatelem
37
Jedná se o aktivitu SeznamMychRostlin, která je spustitelná pouze, pokud se v tabulce databáze uložených rostlin uživatele něco nachází. V případě, že je vše v pořádku a tabulka není prázdná, je uživateli zobrazen seznam rostlin, které si sám uložil po jejich vyhledání. Kliknutím na příslušnou rostlinu, jsou uživateli nabídnuty pomocí dialogu dvě možnosti, buď rostlinu může vymazat, nebo si prohlédnout pomocí webového prohlížeče informace o dané rostlině.
38
Implementace aplikace Botanický klíč
Obr. 23
Uložené uživatelovy rostliny – reakce na kliknutí
5.3.6
Zobrazení informací o aplikaci
Poslední aktivita obsažená v aplikaci Botanický klíč je aktivita Oaplikaci a zobrazuje uživateli mobilní aplikace podrobné informace o všech funkcích aplikace.
Implementace aplikace Botanický klíč
Obr. 24
Aktivita zobrazující informace o aplikaci
5.3.7
Vnořená menu
39
Jednotlivé položky vnořených menu jsou definovány v příslušných XML souborech. Každá položka vnořeného menu má svůj identifikátor, pod kterým je uložen řetězec v souboru string.xml k této položce. <menu xmlns:android="http://schemas.android.com/apk/res/android">
Vnořená menu jsou umístěna v aktivitách zajišťujících zobrazení všech rostlin v aplikaci, zobrazení rostlin uložených uživatelem, zobrazení informací o aplikaci a v neposlední řadě i v aktivitě pro určení rostliny, kde toto menu plní velmi důležitou funkci – poskytuje nápovědu k jednotlivým znakům, podle kterých se určuje druh rostliny. Rozvržení vnořeného menu je nastaveno pomocí příslušného XML souboru, který je dosazen v metodě onCreateOptionsMenu. public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_vysledky_hledani, menu); return true; }
40
Implementace aplikace Botanický klíč
Dále jsou definovány akce, které se stanou při kliknutí na každou položku vnořeného menu. V případě, že je kliknuto na položku Hlavní menu, je spuštěna aktivita, které zobrazuje hlavní menu aplikace Botanický klíč, pokud uživatel klikne na položku Nápověda, zobrazí se mu dialogové okno s nápovědou. public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ case R.id.menuHlavniMenu: Intent intent = new Intent(this, BotanickyKlic.class); startActivity(intent); return true; case R.id.menuNapoveda: new AlertDialog.Builder(this) .setTitle("Nápověda") .setMessage("TYP LISTU\nJednoduchý- celistvý list") .setNeutralButton("OK", new DialogInterce.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { } }) .show(); default: return super.onOptionsItemSelected(item); } }
Obr. 25
Vnořené menu
Distribuce aplikace
41
6 Distribuce aplikace Distribuce výsledné aplikace je nedílnou součástí následující po jejím vývoji. Jedná se o způsob, jak aplikaci dostat k cílovým uživatelům. V současné době existuje mnoho možností jak provést distribuci aplikace.
6.1 Google Play Nejrozšířenější způsobem distribuce aplikací pro operační systém Android je webový server Google Play. Pro distribuci aplikace přes tento server musí vývojář mobilní aplikace provést registraci a zaplacení poplatku 25$. Poté je mu zpřístupněna možnost umisťovat své aplikace na Google Play. Při umisťování aplikace se postupuje podle předem daných kroků, o kterých je vývojář informován, vyplňuje například kategorii, do které bude aplikace zařazena, její popis, vkládá obrázky s ukázkami z aplikace a v neposlední řadě určuje, zda bude aplikace dostupná zdarma nebo za nějaký poplatek. (Distribute Apps, 2010)
6.2 Alternativní obchody s Android aplikacemi V současnosti už není jediným obchodem s Android aplikacemi Google Play. Objevilo se mnoho konkurenční obchodů, které také nabízejí aplikace pro operační systém Android. Takže další možností, jak distribuovat aplikaci, je umístit ji na nějaký jiný internetový obchod s Android aplikacemi. Mezi nejznámější alternativní obchody s Android aplikacemi patří například Amazon App Store, Opera Mobile App Store nebo SlideME (10 Top Android Market Alternative App Stores).
6.3 Prezentace na vlastní webové stránce Další možností jak distribuovat aplikaci je umístit ji na vlastní webové stránky. Webové stránky by v tomto případě měli být jednoduché a poskytnou dostatečné množství informací o aplikaci, aby nalákaly uživatele k jejímu stáhnutí. Tato možnost je také zvolena při distribuci mobilní aplikace Botanický klíč. Tato aplikace je dostupná na adrese www.akela.mendelu.cz/~xpala1, dále je aplikace propagována na stránce www.wiki.androidforum.cz.
42
Závěr
7 Závěr Cílem této bakalářské práce bylo navrhnout uživatelské rozhraní a implementovat aplikaci Botanický klíč pro mobilní operační systém Android. Pro co nejpřesnější a nejspolehlivější fungování Botanického klíče muselo být v aplikaci použito co nejvíce informací o jednotlivých charakteristických znacích rostliny. Všechny tyto informace byly společně se jménem rostliny a odkazem na webovou stránku, kde uživatel může nalézt podrobnější informace o rostlině, upraveny pro potřeby této aplikace a uloženy do lokální databáze v mobilním telefonu uživatele. Při vývoji aplikace bylo využito standardní uživatelské rozhraní, kterým většina aplikací pro operační systém Android disponuje. Bylo využito i vnořených menu, které hrají svoji podstatnou roli ve chvíli, kdy uživatel zadává charakteristické znaky a není si jist, co který pojem znamená. Také samozřejmě umožňují rychlý návrat do hlavního menu aplikace. Aplikace byla testována v první řadě v emulátoru, kterým disponuje vývojové prostředí Eclipse. Poté se přešlo k testování na fyzických zařízeních. Aplikace byla otestována na mobilním telefonu LG P500 a HTC Wildfire S s operačním systémem Android 2.3 a dále pak i na telefonu Sony Xperia Z s verzí operačního systému Android 4.0. Při testování nedošlo k žádným neočekávaným situacím. Jelikož nebude aplikace distribuována za účelem zisku, není umístěna na Google Play, ale je dostupná z webových stránek www.akela.mendelu.cz/~xpala1. Dále je aplikace propagována na www.wiki.androidforum.cz.
7.1
Možnost dalšího rozšíření aplikace
Mezi další možnosti rozšíření aplikace by mohla být možnost pořídit si fotografii vyhledané rostliny a uložit si tuto fotografii k příslušné rostlině do databáze. Konkrétně do databáze, kam jsou ukládány vyhledané rostliny v případě, že tuto skutečnost uživatel provede. Další možností rozšíření aplikace Botanický klíč, je vyhledávání podle fotografie uživatele. To je ale v praxi velmi složité implementovat. Pokud by se jednalo o vyhledávání například podle textového řetězce, nejednalo by se o složitý problém. V případě vyhledávání podle vlastní uživatelovy fotografie už se jedná o problém, jelikož vyhledávání pomocí vyhledávače Google nebude fungovat. Google využívá při vyhledávání pomocí obrázku svoji databázi, ve které má uloženy obrazová data. Uživatelova fotografie, kterou někde pořídil, se v ní samozřejmě nenachází a tak k vyhledání nedojde.
7.2 Technické zhodnocení aplikace Platforma Android je velmi rychle se rozvíjející platformou. Odpovídá tomu i úroveň a možnosti vývojového prostředí. Spojení Android SDK a vývojového prostředí Eclipse je velmi dobrou věcí. Vývoj v tomto prostředí velmi usnadňuje
Závěr
43
práci a zároveň šetří čas, jelikož obsahuje mnoho funkcí, které vývoj velmi zrychlují. Mezi tyto funkce například patří automatické formátování kódu, nápovědy k jednotlivým funkcím apod. V případě, že by byla aplikace vyvíjena pro tablety, nedošlo by k nějakým výraznějším problémům, pouze by muselo být pozměněno rozvržení z důvodu větších obrazovek, které tablety mají.
7.3 Ekonomické zhodnocení aplikace Pro samotný vývoj aplikace nejsou potřebné žádné náklady, vývojové prostředí Eclipse a Android SDK je k dispozici zdarma. Jediné náklady nastanou v případě distribuce aplikace přes Google Play, kde je nutné zaplatit poplatek 25$ za licenci, aby mohla být aplikace do tohoto obchodu umístěna. Další náklady by mohly nastat při testování aplikace, jelikož testování musí být prováděno na fyzických zařízeních. Tyto náklady by se týkaly pořízení těchto zařízení s rozdílnými velikostmi obrazovek.
44
Literatura
8 Literatura 10 Top Android Market Alternative App Stores. HubPages [online]. 2013 [cit. 2013-05-16]. Dostupné z: http://danatheteacher.hubpages.com/hub/TopAndroid-Market-Alternative-App-Stores Atlas rostlin [online]. 2006 www.rostliny.prirodou.cz
[cit.
2013-05-15].
Dostupné
z:
Android-App-Market. Android Architecture – The Key Concepts of Android OS [online]. 2012 [cit. 2013-05-15]. Dostupné z: http://www.android-appmarket.com/android-architecture.html Android market: Oficiální výpis novinek, které přináší Android 4.1 Jelly Bean. Android market [online]. 2012 [cit. 2013-04-20]. Dostupné z: http://www.androidmarket.cz/android/oficialni-vypis-novinek-ktereprinasi-android-4-1-jelly-bean/ Distribute Apps. Android Developer [online]. 2010 [cit. 2013-05-15]. Dostupné z: http://developer.android.com/distribute/index.html Developer Tools. Android Developer [online]. 2010 [cit. 2013-05-15]. Dostupné z: http://developer.android.com/tools/index.html FAUSTUS, L. -- SKOCH, M. -- POLÍVKA, F. Botanický klíč : klíč k určování 1000 nejdůležitějších cévnatých rostlin. 2. vyd. Praha: SPN, 1984. 453 s. Pomocné knihy pro žáky. Key: Plant Families. Google Play [online]. 2012 [cit. 2013-05-15]. Dostupné z: https://play.google.com/store/apps/details?id=com.bim.key.plantfamily198& feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5iaW0ua2V5LnBsYW 50ZmFtaWx5MTk4Il0. URBÁNYAI, Miroslav. Programujeme pro Android. Praha: Grada Publishing, a.s., 2012. ISBN 978-80-247-2995-3. MURPHY, M L. Android 2 : průvodce programováním mobilních aplikací. 1. vyd. Brno: Computer Press, 2011. 375 s. ISBN 978-80-251-3194-7.
Literatura
45
UJBÁNYAI, M. Programujeme pro Android. Praha: Grada, 2012. 187 s. ISBN 978-80-247-3995-3. WA Conifers & Wildflowers Keys. DON ESTBERG. Google play [online]. 2012 [cit. 2013-04-19]. Dostupné z: https://play.google.com/store/apps/details?id=org.rtphapps.waplkey&feature =search_result
46
Přílohy
Přílohy
Diagram aktivit aplikace Botanický klíč
47
A Diagram aktivit aplikace Botanický klíč Na následujícím obrázku můžete vidět návaznost jednotlivých aktivit v aplikaci Botanický klíč.
Obr. 26
Propojení aktivit v aplikaci Botanický klíč
48
B Přiložené CD Přiložené CD obsahuje: Instalační soubor aplikace Botanický klíč Zdrojové kódy aplikace XML soubory uživatelského rozhraní aplikace
Přiložené CD