Top Banner
17

Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Jan 17, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

�eské vysoké u£ení technické v PrazeFakulta stavební

Projekt Informatika 2

Akedemický rok 2012/2013

Mapa kamer � mobilní aplikace pro Android

Dokumentace

Auto°i:

Martin Lºí£a°

Dan Dluho²

Michal Med

Vedoucí:

Ing. Martin Landa

Katedra mapování a

kartogra�e

K153

Page 2: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Obsah

1 Úvod 3

2 Mobilní aplikace Mapa Kamer 52.1 P°íprava prost°edí Eclipse pro vývoj Android aplikací . . . . . . . . . . . . . . . . 52.2 Projekt Osmdroid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Pouºívání aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3.1 P°idat kameru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3.2 Zobrazit mapu kamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3.3 O projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.4 Základy vývoje aplikací pro Android . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Databáze 11

4 P°ipojení k databázi na serveru 124.1 Java Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.2 Vytvá°ení poºadavku v mobilním za°ízením . . . . . . . . . . . . . . . . . . . . . . 13

5 Problémy p°i implementaci aplikace 14

6 Záv¥r 15

7 Seznam zdroj· 16

1

Page 3: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Zadání

Mobilní aplikace pro mapování kamer ve ve°ejných prostorech

Skupina: B (2013)

Cílem projektu je tvorba aplikace pro Iuridicum Remedium, o. s., která

by m¥la slouºit k mapování kamer ve ve°ejných prostorech. Aplikace

bude ur£ena pro mobilní za°ízení s opera£ním systémem Android a bude

napsána v programovacím jazyce Java. Aplikace by m¥la umoº¬ovat

zobrazení vrstvy s jiº zmapovanými kamerami ve ve°ejných prostorech

nad OpenStreetMap a p°idávání nových kamer pomocí p°edání sou°adnic

GPS a fotografie z mobilního za°ízení do vrstvy OSM se zmapovanými

kamerami. Vkládání bude probíhat p°es zprost°edkovatelský server, na

který se budou ukládat fotografie a který bude obsahovat databázi

kamer, do které budou vkládány kamery rovnou z aplikace. Na serveru

zprovozníme databázi PostgreSQL a pohyb dat mezi aplikací, databází a

OpenStreetMap bude umoºn¥n pomocí PHP skript·. Budeme vycházet z

aplikace, která byla k tomuto ú£elu naprogramována na restartu

iniciovaném ob£anským sdruºením Iuridicum Remedium a upravíme ji podle

na²ich pot°eb. V sou£asné aplikaci nefunguje komunikace se serverem,

protoºe ºádný server neexistuje, a prohlíºe£ka mapy je zaloºena na

Google Maps. Google Maps chceme v aplikaci kompletn¥ nahradit

OpenStreetMap.

2

Page 4: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

1 | Úvod

Práce byla vytvo°ena v rámci projektu informatika 2 ve spolupráci s ob£anským sdruºenímIuRe � Iuridicum Remedium. Sdruºení se zabývá ochranou soukromí a lidskými právy. Na svýchstránkách1 zve°ej¬ují mimo jiné �výherce� ankety Big brother awards nebo webovou aplikacimapa kamer2, ve které zobrazují ve°ejná místa pokrytá kamerovými systémy.

Obrázek 1.1: Logo ob£anského sdruºení IuRe

Obrázek 1.2: Webová aplikace Mapa kamer

Sdruºení se jiº v minulosti pokou²elo o tvorbu mobilní aplikace pro zaznámenávání a zobra-zování kamer, ale potýkalo se s nedostatkem pracovních kapacit, proto na²i bezplatnou nabídkuke spolupráci rádi p°ijali. Základ aplikace byl jiº p°ipraven, ale nespl¬oval ani jejich ani na²eo£ekávání. Aplikace byla zaloºena na Google Maps a nem¥la v pozadí ani databázi, ani server. I oto jsme se tedy museli postarat.

1www.iure.org2www.mapakamer.cz

3

Page 5: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Aplikace je zacílena na mobilní opera£ní systém Android. Jazykem b¥ºn¥ pouºívaným pro tvorbuaplikací pro Android je Java. Pouºili jsme vývojové prost°edí Eclipse, do kterého je v²ak protvorbu mobilních aplikací pot°eba doinstalovat Android Developer Tools.

Jako podkladová mapa byly pouºity rastry z opensourcového projektu OpenStreetMap3. Prouchovávání informací o kamerách byla pouºita databáze PostgreSQL a dále byla, op¥t v jazyceJava, napsána webová aplikace umoº¬ující komunikaci mezi mobilním za°ízením a databází.

3www.openstreetmap.org

4

Page 6: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

2 | Mobilní aplikace Mapa Kamer

Tato kapitola se zabývá tvorbou a pouºíváním mobilní aplikace. V jednotlivých sekcích se zmínímeo p°íprav¥ prost°edí Eclipse pro vývoj mobilních aplikací pro systém Android, s pouºívánímprojektu Osmdroid1, který slouºí k pouºívání map projektu OpenStreetMap v Androidu a o tom,jak do databáze p°idat novou kameru. Na záv¥r kapitoly se zmíníme o speci�kách vývoje aplikacípro systém Android jako takových.

2.1 P°íprava prost°edí Eclipse pro vývoj Android aplikací

Balí£ek ADT Bundle poskytuje v²e, co je pot°eba k vývoji aplikací pro Android, v£etn¥ Eclipse

IDE s vestav¥ným ADT (Android Developer Tools). Je moºné nainstalovat Android STK i doexistujícího IDE2, ale zde se budeme zabývat instalací celého balí£ku ADT Bundle.

Po rozbalení do zvoleného adresá°e sta£í otev°ít adresá° adt-bundle-<os_platform>/eclipse/ aspustit z n¥j eclipse. IDE je rovnou na£teno s pluginem ADT a SDK je p°ipraveno k pouºití.

Obrázek 2.1: Správn¥ nastavený emulátoru je na druhém °ádku

Balí£ek obsahuje v²e nezbytné v£etn¥ emulátoru. Ke správ¥, spu²t¥ní a nastavení SDK slouºípoloºka v menu Window → Android SDK Manager, ke správ¥ emulátoru potom Window

1http://code.google.com/p/osmdroid/2http://developer.android.com/sdk/installing/index.html

5

Page 7: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

→ Android Virtual Device Manager. K bezproblémovému chodu aplikace v emulátoru jepot°eba nastavit jako cílové prost°edí Google APIs v poslední verzi (17).

Nejnov¥j²í verze Google API v nabídce pravd¥podobn¥ nebude. K její instalaci je t°eba otev°ítWindow → Android SDK Manager a doinstalovat ho.

Obrázek 2.2: Ozna£ené balí£ky je pot°eba doinstalovat

Pro spu²t¥ní aplikace Mapa Kamer v emulátoru je pot°eba je²t¥ nastavit sou°adnice GPS. Tose musí ud¥lat ru£n¥, protoºe emulátor nemá ºádné fyzické GPS za°ízení. ze to ud¥lat dv¥mazp·soby:

• Ru£ní nastavení v DDMS:

� Window → Open Perspective → DDMS,

� ozna£it emulátor a v záloºce Emulator Control nastavit sou°adnice,

� potvrdit tla£ítkem Send.

Obrázek 2.3: Ozna£ené balí£ky je pot°eba doinstalovat

• Pomocí telnetu:

� otev°ít konzoli,

6

Page 8: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

� p°ipojit za°ízení: telnet localhost 5554,

� nastavit sou°adnice: geo fix 13.24 52.31.

Je celkem jedno který z t¥chto zp·sob· je pouºit. Po správném nastavení sou°adnic by se m¥lemulátor chovat jako mobilní za°ízení v poloze nastavené t¥mito sou°adnicemi. Pozor: nastavenímGPS sou°adnic není v za°ízení "zapnut"GPS modul. GPS se zapíná v nastavení (Menu → Set-tings → Location access → GPS satellites).

2.2 Projekt Osmdroid

V Android SDK existuje mapová podpora pro Google Maps, protoºe Android pat°í také spole£nostiGoogle. Pro pouºití OpenStreetMap v aplikaci existuje více moºností, krom¥ námi pouºitéhoOsmdroid lze pouºít nap°íklad renderovací knihovnu MapsForge3.

Balí£ek Osmdroid umoº¬uje pouºívání nativních metod pro zobrazování Google Maps k zobra-zování dat z projektu OpenStreetMap. V n¥kterých p°ípadech, jako je t°eba zobrazení mapy, jejívycentrování nebo nastavení hladiny zoom, se pouºívají metody knihovny Osmdroid p°esn¥ jakoekvivalentní metody z balí£ku google.maps. V n¥kterých jiných p°ípadech jsou t°ídy pon¥kudodli²né. P°íkladem m·ºe být t°eba zobrazení marker· (t°ída ItemizedOverlay). V n¥kterých p°í-padech nám moºnosti hotových t°íd nesta£ily a poºadovanou funk£nost jsme museli dopsat sami.Stalo se nám to nap°íklad u zobrazení obrázku v informa£ním okn¥ vyskakujícím p°i poklepání namarker v map¥. Pro tento ú£el jsme vytvo°ili t°ídu ImageOverlayItem.

Od pouºívání OpenStreetMap na úkor Google Maps jsme si slibovali moºnost vyuºití vrstvysurveillance z databáze OpenStreetMap, která obsahuje pom¥rn¥ velké mnoºství kamer sle-dujících ve°ejný prostor a která byla pouºita ve webové aplikaci Mapa Kamer a z velké míry idopl¬ována díky aktivitám sdruºení IuRe. K zobrazování vrstvy jsou ve webové aplikaci pouºityOpenLayers, které ale neexistují ve verzi pro mobilní za°ízení, jedin¥ v prohlíºe£i. Pokou²eli jsmese nalézt n¥jaké °e²ení jak pouºít data z této vrstvy a nakonec jsme se rozhodli pro export dat zdatabáze OpenStreetMap do lokální databáze na na²em serveru. Odtud je moºné data normáln¥zobrazovat v mobilní aplikaci.

2.3 Pouºívání aplikace

P°i spu²t¥ní aplikace má uºivatel na výb¥r mezi t°emi tla£ítky:

• P°idat kameru,

• Zobrazit mapu kamer,

• O projektu.

2.3.1 P°idat kameru

Nové kamery jsou p°idávány p°ímo do databáze na serveru. Tato databáze se synchronizuje p°ímos databází OpenStreetMap. O databázi i samotném nahrávání nové kamery po technické stráncese zmíníme je²t¥ v dal²ích kapitolách. V této sekci popí²eme co a jak d¥lat v aplikaci aby byla novákamera odeslána.

P°i otev°ení aktivity aplikace nejprve zkontroluje, zda je zapnutá GPS. Pokud ne, dostaneuºivatel moºnost GPS zapnout a zlep²it tak p°esnost zam¥°ení polohy.

3http://code.google.com/p/mapsforge/

7

Page 9: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Obrázek 2.4: Dialog vybízející k zapnutí GPS

Pokud GPS nezapne, bude poloha ur£ena ze sít¥. Poloha je zobrazena na °ádku GPS lokace.Do °ádku popis kamery uºivatel napí²e n¥co o kame°e. M¥lo by se to týkat faktických v¥cí, jakonap°íklad kdo je provozovatelem kamery, up°esn¥ní její polohy nebo nap°íklad to, jestli kam-era pouze zobrazuje, nebo i nahrává záznam. Poslední v¥c kterou je ke kame°e moºné p°idat jefotogra�e. Po stisknutí tla£ítka je uºivatel p°esm¥rován do aplikace fotoaparátu, kterou po°ídísnímek. Poté uº sta£í celý formulá° jenom potvrdit a kamera bude p°idána do databáze.

2.3.2 Zobrazit mapu kamer

P°i spu²t¥ní mapy aplikace nejprve zkontroluje, zda je zapnutá GPS. V p°ípad¥ ºe ano, je naaktuálních sou°adnicích vycentrována mapa OpenStreetMap. Pokud GPS zapnutá není, zobrazí sestejný dialog jako v p°edchozí sekci a uºivatel dostane moºnost zapnout GPS.

P°i volb¥ Ano je uºivatel p°esm¥rován do nastavení správy GPS. GPS m·ºe, ale nemusí býtzapnutá. Pro ur£ení polohy z GPS je pouºit objekt gpsLocListener. V p°ípad¥, ºe se uºiva-tel rozhodne nechat GPS vypnutou (a zvolí Ne), je poloha ur£ována ze sít¥ pomocí objektunetworkLocListener.

Obrázek 2.5: Mapa vycentrovaná na míst¥, na kterém jsem psal tuto dokumentaci

Podklad OpenStreetMap je zobrazen a vycentrován na aktuální pozici. Z databáze jsou potépomocí p°íkazu SELECT vytaºeny kamery a zobrazeny s markerem se symbolem cctv4. P°i poklepánína kameru se otev°e informa£ní okno s podrobnostmi o kame°e. Krom¥ popisu m·ºe obsahovat ifotogra�i.

2.3.3 O projektu

V této záloºce se uºivatel m·ºe do£íst jaké cíle má projekt Mapa kamer, na jakých principech jepostaven a také n¥co o sdruºení IuRe a tv·rcích projektu.

2.4 Základy vývoje aplikací pro Android

Tvorba aplikace pro systém Android je ve své podstat¥ hrozn¥ jednoduchá. Kaºdá aplikace májeden xml soubor pojmenovaný Manifest. Ten obsahuje název balí£ku, verze systému pro které

4http://mapicons.nicolasmollet.com/markers/o�ces/cctv/

8

Page 10: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Obrázek 2.6: Ukázka informa£ního okna kamery

Obrázek 2.7: Vzhled záloºky O projektu (screenshot z tabletu)

je aplikace ur£ená a dále velmi d·leºitý seznam pouºitých povolení (permissions) a vlastností(features). Dal²í v¥ci jsou obsaºeny v elementu application. Jedná se p°edev²ím o seznam aktivitpouºívaných v aplikaci. Co je to aktivita je vysv¥tleno dále.

Aktivitu si lze p°edstavit jako jednu obrazovku mobilního za°ízení s tla£ítky, nadpisy, menu av²ím co k tomu pat°í. V aplikaci Mapa Kamer je nap°íklad jednou z aktivit HomeActivity, kteráobsahuje domácí obrazovku aplikace se t°emi tla£ítky. P°i poklepání na tla£ítka se akorát spou²tídal²í aktivity, jmenovit¥ to jsou NewCameraActivity, CameraMapActivity a AboutActivity.

Obrázek 2.8: �ivotní cyklus aktivity

9

Page 11: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Kaºdá aktivita m·ºe mít vzhled tvo°en bu¤ kódem v jazyce Java, nebo je moºné vzhled nas-tavit pomocí xml souboru v res → layout. V prost°edí Eclipse je moºné xml vytvá°et pomocígra�ckého editoru.

Kaºdá aktivita má sv·j ºivotní cyklus. Aktivita m·ºe být v jednom ze £ty° základních stav·:

• Aktivní � aktivita b¥ºí v pop°edí.

• Pozastavená � aktivita je po°ád viditelná, ale není aktivní. Chová se stejn¥ jako aktivníaplikace, ale v p°ípad¥ malé pam¥ti za°ízení jí systém m·ºe zabít.

• Zastavená � aktivita je kompletn¥ p°ekryta jinou aktivitou. Kdyº je pam¥´ pot°eba jinde,tak jí systém zpravidla zabije.

• Zabitá � pokud je pozastavená nebo zastavená aktivita zabita systémem a uºivatel ji chcezobrazit, musí být znovu na£tena úpln¥ od za£átku a uvedena zp¥t do p°edchozího stavu.

Kaºdá aktivita má n¥kolik metod, kterými je moºné ji uvést do n¥kterého z uvedených stav·.Metoda uvád¥jící aktivitu do ur£itého stavu má párovou metodu, která tento stav ukon£í.

• onCreate a onDestroy

• onStart a onStop

• onResume a onPaused

10

Page 12: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

3 | Databáze

Jako databáze na které aplikace pojede byla zvolena databáze PostgreSQL. D·vody jsou dva:

• Jedná se o open source projekt.

• Projekt OpenStreetMap pouºívá jako databázi také PostgreSQL.

Obrázek 3.1: Logo projektu PostgreSQL, na kterém slon reprezentuje dobrou pam¥´

Základem pro databázi bylo schéma, které nám laskav¥ poskytl pan inºenýr Martin Landa.Schéma obsahovalo data OpenStreetMap pro �eskou Republiku. Ze schématu jsme vytáhli pomocínásledujícího p°íkazu vytáhli v²echny body s tagem surveillance a uloºili je do tabulky b_kamery.

CREATE TABLE b_kamery AS (SELECT osm_id,name,ST_X(ST_Transform(way::geometry,4326))

AS lat,ST_Y(ST_Transform(way::geometry,4326)) AS lon FROM osm.czech_point WHERE man_made

='surveillance');

Tabulka b_kamery obsahuje identi�kátor, informace o kame°e, sou°adnice kamery, které bylynaimportovány ze schématu osm a navíc jsme p°idali atribut image, který zatím obsahuje adresuobrázku na serveru. Do budoucna plánujeme obrázky ukládat jako BLOB1, protoºe p°i v¥t²ímmnoºství obrázk· by pravd¥podobn¥ byl velký problém s pam¥tí. Z d·vod· nevhodného kódováníse v informa£ním okn¥ kamery zobrazuje pouze obrázek a nikoliv popis kamery.

Pro zrychlení vyhledávacích a dotazovacích proces· v databázi bude záhodno databázi naindex-ovat. Indexy v databázi by ji mohli výrazn¥ zrychlit a zvlá²t¥ u pomalej²ích za°ízeních a za°ízeníchs men²í kapacitou pam¥ti to dost pom·ºe rychlému chodu aplikace. Principem indexování je p°ene-sení pam¥´ové a kapacitní náro£nosti ze za°ízení na server, coº by p°i porovnání výpo£etní kapacityserveru a výpo£etní kapacity mobilního za°ízení nem¥lo v·bec vadit.

1Binary Large OBject

11

Page 13: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

4 | P°ipojení k databázi na serveru

Kapitola se v¥nuje °e²ením a problém·m p°i práci na propojení mobilní aplikace s databází. Na²ímpoºadavkem bylo na£ítat data z databáze a zárove¬ do ní data i vkládat. Zkusili jsme n¥kolikzp·sob·, které krátce popí²eme a poté se podrobn¥ji zam¥°íme na °e²ení, které bylo zvoleno.

Jako první jsme vymysleli, ºe z mobilní aplikace by se poslal poºadavek http post na php skriptna serveru. Ten by pracoval s databází a provád¥l poºadované operace nad daty. Tento zp·sob senám nepoda°ilo implementovat a dozv¥d¥li jsme se, ºe to není bezpe£ný zp·sob. Proto jsme dal²ívývoj p°eru²ili a zkusili n¥co jiného.

Implementovali jsme moºnost, ºe by se samotná mobilní aplikace p°ipojila p°ímo do databáze.Tento zp·sob fungoval a oba na²e poºadavky byly spln¥ny. Ale p°i hledání °e²ení jsme objevili,ºe tento zp·sob je velmi náro£ný na výpo£etní techniku, protoºe navázání spojení je to nejt¥º²ína celém procesu p°ipojení aplikace k databázi. Po konzultaci s doktorem Janem Pytlem jsme serozhodli pouºít Java Servlety.

4.1 Java Servlet

Servlet je t°ída v jazyce Java, která roz²i°uje moºnosti serveru. Servlet umí zpracovat poºadavekrequest a odpov¥d¥t response. Musí b¥ºet na serveru, který zvládne zpracovat programovacíjazyk Java. Pouºili jsme Apache Tomcat 71. Ten implementuje verzi Servlet 3.0, jehoº moºnostijsme vyuºili a zmíníme je dále.

Webová aplikace se servlety si s pouºitím interfacu DataSource p°edp°ipraví p°ipojení dodatabáze a vyhne se tím problému náro£ného p°ímého p°ístupu do databáze. Tyto p°edp°ipravenép°ipojení pak �p·j£uje� servlet·m, které reagují na poºadavky z mobilní aplikace. Nastavení p°ipo-jení se nastavuje v souboru context.xml. V tomto souboru jsou p°ihla²ovací údaje do databáze.K tomuto souboru má p°ístup pouze administrátor a jiná bezpe£nostní opat°ení se zpravidla neap-likují2.

Z d·vod· popsaných vý²e jsme vytvo°ili jednoduchou webovou aplikaci obsahující následujícídva servlety.

• Servlet GetFromDB.java, který se stará o získávání dat z databáze. Podle parametruzískaného z HttpServletRequest je nastavena odpov¥¤ do HttpServletResponse. Parame-trem je adresa umíst¥ní obrázku, který bude následn¥ odeslán do mobilního za°ízení. Pokudnení ºádný parametr uveden, pak jsou do mobilní aplikace poslány v²echny kamery z databáze.

• Servlet SaveToDB.java, který z £ástí HttpServletRequest získá informace o nov¥ p°idá-vané kame°e a vloºí ji do databáze. V tomto servletu byly pouºity nové technologie z verze

1http://tomcat.apache.org/2Konzultace s Ing. Janem Pytlem Ph.D.

12

Page 14: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

Servletu 3.0. P°í sestavování poºadavku o kame°e v mobilní aplikaci byl pouºit objektMultipartEntity. Ten umoº¬uje poslat jedním http postem jak samotný text, tak i soubory,coº jsou v na²em p°ípad¥ fotogra�e kamer. Ty jsou ukládány v adresá°i pod jmény podle£asu vloºení. to zaji²´uje unikátní název souboru, který je uloºen do databáze.

4.2 Vytvá°ení poºadavku v mobilním za°ízením

Poºadavek na server se vytvá°í v mobilním za°ízením ve t°ech p°ípadech.

• Poslání nové kamery do databáze - pomocí vý²e zmín¥né MultipartEntity se posílajív²echna data (nap°. sou°adnice, obrázek kamery) ke zpracovaní do webové aplikace.

• P°i zobrazení mapy kamer - neposílá se ºádný parametr, ale z webové aplikace se získávajídata o kamerách. V databázi není uloºen p°ímo obrázek, ale pouze cesta na místo na serverukde je obrázek uloºen. Aplikace vytáhne soubor ze serveru a pouºije ho v informa£nímokn¥ kamery jako její obrázek. V sou£asné dob¥ se na£ítají z databáze v²echny kamery, coºje velmi náro£né na pame´ mobilního za°ízení. V dal²ím vývoji aplikace se tento problémvy°e²í nahráním kamer pouze z okolí sou£asné lokace p°ístroje.

• P°i zobrazení obrázku kamery - jako parametr se nastavuje název souboru s obrázkemkamery, na kterou uºivatel poklepal. Tento obrázek se zobrazí na obrazovce mobilního za-°ízení.

P°i vytvá°ení poºadavk· na server jsme narazili na zajímavý problém. Pokud byl poºadavekvytvá°en p°ímo v dané aktivit¥, tak tento poºadavek ne²el poslat na server. D·vod byl ten, ºeod ur£ité verze Android API ne²el poslat poºadavek v hlavním vlákn¥ aplikace. Pomocí t°ídyAsyncTask 3 lze jednodu²e provád¥t operace v jiném vlákn¥ aplikace, ve kterém se provede odeslánípoºadavku na server.

3http://developer.android.com/reference/android/os/AsyncTask.html

13

Page 15: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

5 | Problémy p°i implementaci ap-likace

S problémy jsme se setkávali tém¥° nep°etrºit¥. Verze, kterou te¤ prezentujeme, se od verze kterouodevzdáme sdruºení IuRe je²t¥ trochu li²í práv¥ proto, ºe jsme se n¥které z problém· zatímrozhodli ignorovat (pokud p°ímo nenaru²ují chod aplikace) a vy°e²íme je p°ed odevzdáním ap-likace sdruºení. Tyto problémy jsou v¥t²inou spojeny s vytíºením serveru a p°ípadném zahlcení,pokud by se do databáze £asem nahrálo hodn¥ dat a obrázk·. �e²ení je nasnad¥:

• Naindexování databáze.

• Cachování obrázk·.

• Pouºívání BLOBu pro obrázek místo adresy umíst¥ní na serveru.

Tyto úkony provedeme p°ed �nálním odevzdáním aplikace. Vzhledem k pokro£ilosti t¥chto tech-nik si myslíme, ºe jsou nad rámec obsahu projektu informatika 2, ale máme chu´ na aplikacipracovat dál.

Samoz°ejm¥ jsme se p°i tvorb¥ aplikaci setkali s v¥t²ím po£tem problém·, ale ty byly bu¤popsány v jiné £ásti této dokumentace nebo vy°e²eny.

14

Page 16: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

6 | Záv¥r

Výsledkem na²i práce je aplikace pro p°ístroje s opera£ním systémem Android, vyvinutá proob£anské sdruºení IuRe.

P°estoºe jsme s vývojovým prost°edím pro tuto platformu nem¥li ºádné zku²enosti, bohatádokumentace tématu a propracované prost°edí IDE Eclipse umoº¬uje programování i nová£k·mv oboru. P°esto je stále mnoho prostoru pro zlep²ování a proto, ºe se vývoji aplikace budemev¥novat i nadále, není verze odevzdávaná v rámci p°edm¥tu �nální. V budoucnosti bude p°ed¥lánagra�cká stránka aplikace. Z d·vod· sníºení datové náro£nosti bude implementována metoda, kterástáhne umíst¥ní kamer pouze v bliº²ím okolí. Dal²ím nezbytností je zabezpe£ení aplikace protizneuºitelnosti, aplikováním £asového omezení vstupu nových kamer z p°ístroje, který bude moºnédále identi�kovat unikátním kódem. Nakonec bude pod technickým zázemím organizace spu²´enserver pro komunikaci.

P°i práci na projektu jsme osobn¥ ocenili praktický dopad aplikace, technickou náro£nost a novézku²enosti s vývojem mobilní aplikace. Zadání bylo spln¥no s dv¥ma výjimkami. Jednou z nich jekomunikace mezi aplikací a databází pomocí php skript·. Místo nich jsme pouºili Apache Tomcat

a javovské servlety, protoºe se jedná o mnohem lep²í °e²ení. Druhou výjimkou je nahrávání kamer zaplikace rovnou do databáze OpenStreetMap. To není z technického hlediska úpln¥ moºné a protojsme se rozhodli tento problém obejít ukládáním kamer do databáze na na²em serveru, do kteréjsou naimportovány i data z OpenStreetMap.

15

Page 17: Akedemický rok 2012/2013 Mapa kamer mobilní aplikace pro ...geo.fsv.cvut.cz/gdata/2013/pin2/b/dokumentace/dokumentace.pdf · o p°íprav¥ prost°edí Eclipse pro vývoj mobilních

7 | Seznam zdroj·

Web

• PostgreSQL 9.1.3 Documentation. POSTGRESQL GLOBAL DEVELOPMENT GROUP.Dokumentace PostgreSQL [online]. 2011 [cit. 2013-05-13].Dostupné z: http://www.postgresql.org/�les/documentation/pdf/9.1/postgresql-9.1-A4.pdf

• STACK EXCHANGE INC. Stack Over�ow [online]. [cit. 2013-05-13].Dostupné z: http://stackover�ow.com/

• REFSNES DATA. W3Schools [online]. 1999 [cit. 2013-05-13].Dostupné z: http://www.w3schools.com/

• GOOGLE INC. Google Developers [online]. 2011 [cit. 2013-05-13].Dostupné z: https://developers.google.com/

• POSTGRESQL GLOBAL DEVELOPMENT GROUP. PostgreSQL [online]. 1996 [cit. 2013-05-13].Dostupné z: http://www.postgresql.org/

• WIKIMEDIA. Wikipedia [online]. 2001 [cit. 2013-05-13].Dostupné z: http://www.wikipedia.org/

• LARS VOGEL. Vogella [online]. [cit. 2013-05-13]

• ANDROID SNIPPETS. AndroidSnippets.com [online]. [cit. 2013-05-14].Dostupné z: http://www.androidsnippets.com/

• VIKAS PATEL Vikas Patel's blog [online]. [cit. 2013-05-14].Dostupné z: http://vikaskanani.wordpress.com/

Pod¥kování

D¥kujeme za praktické rady k jav¥ a serveru od pana doktora Pytla.

16