Kateřina Hynková 2013 FSv ČVUT Katedra geomatiky Využití ArcGIS Runtime SDK for Android při vývoji mapových aplikací V tomto dokumentu jsou popsány základní kroky při začátcích práce s ArcGIS Runtime SDK for Android. Dokumentace, kterou ESRI k tomuto produktu poskytuje, je v některých částech velmi nedostatečná a hledání řešení na problémy, s nimiž se uživatel může setkat, bývá časově náročné. Tento návod by měl usnadnit zájemcům o vývoj mapových aplikací pro Android z řad studentů FSv první pokusy s ArcGIS Runtime SDK for Android. Součástí dokumentu je i stručný popis aplikace CTUMapsCZ, která uživateli umožňuje vybírat z několika podkladových map a vyhledat místo na základě zadané adresy. K dispozici jsou instalační soubory a zdrojové kódy pro základní mapovou aplikaci HelloCTU a aplikaci CTUMapsCZ. Vývoj byl prováděn pod operačním systémem: Windows 7 64-bit Testování bylo prováděno na zařízení: Tablet ASUS Transformer Pad TF700T Android 4.2.1
Než začneme programovat 1) Instalace Android SDK (Software Development Kit) Pokud s vývojem začínáte, je nejjednodušší si stáhnout ADT (Android Developer Tools) Bundle (http://developer.android.com/sdk/index.html). Balík obsahuje: - Vývojové prostředí Eclipse s ADT pluginem - Nástroje pro Android SDK - Nástroje pro Android platformu - Nejnovější Android platformu - Nejnovější image systému Android pro emulátor Stažený soubor se rozbalí do vhodného umístění v počítači a ve složce eclipse je okamžitě možné spustit vývojové prostředí eclipse. 2) Instalace plugin ArcGIS Runtime SDK pro Android Eclipse ArcGIS Runtime SDK verze 10.1.1 si můžete po přihlášení ke svému Esri Global Account stáhnout zde: http://www.esri.com/apps/products/download/index.cfm?fuseaction=download.main& downloadid=874 (http://resources.arcgis.com/en/communities/runtime-android/). - Spusťte eclipse a pod nabídkou Help zvolte možnost Install New Software. - Klikněte na tlačítko Add vpravo nahoře. - V dialogu, který se objevil, zadejte do kolonky Name: ArcGIS 4 Android Plugin, klikněte na tlačítko Archive..., vyhledejte stažený zip archiv s ArcGIS Runtime SDK a stiskněte OK. 2
- V dialogu Available Software teď vidíte položku ArcGIS for Android a po kliknutí se vám zobrazí dostupné produkty. - Zaškrtněte položky ArcGIS for Android Core a ArcGIS for Android Doc and Samples (příklady a nápověda) a stiskněte tlačítko Next. - V dalším okně se zobrazí seznam položek, které budou nainstalovány. Po kliknutí na tlačítko Next musíte odsouhlasit licenční podmínky a po stisknutí Finish proběhne instalace. - Až instalace skončí, restartujte Eclipse. 3
Pro ArcGIS Runtime SDK verze 10.2 si musíte vytvořit účet na ArcGIS for Developers a poté SDK můžete stáhnout zde: https://developers.arcgis.com/en/android/install.html (https://developers.arcgis.com/en/downloads/#). - Spusťte eclipse a pod nabídkou Help zvolte možnost Install New Software. - Klikněte na tlačítko Add vpravo nahoře. - V dialogu, který se objevil, zadejte do kolonky Name: ArcGIS Android Public updatesite a do položky Location: http://developers.arcgis.com/en/android/eclipse/updatesite/ - V dialogu Available Software teď vidíte položku ArcGIS for Android a po kliknutí se vám zobrazí dostupné produkty. - Zaškrtněte položky ArcGIS for Android Core a ArcGIS for Android Doc and Samples (příklady a nápověda) a stiskněte tlačítko Next. - V dalším okně se zobrazí seznam položek, které budou nainstalovány. Po kliknutí na tlačítko Next musíte odsouhlasit licenční podmínky a po stisknutí Finish proběhne instalace. - Až instalace skončí, restartujte Eclipse. 4
První aplikace aneb Hello CTU Map 1) Vytvoření nového projektu - Spusťte Eclipse a v menu File zvolte položku New a dále Project. V dialogu vyberte ArcGIS for Android a ArcGIS Project for Android a klikněte na tlačítko Next. 5
- Vyplňte Project Name (např. HelloCTU dále v tutoriálu bude používán tento název) a stiskněte Next. - Vyplňte Package Name (např. cz.cvut.fsv.gisserver.android.vase_jmeno.helloctu) a klikněte na Finish. - U verze 10.2 navíc vyberte Target SDK. Pokud chcete aplikaci ladit na reálném zařízení, je důležité zvolit API stejné nebo nižší verze než má vaše zařízení. Potřebné API si můžete do Eclipse nainstalovat pomocí Android SDK Manager. 6
Možné problémy: Chybové hlášení: Unable to resolve target 'android-xx' Vlevo v záložce Package Explorer klikněte pravým tlačítkem na váš projekt a v menu vyberte Properties. V dialogu klikněte na Android a zaškrtněte jednu z nabízených možností v okně Project Build Target (např. Android 4.4). Volbu potvrďte pomocí tlačítka Apply nebo OK. 7
2) Přidaní mapy - Vlevo v záložce Package Explorer rozbalte váš projekt a otevřete soubor main.xml ve složce /res/layout/. - U otevřeného souboru přepněte dole ze záložky Graphical Layout na textový pohled pod main.xml. - Smažte část TextView. 8
- Místo ní přidějte MapView a změny uložte. <!-- MapView layout and initial extent --> <com.esri.android.map.mapview android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" initextent = "-745136-1041226 -744392-1040560"> </com.esri.android.map.mapview> - V položce initextent nastavujete oblast, která se zobrazí v mapě po spuštění aplikace. Obdélníková oblast se zadává pomocí souřadnic levého dolního rohu a pravého horního rohu. Aby byla zobrazena správná oblast, musí souřadnice odpovídat souřadnicovému systému, ve kterém je použitá mapová služba poskytována. 9
- Ve složce /src/package_name/ otevřete soubor HelloCTUActivity.java. - Kód mmapview = new MapView(this); nahraďte kódem // Retrieve the map and initial extent from XML layout mmapview = (MapView)findViewById(R.id.map); // Add dynamic layer to MapView mmapview.addlayer(new ArcGISTiledMapServiceLayer("" + "http://ags.cuzk.cz/arcgis/rest/services/ortofoto/mapserver")); 10
- Zkontrolujte, zda je na začáteční sekci souboru řádek: import com.esri.android.map.ags.arcgistiledmapservicelayer; - Pokud řádek chybí, doplňte ho a všechny provedené změny uložte. 11
3) Spuštění aplikace - Aplikaci nyní můžete spustit tak, že v Package Explorer kliknete pravým tlačítek na váš projekt, z nabídky vyberete Run As a poté zvolíte Android Application. Nastavení virtuálních a fyzických zařízení pro ladění aplikace je popsáno níže. - Po spuštění aplikace na zařízení se nám v tomto konkrétním případě pro oblast zadanou v initextent zobrazí Ortofoto ČR, které poskytuje ČÚZK jako dlaždicovanou mapovou službu ArcGIS. - Pokud chceme zobrazit jinou mapu, je nutné změnit URL mapové služby v souboru HelloCTUActivity.java a upravit initextent v souboru main.xml tak, aby odpovídal souřadnicovému systému mapové služby. 12
Ladění aplikací Android emulátor 1) Vytvoření nového AVD (Android Virtual Device) - Na horní liště v eclipse klikneme na tlačítko Android Virtual Device Manager a v dialogu stiskněte New... - Zobrazí se vám dialog, ve kterém si můžete nakonfigurovat zařízení dle svých požadavků. - Po vytvoření se zařízení objeví v seznamu AVD Manageru a emulaci spustíte kliknutím na vybrané zařízení, stisknutím Start... a dalším dialogu potvrdíte pomocí Launch. Spuštění virtuálního zařízení může trvat až několik minut. Možné problémy: Chybové hlášení: Failed to allocate memory: 1455 nebo se po stisknutí Launch vůbec nepodaří spustit emulaci. U požadovaného zařízení v AVD Manageru pomocí Edit... snižte hodnotu RAM (např. na 200 MiB). Snižovat (případně zvyšovat) můžete postupně, dokud nedosáhnete požadované funkčnosti. 2) Konfigurace vývojového prostředí pro použití OpenGL ES 2.0 v emulátoru (http://blogs.esri.com/esri/arcgis/2012/05/02/arcgis-runtime-sdk-for-android-v1-1- supports-android-emulator/) - Zkontrolujte v Android SDK Manager, zda máte nainstalován ARM EABI v7a System Image pro Android 4.4 (API 19) - V položce Extras nainstalujte Intel x86 Emulator Accelerator. - V adresářové struktuře ADT Bundle ve složce sdk\extras\intel\hardware_accelerated_execution_manager spusťte IntelHaxm.exe. - Po dokončení instalace, zadejte v příkazové řádce sc query intelhaxm a zkontrolujte, jestli služba běží. - V eclipse pravým tlačítkem klikněte na složku vašeho projektu, z menu vyberte Run As a poté Run Configurations... Pro váš projekt klikněte na záložku Target a vyberte AVD, které jste si vytvořili pro testování. Dále srolujte do položky Additional Emulator Command Line Options napište -gpu on - Poté spusťte váš projekt s tou konfigurací. Upozornění: Pokud budete chtít pro vývoj používat virtuální zařízení vytvořené emulátorem, připravte se, že se mohou objevit další problémy při spuštění emulace, které často souvisí s operačním systém a hardwarovým vybavením vaše počítače. Doporučuji proto pro testování aplikací používat skutečné zařízení s odpovídající verzí operačního systému Android. 13
Zařízení se systémem Android 1) Povolení testování aplikací na zařízení - Pro Android verze 4.2 a vyšší je třeba nejprve zpřístupnit v Nastavení záložku Pro vývojáře. To je možné udělat v Nastavení tak, že v položce Informace o telefonu (Informace o tabletu) 7krát poklepete na Číslo sestavení. - V záložce Pro vývojáře povolíte Ladění USB. Aplikace se pak po spuštění z Eclipse na zařízení nainstaluje automaticky a také se okamžitě spustí. 2) Po připojení zařízení k počítači přes USB se v Eclipse toto zařízení přidá k zařízením, na kterých můžete spustit váš projekt. Zařízení je nutno připojit, ještě než spustíte Eclipse. Upozornění: Při vytváření nového projektu mu musíte nastavit verzi API stejnou nebo nižší, než má vaše zařízení, jinak na něj nebude možné aplikaci nainstalovat. 14
Nastavení ikony aplikace 1) Volba ikony - V Package Explorer klikněte pravým tlačítkem na váš projekt, vyberte položku New a poté položku Other... - V okně vyberte ve složce Android položku Android Icon Set a klikněte na tlačítko Next. - Zvolte Launcher Icons a do Icon Name vyplňte, jak chcete, aby se ikona v projektu jmenovala (např. ctu_launcher). Pomocí tlačítka Copy Name to Clipboard si zvolené jméno zkopírujte do schránky pro další nastavení. Nyní můžete stisknout Next. - V další stránce okna teď můžete nastavit vzhled ikonky. 15
- Po stisknutí tlačítka Finish se ve složce res/drawable vytvoří ikony pro různá rozlišení displeje. 2) Nastavení ikony v AndroidManifest.xml - Ve složce res si otevřete soubor AndroidManifest.xml a přepněte do textového pohledu. - V řádku, který obsahuje <application android:icon="@drawable/is_launcher" - Nahraďte is_launcher jménem vaší ikony, které jste si zkopírovali do schránky (mělo by tedy stačit Ctrl + V). 16
Aplikace CTUMapsCZ Tato aplikace umožňuje výběr mezi několika podkladovými mapami a nalezení místa na základě jeho adresy pomocí funkce geokódování. Ovládání aplikace Po stisknutí tlačítka v pravém horním rohu se zobrazí menu, ve kterém můžeme volit jednu z 5 podkladových map. Na horním okraji aplikace se nachází řádek, do kterého lze zadat adresu, a pomocí tlačítka Go vpravo vyhledat zadané místo. Pokud byla daná lokace nalezena, aplikace se na ni automaticky přesune a označí ji modrým bodem s popisem přesné adresy, která byla získána z geokódovací služby. 17
Podkladové mapy V aplikaci jsou použity tyto podkladové mapy veřejně poskytované orgány státní správy: Ortofoto CZ Název mapy: Ortofoto ČR Poskytovatel: ČÚZK Typ: ArcGIS Tiled Map Service EPSG: URL: http://ags.cuzk.cz/arcgis/rest/services/ortofoto/mapserver ZM CZ Název mapy: Základní mapy ČR Poskytovatel: ČÚZK Typ: ArcGIS Tiled Map Service URL: http://ags.cuzk.cz/arcgis/rest/services/zm/mapserver 18
KN CZ Název mapy: Základní mapy ČR Poskytovatel: ČÚZK Typ: WMS URL: http://services.cuzk.cz/wms/wms.asp Vrstva: KN Waters CZ Název mapy: Vodní toky a vodní nádrže ČR Poskytovatel: VÚV Typ: WMS URL: http://heis.vuv.cz/data/webmap/isapi.dll Vrstvy: wmsnadr, wmsvt Geology CZ Název mapy: Geologická mapa České republiky 1 : 50 000 (GEOČR50) Poskytovatel: ČGS Typ: WMS URL: http://ags1.geology.cz/arcgis/services/rebilance/geocr50_wms/mapserver/wmsserver 19
Geokódování Vyhledání místa na základě zadané adresy umožňuje online geokódovací služba World Geocoding Service, kterou poskytuje Esri. URL: http://geocode.arcgis.com/arcgis/rest/services/world/geocodeserver Služba funguje pro celý svět, ovšem stupeň pokrytí se pro jednotlivé země liší. Česká republika patří mezi země s největší hustotou pokrytí. Přesto je při zadávání adres nutné výsledek ověřit podle adresy, která se vypíše vedle bodu, protože pokud se službě například nepodařilo najít požadované číslo popisné, umístí bod na danou obec. Výsledek vyhledávání může zlepšit zadání PSČ. 20
Zdroje ESRI. ArcGIS Runtime SDK for Android [online]. 2013. [cit. 2013-12-20]. Dostupné z URL: https://developers.arcgis.com/en/android/ ESRI. ArcGIS Android 10.2.0 API [online]. 2013. [cit. 2013-12-20]. Dostupné z URL: https://developers.arcgis.com/en/android/apireference/reference/packages.html ESRI. ArcGIS REST API [online]. 1995-2013. [cit. 2013-12-20]. Dostupné z URL: http://resources.arcgis.com/en/help/arcgis-rest-api/ Android. Android Developers [online]. [cit. 2013-12-20]. Dostupné z URL: http://developer.android.com Stack Exchange. Stack Overflow [online]. [cit. 2013-12-20]. Dostupné z URL: http://stackoverflow.com/ 21