Na tomto míst¥ bude ociální zadání va²í práce
Toto zadání je podepsané d¥kanem a vedoucím katedry,
musíte si ho vyzvednout na studiijním odd¥lení Katedry po£íta£· na Karlov¥ nám¥stí,
v jedné odevzdané práci bude originál tohoto zadání (originál z·stává po obhajob¥ na kated°e),
ve druhé bude na stejném míst¥ neov¥°ená kopie tohoto dokumentu (tato se vám vrátí po obhajob¥).
i
ii
eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Mapový modul pro Android Ji°í K°íºek
Vedoucí práce:
Ing. Tomá² Novotný
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
25. kv¥tna 2011
iv
v
Pod¥kování Cht¥l bych pod¥kovat vedoucímu bakalá°ské práce Ing. Tomá²i Novotnému za odbornou pomoc a cenné rady p°i zpracovávání bakalá°ské práce.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Praze dne 25. 5. 2011
.............................................................
viii
Abstract The goal of this bachelor thesis was to design and implement a mobile application for Android mobile operating system which would allow to display raster maps by downloading them from the Internet or retrieving them from a local storage. Furthermore, the application allows to download, import, manage and nd information about selected places and show them on the map.
Abstrakt V rámci této bakalá°ské práce byla navrºena a implementována aplikace ur£ená pro mobilní opera£ní systém Android, která umoº¬uje zobrazovat rastrové mapy a to jak p°ímým stahováním z Internetu, tak i na£ítáním z lokálního úloºi²t¥. Dále aplikace umoº¬uje stahovat, importovat, spravovat a vyhledávat informace o místech a poté je na map¥ zobrazovat.
ix
x
Obsah 1 Úvod
1
1.1
Historie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Architektura systému Android . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
Vývoj pro Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3.1
Efektivní aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3.2
Verze systému Android . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Popis problému, specikace cíle
5
2.1
Specikace cíle
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Popis problému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3
Popis existujících implementací
2.4
2.5
. . . . . . . . . . . . . . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Mapy.cz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.1
Aplikace RMaps
2.3.2
Google Maps
2.3.3 2.3.4
MOBAC - Mobile Atlas Creator
. . . . . . . . . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Vyuºití Internetových zdroj· 2.4.1
Dostupnost mapových podklad·
2.4.2
Dostupnost POI
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
9
2.4.3
Vyuºití Google API pro fulltextové vyhledávání v mapách . . . . . . .
9
Literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3 Analýza a návrh °e²ení 3.1
3.2
3.4
11
Funk£ní a nefunk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.1.1
Funk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.1.2
Nefunk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Volba implementa£ního prost°edí 3.2.1
3.3
7
. . . . . . . . . . . . . . . . . . . . . . . . .
12
Vyuºití projekt· t°etích stran . . . . . . . . . . . . . . . . . . . . . . .
12
Diagramy p°ípad· uºití
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.1
UC: Prohlíºet mapy
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.2
UC: Editovat body zájmu . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.3.3
UC: Upravovat nastavení
. . . . . . . . . . . . . . . . . . . . . . . . .
14
. . . . . . . . . . . . . . . . . . . . . . . . . . .
14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
Rozd¥lení aplikace do aktivit 3.4.1
MainActivity
3.4.2
SearchActivity
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.4.3
SettingsActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
xi
xii
OBSAH
3.5
3.4.4
PoiActivity
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.4.5
ListActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.4.6
PoiEditActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.4.7
ImportActivity
3.4.8
CategoriesActivity
3.4.9
CategoryEditActivity
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Návrh databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.5.1
. . . . . . . . . . . . . . . . . .
17
3.5.1.1
Omezení velikosti soubor· v systému Android . . . . . . . . .
17
3.5.1.2
DB Splitter . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Databáze pro ukládání bod· zájmu . . . . . . . . . . . . . . . . . . . .
17
3.5.2
Databáze pro ukládání mapových dat
4 Realizace 4.1
16 16
19
Diagram t°íd
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1.1
Balík osm.andnav.osm . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.1.2
Balík net.extbrain.android.app.maps
. . . . . . . . . . . . . . . . . . .
21
4.1.3
Balík net.extbrain.android.app.maps.gui . . . . . . . . . . . . . . . . .
21
4.1.4
Balíky net.extbrain.android.app.maps.search a api.google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.1.5
Balík net.extbrain.android.app.maps.databases.scheme . . . . . . . . .
23
4.1.6
Balík net.extbrain.android.app.maps.poi . . . . . . . . . . . . . . . . .
23
4.1.7
Balík net.extbrain.android.app.maps.views.overlay
. . . . . . . . . . .
24
4.1.8
Balík net.extbrain.android.app.maps.views.util
. . . . . . . . . . . . .
25
4.2
Vyhledávání míst a bod· zájmu . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.3
Import map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.3.1
26
Získání balíku staºených map a jejich import do aplikace . . . . . . . .
5 Testování
29
5.1
Testování uºivatelského rozhraní
. . . . . . . . . . . . . . . . . . . . . . . . .
29
5.2
Funk£ní testování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5.2.1
29
Zp·sob a výsledky testování . . . . . . . . . . . . . . . . . . . . . . . .
6 Záv¥r
31
6.1
Zhodnocení spln¥ní cíl· BP
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2
Dal²í moºné pokra£ování práce
. . . . . . . . . . . . . . . . . . . . . . . . . .
31 31
A Seznam pouºitých zkratek
35
B UML diagramy
37
B.1
USE Case diagramy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C Instala£ní a uºivatelská p°íru£ka C.1
Instala£ní p°íru£ka
C.2
Uºivatelská p°íru£ka
37
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
D Obsah p°iloºeného DVD
43
Seznam obrázk· 1.1
Rozloºení verzí systému Android
2.1
Náhled aplikace RMaps
2.2
Náhled aplikace MOBAC
3.1
USE case diagram
3.2
Rozd¥lení aplikace do aktivit
. . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3
Databáze pro ukládání mapových dat (formát RMaps) . . . . . . . . . . . . .
18
3.4
Schéma databáze pro ukládání POI . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1
Diagram t°íd pro balík osm.andnav.osm
21
4.2
Diagram t°íd pro balík net.extbrain.android.app.maps (diagram je na pravé stran¥ o°íznut)
. . . . . . . . . . . . . . . . . . . . . . . . .
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.3
Diagram t°íd pro balík net.extbrain.android.app.gui . . . . . . . . . . . . . . .
22
4.4
Diagram t°íd pro balíky net.extbrain.android.app.maps.search a .api.google
23
4.5
Diagram t°íd pro balík net.extbrain.android.app.maps.databases.scheme
. . .
24
4.6
Diagram t°íd pro balík net.extbrain.android.app.maps.poi
. . . . . . . . . . .
24
4.7
Diagram t°íd pro balík net.extbrain.android.app.maps.overlay . . . . . . . . .
25
4.8
Diagram t°íd pro balík net.extbrain.android.app.maps.util
. . . . . . . . . . .
26
B.1
USE case diagram: Prohlíºet mapy
. . . . . . . . . . . . . . . . . . . . . . . .
37
B.2
USE case diagram: Editovat body zájmu . . . . . . . . . . . . . . . . . . . . .
38
B.3
USE case diagram: Upravovat nastavení
38
xiii
.
. . . . . . . . . . . . . . . . . . . . .
xiv
SEZNAM OBRÁZK
Seznam tabulek 1.1
Android - verze API
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5.1
Test Case 1: Prohlíºet mapy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
5.2
Test Case 2: Editovat body zájmu
. . . . . . . . . . . . . . . . . . . . . . . .
30
5.3
Test Case 3: Upravovat nastavení . . . . . . . . . . . . . . . . . . . . . . . . .
30
xv
xvi
SEZNAM TABULEK
Kapitola 1
Úvod Android je relativn¥ novou a rapidn¥ se rozvíjející softwarovou platformou, ur£enou p°edev²ím pro b¥h na mobilních za°ízeních. Softwarový balík Android se skládá z opera£ního systému zaloºeného na GNU/Linux, mezivrstev a klí£ových aplikací pro základní provoz za°ízení. [15]
1.1 Historie Vývoj platformy zahájila spole£nost Android, která byla v roce 2005 zakoupena spole£ností
Google. Google následn¥ inicioval vznik sdruºení rem Open Handset Aliance, jehoº £leny jsou krom¥ Googlu také dal²í spole£nosti p·sobící na poli mobilních za°ízení mobilní operáto°i, výrobci telefon· a elektroniky, softwarové spole£nosti. lenem OHA jsou nap°íklad spole£nosti HTC, Sony Ericsson, Intel, Motorola, Samsung, Sony, T-Mobile, NVIDIA,
Atheros nebo Qualcomm. [1]
1.2 Architektura systému Android Vývoj software pro Android probíhá p°edev²ím v programovacím jazyku Java. Nelze v²ak tvrdit, ºe vyuºívá standardy Java SE nebo Java ME. Android pouºívá vlastní virtuální stroj (virtual machine) nazvaný Dalvik, který vyuºívá registrov¥ orientovanou architekturu na rozdíl od zásobníkové Java Virtual Machine (JVM), dále vyuºívá knihoven projektu Apache Harmony
(http://harmony.apache.org/),
coº je Open Source implementace technologií
Java. D·sledkem tohoto °e²ení je nezávislost na p·vodních licencích spole£nosti Oracle, ale také ºaloby spole£nosti Oracle, jako vlastníka práv k platform¥ Java, za údajné poru²ování patent· v Androidu. Pro vývoj n¥kterých £ástí aplikací, jejichº odezva je kriticky d·leºitá (obvykle hry), je moºné vyuºívat Android NDK (Native Development Kit) a tyto kritické £ásti následn¥ implementovat v jazyku C/C++.
1
2
KAPITOLA 1.
ÚVOD
1.3 Vývoj pro Android 1.3.1
Efektivní aplikace
Vývoj pro mobilní aplikace má ur£itá specika a omezení - nap°íklad omezená rychlost a spolehlivost p°ipojení, omezená ºivotnost baterie a tedy nutnost minimalizovat výpo£etn¥ náro£né operace. Cílem tedy je snaºit se navrhnout co nejvíce efektivní aplikaci. Krom¥ pouºití efektivních algoritm· a postup· je vhodné neprovád¥t na
mobilním za-
°ízení práci, která není nezbytn¥ nutná a zbyte£n¥ nealokovat pam¥´ové prost°edky. Pro výkon je dále dle doporu£ení[14] vhodné:
static
Pouºívat
P°istupovat k £lenské prom¥nné p°ímo místo volání getter metod
Pro konstanty pouºívat
Up°ednost¬ovat pouºití typu
metody
static final int
p°ed typem
double
£i
float
Android SDK dále poskytuje nástroj TraceView, který umoº¬uje provád¥t efektivní prolování aplikace.
1.3.2
Verze systému Android
Vzhledem k velkému po£tu r·zných za°ízení, se kterými je systém Android kompatibilní, existuje relativn¥ mnoho za°ízení se zastaralou verzí systému. Aktualizaci systému totiº poskytuje výrobce za°ízení. P°ibliºné rozd¥lení verzí za°ízení p°istupujících do Android Marketu (m¥°eno od 18. 4. 2011 do 2. 5. 2011)[15] lze nalézt na obrázku 1.1 na stran¥ 3. S verzí systému souvisí také tzv. Android API Level, coº je p°irozené £íslo, které ur£uje verzi programového rozhraní, tedy metody a t°ídy, které m·ºe autor Android aplikace pouºívat, pokud chce zajistit, aby bylo moºné jeho aplikaci provozovat na za°ízení s danou verzí systému. Vztah API Levelu a verze platformy ukazuje tabulka 1.1 na stran¥ 3.
1.3.
3
VÝVOJ PRO ANDROID
Obrázek 1.1: Rozloºení verzí systému Android
Verze platformy Verze API Android 3.0
11
Android 2.3.3
10
Android 2.3
9
Android 2.2
8
Android 2.1
7
Android 2.0.1
6
Android 2.0
5
Android 1.6
4
Android 1.5
3
Android 1.1
2
Android 1.0
1
Tabulka 1.1: Android - verze API
4
KAPITOLA 1.
ÚVOD
Kapitola 2
Popis problému, specikace cíle Tato kapitola nejd°íve stru£n¥ specikuje cíl, kterého by m¥lo být v rámci práce dosaºeno, poté detailn¥ji popisuje, které problémy budou v rámci °e²eny a jaké podobné aplikace jsou k dispozici.
2.1 Specikace cíle Cílem této práce je implementovat mobilní aplikaci pro systém Android ur£enou pro prohlíºení rastrových map a to jak ze vzdáleného sí´ového, tak i z místního úloºi²t¥ (obvykle SD karty). Tato aplikace má zárove¬ umoº¬ovat importovat body zájmu (POI) z SD karty. Dále bude moºné POI spravovat (p°idávat, mazat, p°i°azovat do kategorií), vyhledávat v nich a zobrazovat je na map¥. P°ínosem aplikace je moºnost p°edem si uloºit mapové podklady a body zájmu na oine úloºi²t¥, u²et°it poplatky za datové p°enosy a zárove¬ moºnost vyuºívat mapy i v oblastech, kde není dostupná Internetová konektivita.
2.2 Popis problému D·leºitou vlastností výsledné aplikace je dostate£n¥ rychlá implementace vlastností aplikace, zejména na£ítání bod· zájmu a mapových dat. Uºivatelské rozhraní bude testováno s uºivateli. Sou£ástí práce je také dokumentace zdrojového kódu pomocí Javadoc. Aplikace je inspirována jiº existující aplikací pro Android s názvem RMaps [7] a je p°ipravena spolupracovat s multiplatformní desktopovou Java aplikací MOBAC [8], která umoº¬uje stahovat datové podklady pouºitelné v implementované aplikaci. Podrobnosti o zp·sobu spolupráce s aplikací MOBAC lze nalézt v £ásti 4.3 na stran¥ 26. Aplikace krom¥ vyuºívání Android API staví na knihovn¥ nazvané OSMDroid [11]. Knihovna OSMDroid poskytuje rozhraní pro vykreslování a interakci s mapovými podklady OpenStreetMap. Tato knihovna je bezplatnou a tém¥° plnou náhradou t°ídy Google
MapView.
5
6
KAPITOLA 2.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
2.3 Popis existujících implementací Tato kapitola zmi¬uje n¥kolik bezplatných aplikací pro Android, poslední £ást je v¥nována aplikaci MOBAC, která umoºnuje p°ípravu mapových podklad· pro oine pouºití.
2.3.1
Aplikace RMaps
Aplikace RMaps umoº¬uje zobrazovat a stahovat rastrová mapová data. Dokáºe prohlíºet mapy, lokalizovat umíst¥ní pomocí GPS senzoru a vyhledávat místa. Dále aplikace poskytuje kompas v£etn¥ otá£ení celé mapy. Do aplikace je moºné p°idávat vlastní body zájmu £i je importovat z Internetu. V poloºce
maps
je moºné zvolit mapový podklad, dále aplikace umoº¬uje zaznamenávat
pohyb a vytvá°et záznam trasy. Na obrázku £. 2.1 je snímek obrazovky z b¥ºící aplikace RMaps s datovým podkladem Mapnik z projektu OpenStreetMap. Aplikace zobrazuje n¥kolik bod· zájmu a má nastavenou rotaci mapy v závislosti na senzorech mobilního za°ízení (kompas). Více informací o OpenStreetMap lze najít v kapitole 2.4.1 na stran¥ 7.
2.3.2
Google Maps
Ociáln¥ podporovanou aplikaci Google Maps m·ºeme z technického hlediska povaºovat za jednu z nejlep²ích a nejpropracovan¥j²ích mapových aplikací pro systém Android. Vyuºívá akcelerovaného vykreslování pomocí OpenGL. Nevýhodou je nedostupnost na n¥kterých Android za°ízeních a nedostupnost oine map. Prohlédnuté mapy z·stávají v mobilním za°ízení uloºeny pro oine pouºití, nelze ale uloºit vybraný úsek mapy podobn¥ jako v RMaps.
2.3.3
Mapy.cz
V dubnu 2011 byla spole£ností Seznam vydána ociální aplikace pro Mapy.cz. Aplikace taktéº pro vykreslování vyuºívá OpenGL, a podobn¥ jako u Google Maps platí nutnost p°ipojení k Internetu pro prohlíºení map. B¥hem £ervence aº srpna 2011 by m¥la vyjít nová verze s podporou oine map[2]. Aplikace poskytuje velkou databázi bod· zájmu (vyuºitím zdroj· Seznamu.cz) a kvalitní mapové podklady pro oblast eské republiky.
2.3.4
MOBAC - Mobile Atlas Creator
MOBAC je open source program napsaný v programovacím jazyku Java, který umoº¬uje stahovat mapové podklady a vytvá°et z nich datové soubory s mapami pro GPS navigace a mobilní za°ízení. Tato aplikace podporuje velké mnoºství výstupních formát· soubor· pro mnoho platforem (Android, Windows Mobile/Pocket PC, OziExplorer, Garmin GPS navigace, Symbian...).
2.4.
VYUITÍ INTERNETOVÝCH ZDROJ
7
V nedávné dob¥ (duben 2011) byl autor aplikace donucen velké mnoºství podporovaných mapových zdroj· odstranit z d·vodu stíºností vlastník· mapových podklad·. V návaznosti na tento krok v²ak p°ibývají nové, voln¥ ²i°itelné zdroje map. Na obrázku £. 2.2 je snímek obrazovky ze star²í verze MOBACu (v1.8 RC 1)
2.4 Vyuºití Internetových zdroj· 2.4.1
Dostupnost mapových podklad·
Knihovna OSMDroid je schopna zobrazovat nejr·zn¥j²í mapové podklady rastrové graky. Existují voln¥ dostupné zdroje t¥chto mapových podklad·, nap°íklad projekt OpenStreetMap[10].
Obrázek 2.1: Náhled aplikace RMaps
8
KAPITOLA 2.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
Obrázek 2.2: Náhled aplikace MOBAC
Z technického hlediska je v²ak moºné vyuºívat i jakékoli jiné zdroje map (nap°. Google Maps, Microsoft Maps, a dal²í), otázkou v²ak z·stává, zda takové vyuºití není v rozporu s licencí t¥chto map. V sou£asné dob¥ v²ak není moºné pouºít podklady ze serveru
http://mapy.seznam.cz,
vzhledem k tomu ºe nepouºívají v²eobecn¥ pouºívané promítání
WGS84/Mercator, ale odli²né promítání WGS84/UTM-33 (Universal Transvers Mercator 33). Promítání ur£uje, jakým zp·sobem jsou p°epo£ítávány GPS sou°adnice (zem¥pisná ²í°ka v rozsahu -90° aº 90° a zem¥pisná délka v rozsahu -180° aº 180° ) na kladné sou°adnice
x a y.
Mapové podklady jsou potom na webovém serveru obvykle jako PNG soubory o £tvercové velikosti (nap°. 256
×
256 pixel·) uloºené nap°íklad na URL:
http://www.example.tld/zoom/x/y.png,
2.5.
LITERATURA
9
kde x a y jsou celo£íselné sou°adnice daného promítání a zoom je úrove¬ zoomu.
2.4.2
Dostupnost POI
Body zájmu má uºivatel moºnost stahovat z nejr·zn¥j²ích Internetových zdroj· a poté je do aplikace importovat. Bohuºel neexistuje ºádný jednotn¥ akceptovaný formát pro denici bod· zájmu. Nejroz²í°en¥j²í a v aplikaci podporované formáty jsou:
KML
http://code.google.com/apis/kml/
GPX
http://www.topografix.com/gpx.asp.
Oba tyto formáty jsou zaloºeny na XML.
2.4.3
Vyuºití Google API pro fulltextové vyhledávání v mapách
Aplikace umoº¬uje pomocí hardwarového tla£ítka Search, nebo pomocí poloºky v menu vyhledávat v místech poskytovaných pomocí The Google Geocoding API [4]
2.5 Literatura P°i vývoji se jako neocenitelná ukázala ociální dokumentace Google API [15], programátorský Q&A web StackOverow[6] a kniha Learning Android [3]
10
KAPITOLA 2.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
Kapitola 3
Analýza a návrh °e²ení Tato kapitola nejd°íve denuje funk£ní a nefunk£ní poºadavky pro implementovanou aplikaci. V dal²í sekci je zmín¥no vyuºití nástroj· a zdroj·, které byly vyuºity pro tvorbu této práce. Následující £ást se v¥nuje denici p°ípad· uºití. Poslední dv¥ £ásti této kapitoly se zabývají rozd¥lením aplikace do jednotlivých obrazovek a návrhem schémat databáze pro ukládání dat.
3.1 Funk£ní a nefunk£ní poºadavky 3.1.1
Funk£ní poºadavky
Pomocí aplikace bude moºné zobrazovat rastrové mapy
Mapy bude moºné na£ítat bu¤ z Internetu nebo z místního úloºi²t¥ (obvykle SD karty)
Aplikace bude umoº¬ovat na£ítání bod· zájmu ve formátu GPX a KML
Aplikace bude schopna zobrazovat body zájmu na map¥
Pomocí aplikace bude moºné p°idávat, editovat a mazat body zájmu a p°i°azovat body zájmu do kategorií
Pomocí aplikace bude moºné vyhledávat místa a body zájmu
V aplikaci bude moºné p°ejít na sou£asné umíst¥ní pomocí informace získané ze senzor· mobilního za°ízení (GPS)
3.1.2
Nefunk£ní poºadavky
Aplikace bude implementována pomocí programovacího jazyka Java a Android API
Aplikace bude provozována na mobilním opera£ním systému Android ve verzi minimáln¥ 2.2 (FroYo)
Zdrojový kód bude dokumentován pomocí JavaDoc
11
12
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
3.2 Volba implementa£ního prost°edí Jak vyplývá ze zadání a z poºadavk·, pro implementaci aplikace byl zvolen programovací jazyk Java a platforma Android. Aplikace byla vyvíjena pomocí IDE Eclipse (http://www.eclipse.org/) s nainstalo-
vaným dopl¬kem ADT Plugin for Eclipse (http://d.android.com/sdk/eclipse-adt.html). Zdrojový kód byl verzován pomocí distribuovaného systému správy verzí Mercurial (http://mercurial.selenic.com/). Pro tvorbu graf· byla vyuºita akademická licence aplikace Enterprise Architect.
A
Text je vysázen pomocí nástroje L TEX(http://www.latex-project.org/)
3.2.1
Vyuºití projekt· t°etích stran
Tato práce vyuºívá n¥které knihovny, nástroje nebo graku, které nejsou dílem autora práce:
Google Android API [15]
OSMDroid - OpenStreetMap-Tools for Android [11]
Google Maps icons [13]
FindIcons.com [5]
3.3 Diagramy p°ípad· uºití P°ípady uºití zachycují chování aplikace a ukazují tak vn¥j²í pohled na modelovaný systém. Diagram p°ípad· uºití by m¥l být srozumitelný nejen vývojá°·m, ale i zákazník·m, kte°í budou aplikaci pouºívat. Diagramy p°ípad· uºití pat°í mezi standardní diagramy jazyka UML (Unied Modeling Language). Vzhledem k povaze aplikace zde vystupuje jediný aktor -
Uºivatel.
USE Case diagramy se skládají z t°í hlavních £inností (viz diagram 3.1 na stran¥ 15):
Prohlíºet mapy Editovat body zájmu Upravovat nastavení 3.3.1
UC: Prohlíºet mapy
Detailní diagram najdete na obr. £. B.1 na stran¥ 37.
Scéná°
Uºivatel m·ºe prohlíºet mapy, posouvat a zv¥t²ovat a zmen²ovat zobrazovaný úsek mapy
3.3.
13
DIAGRAMY PÍPAD UITÍ
P°edpoklady
Uºivatel má spu²t¥nou aplikaci a je na hlavní obrazovce s mapou
Zobrazování bod· zájmu:
Pokud je tato moºnost v nastavení aktivována, uºivateli se
na map¥ zobrazují dostupné body zájmu
Nalezení aktuální pozice GPS:
Po stisknutí tla£ítka pro zji²t¥ní pozice se aplikace
pokusí získat aktuální pozici a p°esune st°ed mapy na toto místo
Nastavit výchozí umíst¥ní na map¥ po spu²t¥ní: Po zvolení této moºnosti v MENU se v aplikaci st°ed mapy a sou£asná úrove¬ zoomu uloºí jako výchozí pozice pro spu²t¥ní aplikace.
Zobrazení kompasu: Na map¥ se zobrazuje a aktualizuje ²ipka kompasu mí°ící na sever (na základ¥ informace poskytnuté senzory v mobilním za°ízení).
P°iblíºit/oddálit mapu: Po stisknutí p°íslu²ného tla£ítka dojde v p°ípad¥ dostupnosti dané úrovn¥ k p°iblíºení/oddálení mapy.
Vyhledávat místa:
Po stisknutí hardwarového tla£ítka pro vyhledávání nebo pomocí
MENU/Hledat místo dojde k zobrazení dialogu pro vyhledávání. Vyhledávání probíhá v bodech zájmu a v p°ípad¥ dostupnosti p°ipojení k Internetu také v Google API (viz kapitola 2.4.3 na stran¥ 9).
3.3.2
UC: Editovat body zájmu
Detailní diagram najdete na obr. £. B.2 na stran¥ 38
Scéná°
Uºivatel stiskne hardwarové tla£ítko pro MENU a zvolí poloºku POI
P°edpoklady
Uºivatel má spu²t¥nou aplikaci a je na obrazovce s mapou
Výsledek
Uºivateli se zobrazí seznam dal²ích moºností pro editaci bod· zájmu
Zobrazit seznam bod· zájmu:
Uºivateli se zobrazí seznam importovaných bod·
zájmu.
Importovat body zájmu:
Uºivatel má moºnost zvolit soubory pro import a zvolit
kategorii do které se budou poloºky v souboru importovat.
Spravovat kategorie bod· zájmu: kategorie.
Uºivatel má moºnost vytvá°et, editovat a mazat
14
KAPITOLA 3.
3.3.3
ANALÝZA A NÁVRH EENÍ
UC: Upravovat nastavení
Detailní diagram najdete na obr. £. B.3 na stran¥ 38
Scéná°
Uºivatel zvolí poloºku Nastavení
P°edpoklady
Uºivatel má spu²t¥nou aplikaci a je na obrazovce s mapou a má otev°ené MENU
nebo: Uºivatel má spu²t¥nou aplikaci, je v obrazovce POI
Výsledek
Uºivatelské nastavení se projeví v chování aplikace
Výb¥r zdroje map:
Uºivatel zvolí poloºku Zdroj map, zde zvolí zdroj map (Internet
nebo Databáze) a zvolí dal²í moºnosti pro mapu (typ mapy, cesta k map¥ apod.).
P°epnout zobrazování bod· zájmu: Uºivatel za²krtne/od²krtne moºnost Zobrazovat body zájmu
P°epnout zobrazování komponent:
Uºivatel za²krtne/od²krtne p°íslu²nou moºnost
3.4 Rozd¥lení aplikace do aktivit Sou£ásti Android API jsou v diagramech ozna£eny zelenou barvou. Dále jsou v diagramech vyzna£eny také n¥které XML soubory p°edev²ím soubory ur£ující rozloºení prvk· grackého rozhraní v rámci aplikace ty jsou vyzna£eny oranºovou barvou. Aktivity v rámci systému Android si m·ºeme p°edstavit jako jednotlivé samostatné obrazovky. Aktivita je taková t°ída, která d¥dí od t°ídy
android.app.Activity.
Diagram t°íd s
aktivitami najdete na obrázku 3.2 na stran¥ 16. Aktivita musí být dále deklarována v XML souboru
AndroidManifest.xml.
Následuje krátký popis jednotlivých aktivit.
3.4.1
MainActivity
Základní aktivita, která se spou²tí po spu²t¥ní aplikace. Obsahuje samotnou mapu, dále ovládací prvky a jednotlivé vrstvy, které mapu p°ekrývají (nap°íklad m¥°ítko, tla£ítka pro zoom, kompas a podobn¥).
3.4.2
SearchActivity
Zobrazuje výsledky vyhledávání v p°ípad¥ v¥t²ího mnoºství výsledk·. Výsledky vyhledávání jsou °azeny v závislosti na vzdálenosti od aktuálního umíst¥ní na map¥ v rámci aplikace.
3.4.
ROZD
LENÍ APLIKACE DO AKTIVIT
Obrázek 3.1: USE case diagram
3.4.3
SettingsActivity
Umoº¬uje nastavit aplikaci podle uºivatelských preferencí.
3.4.4
PoiActivity
Zobrazuje moºnosti týkající se bod· zájmu (POI).
3.4.5
ListActivity
Vypisuje body zájmu, které uºivatel importoval do aplikace.
15
16
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
Obrázek 3.2: Rozd¥lení aplikace do aktivit
3.4.6
PoiEditActivity
Umoº¬uje uºivateli editovat jednotlivé body zájmu.
3.4.7
ImportActivity
Umoº¬uje uºivateli importovat body zájmu.
3.4.8
CategoriesActivity
Tato aktivita slouºí k výpisu kategorií, které jsou v rámci databáze bod· zájmu vytvo°eny.
3.5.
17
NÁVRH DATABÁZE
3.4.9
CategoryEditActivity
Umoº¬uje uºivateli editovat vlastnosti kategorie.
3.5 Návrh databáze 3.5.1
Databáze pro ukládání mapových dat
Databáze pro ukládání mapových dat vyuºívá stejnou databázovou strukturu jako aplikace RMaps (obr. 18). D·vodem je moºnost vyuºít stejného exportního pluginu v rámci aplikace MOBAC.
3.5.1.1 Omezení velikosti soubor· v systému Android V systému Android se vyskytuje chyba, která neumoº¬uje £tení ze soubor· velikosti v¥t²í neº 2GB (£tení za hranicí této velikosti selºe) [9]. Z toho d·vodu je v rámci aplikace implementována schopnost sou£asn¥ procházet n¥kolik databázových soubor· ve stejném adresá°i. Zárove¬ je moºné vyuºít jednoduchého nástroje
dbsplitter, který je sou£ástí práce.
3.5.1.2 DB Splitter Jedná se o jednoduchý nástroj, který byl implementován v rámci bakalá°ské práce. Tento nástroj lze nalézt na p°iloºeném DVD. Soubor je ve formátu jar (Java Archive) a lze jej tedy spustit na jakékoli platform¥ s nainstalovaným prost°edím Java SE. Nástroj vyuºívá knihovny sqlitejdbc-v056 (http://www.zentus.com/sqlitejdbc/.
$ java -jar dbsplitter.jar Usage: dbsplitter [-v] [file=filename]
P°epína£
-v
poskytne detailn¥j²í výpis o £innosti nástroje.
Vstupním souborem (parametr
file=filename)
je sqlite soubor vygenerovaný ap-
likací MOBAC. Jako výstup je poskytnut adresá°, který je moºné umístit na SD kartu mobilního za°ízení (výchozím umíst¥ním je cesta
/mnt/sdcard/osmdroid/databases/,
název vloºeného adresá°e je potom v rámci aplikace prezentován jako název mapy.
3.5.2
Databáze pro ukládání bod· zájmu
Databáze obsahující body zájmu se skládá z n¥kolika tabulek, viz diagram na obr. 3.4 (str. 18) P°i implementaci se nabízelo pouºití cizích klí£·
(FOREIGN KEY).
Ve výchozí konguraci v²ak jsou cizí klí£e vypnuty a je t°eba je p°i kaºdém otev°ení databáze zapnout[12]. Podpora pro cizí klí£e navíc v SQLite existuje aº od verze 3.6.19, coº znamená, ºe je moºné je vyuºívat aº ve verzi Android 2.2 (API Level 8), viz tabulka £. 1.1 na stran¥ 3. Z tohoto d·vodu se tedy kontrola provádí na úrovni zdrojového kódu.
18
KAPITOLA 3.
ANALÝZA A NÁVRH EENÍ
Obrázek 3.3: Databáze pro ukládání mapových dat (formát RMaps)
Obrázek 3.4: Schéma databáze pro ukládání POI
Kapitola 4
Realizace Tato kapitola se zabývá popisem realizace implementované aplikace. V první £ásti je moºné se seznámit s návrhem aplikace a jednotlivých t°íd, druhá £ást popisuje zp·sob vyhledávání v místech a bodech zájmu a poslední £ást popisuje import map pro oine pouºití.
4.1 Diagram t°íd osm.andnav.osm jsou pro zjednodu²ení obsaºeny i vno°ené balíky (nap°íklad t°ída OpenStreetMapOverlay v balíku org.andnav.osm.views.overlay je v diagramu ozna£ena jako t°ída s názvem views.overlay.OpenStreetMapViewOverlay v balíku osm.andnav.osm). V rámci balíku
Diagram t°íd je vzhledem ke svému rozsahu rozd¥len na n¥kolik men²ích obrázk·. Celý diagram ve vysokém rozli²ení je moºné najít na p°iloºeném DVD (viz p°íloha D na stran¥ 43 a p°iloºené DVD). Diagram obsahuje n¥kolik balík· (packages):
org.andnav.osm
- Kód p°evzatý z projektu OSMDroid, £áste£n¥ modikován.
org.metalev.multitouch.controller - Kód z projektu OSMDroid, v rámci projektu OSMDroid p°evzatý od jiného autora
net.extbrain.android.app.maps
- Hlavní balík aplikace
net.extbrain.android.app.maps.gui
- Balík obsahující t°ídy související s uºivatel-
ským rozhraním
net.extbrain.android.app.maps.search
- Balík obsahující t°ídy související s vyh-
ledáváním bod· na map¥
net.extbrain.android.app.maps.api.google
- Balík obsahující t°ídy související s
vyhledáváním pomocí Google Location API
net.extbrain.android.app.maps.databases.scheme - Balík obsahující t°ídy s denicí názv· tabulek v databázi
19
20
KAPITOLA 4.
REALIZACE
net.extbrain.android.app.maps.poi - Balík obsahující t°ídy související s body zájmu
.categories - kategorie bod· zájmu .edit - editace bod· zájmu .gpx - import soubor· typu gpx .importPkg - import bod· zájmu .kml - import soubor· typu kml .list - výpis bod· zájmu net.extbrain.android.app.maps.views.overlay - jednotlivé vrstvy, které se vykreslují p°es mapu
net.extbrain.android.app.maps.views.util - t°ídy související p°edev²ím s na£ítáním map z databáze
Je d·leºité zmínit, ºe diagram zcela neodpovídá kódu, n¥které t°ídy, metody £i atributy byly v zájmu zjednodu²ení diagramu vynechány.
4.1.1
Balík osm.andnav.osm
Diagram lze najít na obr. 4.1 na stran¥ 21 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Nejd·leºit¥j²í sou£ástí je t°ída
views.OpenStreetMapView,
která zaji²´uje zobrazování
jednotlivých overlay, tedy vrstev na map¥. Jedním z atribut· t°ídy je t°ída
views.OpenStreetMapViewController, na které je moºné volat metody pro ovládání mapy. Operaci zoomování je moºné provést také pomocí multitouch gesta. Samotné vykreslování mapy je závislé na implementaci interface
views.util.IOpenStreetMapRendererInfo. Ta je implementována t°ídou OpenStreetMapRendererBase která denuje nap°íklad velikost jednotlivých
mapových £ástí
(tiles), velikost maximálního a minimálního zoomu (zv¥t²ení mapy). Tato t°ída dále implementuje (v rámci BP nov¥ p°idané) rozhraní
IMagnifyable,
které umoº¬uje digitální
²kálování mapy. Obrázek bude v takovém p°ípad¥ zv¥t²en, to m·ºe zp·sobit sníºenou kvalitu výsledného obrazu, umoºní to v²ak uºivateli vid¥t na malém displayi detailn¥j²í pohled i v p°ípad¥ nedostupnosti v¥t²ího zoomu).
views.overlay.OpenStreetMapTilesOverlay. views.overlay.ScaleBarOverlay zobrazující m¥°ítko.
Základní vrstvou je samotná mapa ve t°íd¥ Sou£ástí knihovny je také t°ída
Na£ítání jednotlivých mapových £ástí (tiles) probíhá asynchronn¥ pomocí t°ídy
tileprovider.OpenStreetMapAsyncTileProvider ve vláknech (threads). Mapové £ásti jsou p°ipravovány v rámci t°ídy tileprovider.TileLoader implementující rozhraní java.lang.Runnable.
4.1.
21
DIAGRAM TÍD
Obrázek 4.1: Diagram t°íd pro balík osm.andnav.osm
4.1.2
Balík net.extbrain.android.app.maps
Diagram lze najít na obr. 4.2 na stran¥ 22 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Jak jiº bylo zmín¥no, hlavní aktivita aplikace je t°ída obsahuje vrstvu
MyLocationOverlay,
MainActivity.
Hlavní balík dále
která v p°ípad¥ aktivního sledování pozice udrºuje
st°ed mapy na aktuálním umíst¥ní dle senzor· mobilního za°ízení. Dal²í aktivitou je t°ída
SearchActivity
prezentující výsledky vyhledávání a t°ída
SettingsActivity
umoº¬ující
konguraci aplikace. Vno°ená t°ída
4.1.3
SwitchMapTask
zaji²´uje p°epnutí mapy po zm¥n¥ nastavení aplikace.
Balík net.extbrain.android.app.maps.gui
Diagram lze najít na obr. 4.3 na stran¥ 22 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Tento balík obsahuje zejména prvky související s grackým uºivatelským rozhraním
ZoomInButton, ZoomOutButton a LocateButton d¥dí od abstraktní t°ídy AbstractOnMapButton. Tla£ítka se totiº li²í jen grackou reprezentací, provád¥nou akcí
(GUI). T°ídy
a
umíst¥ním na displayi mobilního za°ízení. Dal²í t°ídou v tomto balíku je jednoduchá t°ída
DismissListener,
která má za úkol
jedinou v¥c - nechat zmizet dialog a neprovád¥t ºádnou dal²í akci. Toto je £astý úkon na mnoha místech v aplikaci p°i zobrazení dialogu s upozorn¥ním a je tak moºné vyhnout se anonymním t°ídám.
22
KAPITOLA 4.
REALIZACE
Obrázek 4.2: Diagram t°íd pro balík net.extbrain.android.app.maps (diagram je na pravé stran¥ o°íznut)
Obrázek 4.3: Diagram t°íd pro balík net.extbrain.android.app.gui
4.1.
23
DIAGRAM TÍD
4.1.4
Balíky net.extbrain.android.app.maps.search a api.google
Diagram lze najít na obr. 4.4 na stran¥ 23 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
.search pat°í t°ídy související s vyhledáváním. T°ída Place reprezentuje místo na map¥. Tato t°ída je roz²í°ena t°ídou GooglePlace v balíku .api.google, do které je moºné Do balíku
ukládat dal²í informace poskytované pomocí Google API. T°ída
SuggestionProvider poskytuje nápov¥du pro naposledy hledané poloºky. Zárove¬
prohledává body zájmu a nabízí takové body, které vyhovují vyhledávanému názvu. Po zvolení takového bodu je uºivatel p°enesen p°ímo na místo na map¥ s hledaným bodem zájmu. T°ída
SearchDistanceComparator
slouºí k porovnávání a °azení vyhledávaných míst,
coº je t°eba pro zobrazení seznamu míst v závislosti na vzdálenosti od st°edu mapy.
Obrázek 4.4: Diagram t°íd pro balíky net.extbrain.android.app.maps.search a .api.google
4.1.5
Balík net.extbrain.android.app.maps.databases.scheme
Diagram lze najít na obr. 4.5 na stran¥ 24 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Tyto dv¥ t°ídy obsahují konstanty, které ur£ují názvy poloºek v databázi.
4.1.6
Balík net.extbrain.android.app.maps.poi
Diagram lze najít na obr. 4.6 na stran¥ 24 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Balík
.poi
a vno°ené balíky obsahují t°ídy týkající se bod· zájmu. Skládá se p°eváºn¥
z aktivit obsluhujících uºivatelské rozhraní pro p°idávání, import a editaci bod· zájmu (PoiActivity, Dal²í
ImportActivity, PoiEditActivity, CategoryEditActivity a CategoriesActivity). rozsáhlej²í poloºkou jsou t°ídy PoiImporter, GpxHandler a KmlHandler, starající
se o import bod· zájmu z XML soubor·. Experimentální poloºkou je moºnost stahovat body zájmu z Wikipedie pomocí t°ídy
WikipediaGeonamesHandler.
24
KAPITOLA 4.
REALIZACE
Obrázek 4.5: Diagram t°íd pro balík net.extbrain.android.app.maps.databases.scheme
T°ída
PoiDatabase
slouºí k na£ítání bod· v okolí st°edu mapy z databáze.
Obrázek 4.6: Diagram t°íd pro balík net.extbrain.android.app.maps.poi
4.1.7
Balík net.extbrain.android.app.maps.views.overlay
Diagram lze najít na obr. 4.7 na stran¥ 25 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
Aplikace obsahuje n¥kolik t°íd poskytujících vrstvu zobrazující se nad zobrazovanou mapou. Jedná se o vrstvu
CompassOverlay
zobrazující gracký kompas, který signalizuje
PoiOverlay obsluhující zoSearchResultOverlay, která zobrazuje výsledky vyhledávání.
sou£asnou polohu mobilního za°ízení z jeho senzor·, dále o vrstvu brazování bod· zájmu a t°ídu
4.2.
VYHLEDÁVÁNÍ MÍST A BOD ZÁJMU
25
Obrázek 4.7: Diagram t°íd pro balík net.extbrain.android.app.maps.overlay
4.1.8
Balík net.extbrain.android.app.maps.views.util
Diagram lze najít na obr. 4.8 na stran¥ 26 nebo ve v¥t²ím rozli²ení na p°iloºeném DVD.
views.util zodpovídají za na£ítání obrázk· z databáze (AsyncLoadDbTile), IMagnifyable). rozhraní IMagnifyable byla p°idána i k t°íd¥ OpenStreetMapRendererBase z
T°ídy v balíku
dále p°idávají moºnost digitálního zv¥t²ení zobrazovaných dat (rozhraní Implementace
p·vodní knihovny OSMDroid.
4.2 Vyhledávání míst a bod· zájmu Vyhledávání pomocí The Google Geocoding API [4] poskytuje výsledky pro vyhledávání míst po celém sv¥t¥. Proto jsou výsledky vyhledávání °azeny podle vzdálenosti od st°edu mapy. Aktivita, která zobrazuje výsledky vyhledávání byla modikována tak, aby zobrazovala co nejvíce moºných informací o vyhledaných bodech (sm¥r, název, vzdálenost, popis). P°i vyhledávání jsou dále p°i psaní dotazu nabízeny body zájmu z místní databáze, které vyhovují danému dotazu. Jsou nabízeny:
Body zájmu, jejichº název za£íná vyhledávaným názvem.
P°íklad:
Vyhledávám slovo Pr , jsou nabízeny body Praha, Prachatice, Protivín atd.
V p°ípad¥, ºe výsledkem p°edchozího vyhledávání nejsou ºádné poloºky, jsou nabízeny body zájmu, které dotaz obsahují kdekoliv ve vyhledávaném výrazu.
P°íklad:
Vyhledávám slovo Pre , jsou nabízeny body Hotel Prestige, Restaurace Ko-
pretina, Cafe Espresso atd.
26
KAPITOLA 4.
REALIZACE
Obrázek 4.8: Diagram t°íd pro balík net.extbrain.android.app.maps.util
4.3 Import map 4.3.1
Získání balíku staºených map a jejich import do aplikace
Následuje postup staºení mapových podklad· pomocí aplikace MOBAC v poslední stabilní verzi (MOBAC 1.9 beta 5, staºeno 23. 5. 2011 z
http://mobac.sourceforge.net/).
Postup v nov¥j²ích i star²ích verzích je obdobný.
Po spu²t¥ní Mobile Atlas Creator.exe se zobrazí okno Settings for new Atlas
Zadáme poºadovaný název atlasu do poloºky Name of the new atlas: . V poloºce Please select the desired atlas format zvolíme RMaps SQLite.
V levé £ásti okna zvolíme libovolný mapový podklad v rozbalovacím menu Map
source
V poloºce Zoom Levels zvolíme hodnoty zoomu, které poºadujeme stáhnout
V hlavní £ásti obrazovky na map¥ vybereme jednu nebo více oblastí ke staºení
V £ásti Atlas Content zadáme jméno na²eho výb¥ru V p°ípad¥ pot°eby p°idáme dal²í výb¥r pomocí tla£ítka New
Stiskem tla£ítka Settings m·ºeme m¥nit nastavení aplikace (nap°íklad nastavit proxy server pro stahování).
4.3.
Stiskem tla£ítka Create atlas spustíme vytvá°ení atlasu. Tento proces m·ºe být v závislosti na zvolené velikosti atlasu velmi £asov¥ náro£ný. Atlas bude vytvo°en v adresá°i p°íponu
27
IMPORT MAP
.sqlitedb
./atlases/ vzhledem k exe souboru. Soubor bude mít
V p°ípad¥, ºe bude mít soubor velikost p°esahující 2GB, rozd¥líme soubor pomocí nástroje DB splitter (viz 3.5.1.2 na stran¥ 17)
28
KAPITOLA 4.
REALIZACE
Kapitola 5
Testování Tato kapitola se v¥nuje testování aplikace z hlediska uºivatelského rozhraní a funk£ních test·.
5.1 Testování uºivatelského rozhraní Po celou dobu vývoje se provád¥lo uºivatelské testování nové funkcionality. Aplikace byla testována zejména studenty VUT FEL, nedostatky byly pr·b¥ºn¥ odstra¬ovány. Vyskytovaly se zejména následující problémy:
Ob£asné pády aplikace zp·sobené neexistencí odpovídajících zdroj· v XML souborech.
P°i vývoji byl £astý problém s nefunk£ností aktivity po jejím p°idání do aplikace. Kaºdá aktivita musí být p°idána do souboru
AndroidManifest.xml
N¥kolik uºivatel· se snaºilo vyuºívat pro zoom na map¥ pomocí gest (multitouch ), proto byla tato moºnost do aplikace p°idána.
Uºivatelé, kte°í nejsou zvyklí pouºívat systém Android m¥li problémy s vyuºitím HW tla£ítek (MENU, BACK a FIND ).
Omezené mnoºství informace, které lze na displayi zobrazovat. Poloºky umíst¥ny v MENU. P°idáno upozorn¥ní do záhlaví aktivity.
5.2 Funk£ní testování Testovací p°ípady (Test Case) pro ú£ely funk£ního testování byly sestaveny pomocí p°ípad· uºití z kapitoly 3.3 na stran¥ 12.
5.2.1
Zp·sob a výsledky testování
Celá aplikace byla vyvíjena a testována na za°ízení HTC Desire. V za°ízení byla nainstalována platforma Android 2.2 a pozd¥ji Android 2.3 (CyanogenMod 7 Testovací p°ípady prob¥hly na testovacím hardware bez problém·.
29
www.cyanogenmod.com).
30
Akce
KAPITOLA 5.
Podmínky testu:
TESTOVÁNÍ
Test Case 1: Prohlíºet mapy Uºivatel má spu²t¥nou aplikaci a je na hlavní obrazovce s mapou
O£ekávaný výsledek
Pohybem prstu po displayi posu¬te mapu
Dojde k posunu mapy, p°ípadn¥ se na£ítají chyb¥jící mapové podklady
Stiskn¥te tla£ítko pro ur£ení polohy
Dojde k posunu mapy na aktuální umíst¥ní
v pravém horním rohu obrazovky
nebo k zobrazení hlá²ky informující o chyb¥
Zvolte MENU/Nastavit jako výchozí umíst¥ní
P°i p°í²tím spu²t¥ní aplikace se p°enesete na sou£asný st°ed mapy
Stiskn¥te tla£ítko pro zv¥t²ení mapy
Pokud je tla£ítko aktivní, dojde k p°iblíºení mapy
Stiskn¥te tla£ítko pro zmen²ení mapy
Pokud je tla£ítko aktivní, dojde k oddálení mapy
Stiskn¥te hardwarové tla£ítko SEARCH a napi²te vyhledávané místo
Dojde k nalezení bodu zájmu nebo místa
Tabulka 5.1: Test Case 1: Prohlíºet mapy
Podmínky testu: Akce
Test Case 2: Editovat body zájmu Uºivatel má spu²t¥nou aplikaci a je na hlavní obrazovce s mapou
O£ekávaný výsledek
Stiskn¥te tla£ítko MENU a zvolte POI
Zobrazí se seznam dal²ích moºností
Zvolte moºnost Import nových POI
Zobrazí se obrazovka se soubory pro import nebo informace o neexistenci soubor· k importu
Stiskn¥te tla£ítko BACK
Jste na obrazovce se seznamem moºností
Zvolte Správa kategorií
Zobrazí se seznam kategorií obsahující minimáln¥ poloºku default
Tabulka 5.2: Test Case 2: Editovat body zájmu
Akce
Podmínky testu:
Test Case 3: Upravovat nastavení Uºivatel má spu²t¥nou aplikaci a zvolil poloºku MENU/Nastavení
O£ekávaný výsledek
Uºivatel provede zm¥nu zdroje map
Uºivatel dostane chybovou hlá²ku, nebo je
a vrátí se na hlavní obrazovku
mapa nastavena
Uºivatel vypne/zapne zobrazování bod· zájmu
Uºivatel pomocí vyhledávání najde libovolný
a vrátí se na hlavní obrazovku
bod zájmu a ten se zobrazí jako ikonka na map¥
Uºivatel vypne/zapne zobrazení kompasu
Kompas je na hlavní obrazovce zobrazen/skryt
Uºivatel vypne/zapne zobrazení m¥°ítka
M¥°ítko je na hlavní obrazovce zobrazeno/skryto
Tabulka 5.3: Test Case 3: Upravovat nastavení
Kapitola 6
Záv¥r 6.1 Zhodnocení spln¥ní cíl· BP Cílem této práce bylo implementovat dostate£n¥ efektivní mobilní aplikaci pro prohlíºení rastrových map ur£enou pro opera£ní systém Android. Aplikace je schopna importovat, zobrazovat a vyhledávat body zájmu na map¥, p°idání dal²ích podporovaných formát· by nem¥lo £init v¥t²í obtíºe. Uºivatelské rozhraní bylo v pr·b¥hu práce testováno uºivateli, kte°í p°inesli mnoho p°ínosných p°ipomínek. Za ú£elem dokumentace byly vytvo°eny UML diagramy pro získání p°ehledu o implementaci aplikace a zdrojový kód je dále podrobn¥ dokumentován pomocí softwarové pom·cky JavaDoc. Dle mého názoru byl cíl práce byl napln¥n. Výsledná aplikace podporuje v²echny vlastnosti, které byly sou£ástí zadání. P°esto je t°eba podotknout, ºe aplikace je teprve v rané fázi vývoje, lze najít spoustu vlastností, které by bylo moºné upravit, vylep²it nebo roz²í°it.
6.2 Dal²í moºné pokra£ování práce Dal²í sm¥r, kterým by se vývoj aplikace mohl vyvíjet, je p°idání podpory pro jinou projekci, nap°íklad pro jiº zmín¥né mapové podklady Seznamu (http://mapy.cz/). Stahování bod· zájmu z Internetových zdroj· nevykazovalo p°i sou£asném posouvání mapy p°íli² dobré výsledky, aplikace m¥la zpomalenou odezvu, coº je pravd¥podobn¥ zp·sobeno náro£ností parsování XML soubor· a velkým mnoºstvím provád¥ných alokací objekt· a b¥hu Garbage collectoru. Vývoj knihovny Osmdroid, na které tato práce staví, prochází neustálým vývojem. Bylo by proto vhodné v p°ípad¥ dal²ího vývoje aplikace vyuºít aktuáln¥j²í verzi této knihovny. Modikace p·vodního kódu knihovny byly z tohoto d·vodu provád¥ny zcela minimáln¥ a proto by se nem¥lo jednat o obtíºný úkol. Bylo by v²ak nutné d·kladn¥ testovat zda nedo²lo k n¥jakým skrytým problém·m. Jedním z dal²ích bod· by mohlo být roz²í°ení podpory pro niº²í verze platformy neº Android 2.2. Zajímavým nám¥tem pro dal²í pokra£ování práce by bylo p°epsat kód pro vykreslování map do akcelerovaného prost°edí OpenGL, které je v rámci Android API podporováno.
31
32
KAPITOLA 6.
ZÁV
R
Literatura [1] OpenHandSet Alliance
[online]. [cit. stav z 9. 5. 2011].
Dostupné z:
openhandsetalliance.com/. [2] Filip
K·ºel,
Jan
Láska.
http://www.
Mobilní Mapy.cz: £eská premiéra na MobilManii
line]. [cit. 23. 5. 2011]. Dostupné z:
default.aspx.
[on-
http://mobilmania.cz/clanky/sc-3-a-1316025/
[3] GARGENTA, M. Learning Android.
1. 1005 Gravenstein Highway North, Sebastopol,
CA 95472 : O'Reilly Media, Inc., 1th edition, 2011. [4] GOOGLE.
The Google Geocoding API [online]. [cit. 8. 5. 2011].
Dostupné z:
//code.google.com/apis/maps/documentation/geocoding/.
http:
[5] MOMENTICONS. FindIcons.com, vyhledáva£ ikon zdarma, licence Creative Commons
Attribution (by) [online]. [cit. 12. 4. 2011]. Dostupné z:
pin.
http://findicons.com/search/
[6] P°isp¥vatelé Stack Overow. Stack Overow [online]. 2011. [cit. 21. 5. 2011]. Dostupné z:
http://stackoverflow.com/.
[7] Robert Developer. RMaps [online]. [cit. 1. 11. 2010]. Dostupné z:
com/p/rmaps/. [8] R_X.
Mobile Atlas Creator [online]. [cit. 1. 11. 2010].
http://code.google.
Dostupné z:
sourceforge.net/.
http://mobac.
[9] R·zní auto°i. [android-porting] FAT32 le size limited to 2GB [online]. [cit. 15. 11. 2010].
http://www.mail-archive.com/
[email protected]/ msg09736.html. Dostupné z:
[10] R·zní auto°i. Open Street Map, . Dostupné z:
http://openstreetmap.org/.
[11] R·zní auto°i. OSMDroid [online]. [cit. 15. 11. 2010]. Dostupné z:
com/p/osmdroid/.
http://code.google.
[12] R·zní auto°i. SQLite Foreign Key Support [online]. [cit. 1. 5. 2011]. Dostupné z:
//www.sqlite.org/foreignkeys.html#fk_enable.
http:
[13] STASIAK, M. MOLLET, N. THIERRY, M. Google Maps Icons - More than 1000
free and descriptive map POI markers, icons, for your maps [online].
http://code.google.com/p/google-maps-icons/.
33
Dostupné z:
34
LITERATURA
[14] Vývojá°i [cit.
Android.
20. 5. 2011].
performance.html. [15] Vývojá°i Google.
Android Dostupné
z:
Developers:
Designing
for
Performance
Android Developers [online]. [cit. 25. 5. 2011].
//d.android.com/.
[online].
http://d.android.com/guide/practices/design/ Dostupné z:
http:
P°íloha A
Seznam pouºitých zkratek GPS
Global Positioning System
GPX
GPS Exchange Format
JVM
Java Virtual Machine
KML
Keyhole Markup Language
POI
Point of Interest - body zájmu
PNG
Portable Network Graphics
SDK
Software development kit
UC
Use Case
XML
Extensible Markup Language
35
36
PÍLOHA A.
SEZNAM POUITÝCH ZKRATEK
P°íloha B
UML diagramy B.1 USE Case diagramy
Obrázek B.1: USE case diagram: Prohlíºet mapy
37
38
PÍLOHA B.
UML DIAGRAMY
Obrázek B.2: USE case diagram: Editovat body zájmu
Obrázek B.3: USE case diagram: Upravovat nastavení
P°íloha C
Instala£ní a uºivatelská p°íru£ka C.1 Instala£ní p°íru£ka Aplikace byla vyvíjena a testována na mobilním telefonu HTC Desire. V za°ízení byla nainstalována platforma Android 2.2 a pozd¥ji Android 2.3, CyanogenMod 7 (http://cyanogenmod.com). Implementovaná aplikace by m¥la fungovat na jakémkoliv Android mobilním za°ízením s verzí alespo¬ 2.2.
src/ build/.
Zdrojové kódy jsou umíst¥ny v adresá°i soubor typu APK najdete v adresá°i
na p°iloºeném DVD, samotný instala£ní
Postup instalace aplikace do mobilního za°ízení Android
Povolte instalaci APK soubor·: Menu/Nastavení/Aplikace/Neznámé zdroje (Povoluje
instalaci aplikací, které nepocházejí ze sluºby Market.)
Nakopírujte APK soubor do za°ízení (nap°íklad p°ipojením SD karty jako USB mass
storage.
Najd¥te pomocí správce soubor· APK soubor a spus´te jej.
Aplikace by m¥la být nainstalována a dostupná v seznamu aplikací pod názvem
Maps.
C.2 Uºivatelská p°íru£ka Aplikace vytvo°ená v rámci této bakalá°ské práce slouºí k prohlíºení map. Obsahuje podporu vyhledávání a zobrazování bod· zájmu. Po spu²t¥ní aplikace se zobrazí mapa zobrazující celou eskou republiku. V titulku okna m·ºeme vid¥t název sou£asn¥ prohlíºené mapy (p°i prohlíºení online map lze zm¥nit aktuáln¥ pouºívanou mapu), v pravé £ásti následn¥ najdeme velikost aktuálního p°iblíºení. ím v¥t²í úrove¬ p°iblíºení máme aktivovanou, tím men²í £ást mapy m·ºeme vid¥t.
39
40
PÍLOHA C.
INSTALANÍ A UIVATELSKÁ PÍRUKA
Popis hlavní obrazovky V levém horním druhu mapy vidíme kompas a m¥°ítko.
Tla£ítko pro vyhledání pozice Na pravé stran¥ je k dispozici tla£ítko, jehoº aktivací dojde k pokusu o zam¥°ení sou£asné pozice mobilních za°ízení. V p°ípad¥ úsp¥chu se toto tla£ítko zbarví mod°e a snaºí se udrºovat aktuální pozici. Toto je indikováno modrou ikonkou v rámci tla£ítka. Poslední známá pozice je indikována na map¥ pomocí modrého ²pendlíku a kruºnice indikující p°esnost zji²t¥né GPS pozice. V p°ípad¥ ºe dojde k posunu mapy nebo op¥tovnému stisku tla£ítka, sledování pozice se deaktivuje a lze jej op¥t aktivovat stiskem tla£ítka. pendlík je moºné skrýt pomocí HW tla£ítka BACK, sledování pozice z·stane zapnuto. Zbývá upozornit, ºe sledování pozice závisí na p°esnosti a dostupnosti GPS signálu, které m·ºe být znehodnoceno polohou uvnit° budovy apod. V p°ípad¥ nedostupnosti GPS signálu se aplikace pokusí zjistit polohu pomocí polohy dle mobilních vysíla£·, tato poloha se od skute£né polohy m·ºe li²it aº o n¥kolik kilometr·.
Zm¥na p°iblíºení mapy Úrove¬ p°iblíºení (zoomu) mapy lze m¥nit pomocí tla£ítek
+ a - v dolní £ásti obrazovky.
Dal²í moºností zm¥ny p°iblíºení je pouºití metody multitouch v p°ípad¥, ºe tuto funkci va²e za°ízení podporuje. Dotkn¥te se dv¥ma prsty obrazovky a p°ibliºujte nebo oddalujte prsty od sebe, tím by se m¥la spustit animace zm¥ny p°iblíºení mapy.
Body zájmu na map¥ Na map¥ se zobrazují ikony s body zájmu. Dotykem na ikonu se zobrazí popis, dotykem kamkoliv na obrazovku p°i zobrazené bublin¥ se popis skryje. Dlouhým dotykem na ikonu je moºné bod zájmu editovat.
Popis menu Stisknutím HW tla£ítka MENU vyvoláte zobrazení menu s moºnostmi. K dispozici je n¥kolik poloºek, které zde budou popsány:
Nastavit jako výchozí místo Nastaví sou£asný st°ed mapy jako výchozí bod. P°i p°í²tím spu²t¥ní aplikace budete p°esunuti na toto místo. Aplikace eviduje toto nastavení odd¥len¥ pro online mapu a oine mapu.
C.2.
UIVATELSKÁ PÍRUKA
41
Hledat místo Vyvolá stejnou nabídku vyhledávání, jako hardwarové tla£ítko SEARCH. Zadejte text který chcete vyhledat a vyuºijte nápov¥du hledaných míst, nebo se dotkn¥te symbolu lupy pro vyhledání místa.
Lupa Umoºní digitáln¥ zv¥t²it a zmen²it mapu.
Nastavení P°enese uºivatele do nastavení aplikace
Ukon£it Ukon£í aplikaci
POI Umoº¬uje spravovat body zájmu.
Nastavení Umoºnuje nastavovat chování aplikace.
Zdroj map V poloºce Zdroj map lze nastavit
Zdroj map: Internet (na£ítání dat pomocí datového p°ipojení) nebo Databáze (na£ítání z databáze umíst¥né na SD kart¥)
Cesta k adresá°i:
Cesta k adresá°i s databázovými soubory
Výb¥r adresá°e:
Umoº¬uje vybrat konkrétní databázový balík, ze kterého budou
data na£ítána
Internetová mapa:
Umoº¬uje vybrat zdroj Internetové mapy
Velikost cache Umoº¬uje nastavit po£et obrazovek v okolí st°edu mapy, pro kterou se budou £tverce na£ítat.
42
PÍLOHA C.
INSTALANÍ A UIVATELSKÁ PÍRUKA
Vymazat cache Vymaºe seznam naposledy vyhledávaných poloºek Následující poloºky slouºí ke zm¥n¥ zobrazení v hlavní obrazovce s mapou:
Zobrazit na celé obrazovce Zobrazit záhlaví
- skryje li²tu s notikacemi a £asem
- zobrazí záhlaví obsahující název mapy a úrove¬ zoomu
Ponechat display zapnutý
- zabrání sníºení úrovn¥ podsvícení po ne£innosti uºi-
vatele
Zobrazit m¥°ítko
- zobrazí m¥°ítko
Zobrazit kompas
- zobrazí kompas
Zobrazovat body zájmu Stahovat z Wikipedie
- zapne zobrazování importovaných bod· zájmu
- stahuje body zájmu z Wikipedie a ukládá je do místní
databáze
Jazyk POI Wikipedie - nastaví jazyk, pro který budou body z Wikipedie stahovány Smazání databáze POI
- odstraní soubor s databází bod· zájmu
POI - body zájmu Tato obrazovka umoº¬uje importovat a prohlíºet body zájmu.
Seznam importovaných POI Umoºnuje p°idávat, odstra¬ovat a upravovat body zájmu. Stisknutím tla£ítka MENU lze vyvolat dal²í moºnosti.
Import nových POI Umoºní importovat nové body zájmu. Import bod· zájmu probíhá z adresá°e
/sdcard/osmdroid/import_poi/
. Vyberte kat-
egorii a zvolte soubory, které chcete do této kategorie importovat. Stisknutím tla£ítka Importovat výb¥r importujete vybrané soubory. Stisknutím tla£ítka MENU lze vyvolat dal²í moºnosti.
Správa kategorií Umoº¬uje p°idávat, upravovat a mazat body zájmu.
Nastavení P°enese uºivatele do nastavení aplikace.
P°íloha D
Obsah p°iloºeného DVD Na p°iloºeném DVD se nachází následující adresá°ová struktura:
|--- build | `--- dbsplitter | `---lib |--- src | `--- javadoc `--- text `--- images build
- Adresá° obsahuje p°eloºené zdrojové kódy ve form¥ instala£ního balíku APK
a spustitelného balíku JAR v p°ípad¥ nástroje DB Splitter
src
- Adresá° obsahuje zdrojové kódy celé aplikace
text
A
- Adresá° obsahuje tuto práci ve formátu PDF a zdrojový L TEX soubor, v pod-
adresá°i
images
jsou diagramy a obrázky ve vysokém rozli²ení.
43