ƒeské vysoké u ení technické v Praze Fakulta 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 kartograe K153
Obsah 1 Úvod 3 2 Mobilní aplikace Mapa Kamer 5 2.1 P íprava prost edí Eclipse pro vývoj Android aplikací................ 5 2.2 Projekt Osmdroid.................................... 7 2.3 Pouºívání aplikace.................................... 7 2.3.1 P idat kameru.................................. 7 2.3.2 Zobrazit mapu kamer.............................. 8 2.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 12 4.1 Java Servlet........................................ 12 4.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
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
1 Úvod Práce byla vytvo ena v rámci projektu informatika 2 ve spolupráci s ob anským sdruºením IuRe Iuridicum Remedium. Sdruºení se zabývá ochranou soukromí a lidskými právy. Na svých stránkách 1 zve ej ují mimo jiné výherce ankety Big brother awards nebo webovou aplikaci mapa kamer 2, 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 zobrazování kamer, ale potýkalo se s nedostatkem pracovních kapacit, proto na²i bezplatnou nabídku ke spolupráci rádi p ijali. Základ aplikace byl jiº p ipraven, ale nespl oval ani jejich ani na²e o ekávání. Aplikace byla zaloºena na Google Maps a nem la v pozadí ani databázi, ani server. I o to jsme se tedy museli postarat. 1 www.iure.org 2 www.mapakamer.cz 3
Aplikace je zacílena na mobilní opera ní systém Android. Jazykem b ºn pouºívaným pro tvorbu aplikací pro Android je Java. Pouºili jsme vývojové prost edí Eclipse, do kterého je v²ak pro tvorbu mobilních aplikací pot eba doinstalovat Android Developer Tools. Jako podkladová mapa byly pouºity rastry z opensourcového projektu OpenStreetMap 3. Pro uchovávání informací o kamerách byla pouºita databáze PostgreSQL a dále byla, op t v jazyce Java, napsána webová aplikace umoº ující komunikaci mezi mobilním za ízením a databází. 3 www.openstreetmap.org 4
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íme o p íprav prost edí Eclipse pro vývoj mobilních aplikací pro systém Android, s pouºíváním projektu Osmdroid 1, 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 speciká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 do existujícího IDE 2, 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/ a spustit 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 1 http://code.google.com/p/osmdroid/ 2 http://developer.android.com/sdk/installing/index.html 5
Android Virtual Device Manager. K bezproblémovému chodu aplikace v emulátoru je pot 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 ít Window 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. To se musí ud lat ru n, protoºe emulátor nemá ºádné fyzické GPS za ízení. ze to ud lat dv ma zp 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
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 l emulátor chovat jako mobilní za ízení v poloze nastavené t mito sou adnicemi. Pozor: nastavením GPS sou adnic není v za ízení "zapnut"gps modul. GPS se zapíná v nastavení (Menu Settings Location access GPS satellites). 2.2 Projekt Osmdroid V Android SDK existuje mapová podpora pro Google Maps, protoºe Android pat í také spole nosti Google. Pro pouºití OpenStreetMap v aplikaci existuje více moºností, krom námi pouºitého Osmdroid lze pouºít nap íklad renderovací knihovnu MapsForge 3. Balí ek Osmdroid umoº uje pouºívání nativních metod pro zobrazování Google Maps k zobrazová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 jako ekvivalentní metody z balí ku google.maps. V n kterých jiných p ípadech jsou t ídy pon kud odli²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í na marker 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í vrstvy surveillance z databáze OpenStreetMap, která obsahuje pom rn velké mnoºství kamer sledujících ve ejný prostor a která byla pouºita ve webové aplikaci Mapa Kamer a z velké míry i dopl ována díky aktivitám sdruºení IuRe. K zobrazování vrstvy jsou ve webové aplikaci pouºity OpenLayers, které ale neexistují ve verzi pro mobilní za ízení, jedin v prohlíºe i. Pokou²eli jsme se nalézt n jaké e²ení jak pouºít data z této vrstvy a nakonec jsme se rozhodli pro export dat z databá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 ímo s databází OpenStreetMap. O databázi i samotném nahrávání nové kamery po technické stránce se 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, dostane uºivatel moºnost GPS zapnout a zlep²it tak p esnost zam ení polohy. 3 http://code.google.com/p/mapsforge/ 7
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í, jako nap íklad kdo je provozovatelem kamery, up esn ní její polohy nebo nap íklad to, jestli kamera pouze zobrazuje, nebo i nahrává záznam. Poslední v c kterou je ke kame e moºné p idat je fotograe. 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 na aktuálních sou adnicích vycentrována mapa OpenStreetMap. Pokud GPS zapnutá není, zobrazí se stejný 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ýt zapnutá. Pro ur ení polohy z GPS je pouºit objekt gpsloclistener. V p ípad, ºe se uºivatel rozhodne nechat GPS vypnutou (a zvolí Ne), je poloha ur ována ze sít pomocí objektu networkloclistener. 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 cctv 4. P i poklepání na kameru se otev e informa ní okno s podrobnostmi o kame e. Krom popisu m ºe obsahovat i fotograi. 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 je postaven 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é 4 http://mapicons.nicolasmollet.com/markers/oces/cctv/ 8
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 aktivit pouºí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 a v²í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
Kaºdá aktivita m ºe mít vzhled tvo en bu kódem v jazyce Java, nebo je moºné vzhled nastavit pomocí xml souboru v res layout. V prost edí Eclipse je moºné xml vytvá et pomocí gracké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 chce zobrazit, 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
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 identikátor, informace o kame e, sou adnice kamery, které byly naimportovány ze schématu osm a navíc jsme p idali atribut image, který zatím obsahuje adresu obrázku na serveru. Do budoucna plánujeme obrázky ukládat jako BLOB 1, protoºe p i v t²ím mnoº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 naindexovat. Indexy v databázi by ji mohli výrazn zrychlit a zvlá²t u pomalej²ích za ízeních a za ízeních s men²í kapacitou pam ti to dost pom ºe rychlému chodu aplikace. Principem indexování je p enesení pam ové a kapacitní náro nosti ze za ízení na server, coº by p i porovnání výpo etní kapacity serveru a výpo etní kapacity mobilního za ízení nem lo v bec vadit. 1 Binary Large OBject 11
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²ím poºadavkem bylo na ítat data z databáze a zárove do ní data i vkládat. Zkusili jsme n kolik zp 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 skript na serveru. Ten by pracoval s databází a provád l poºadované operace nad daty. Tento zp sob se ná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 se rozhodli 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ºadavek request a odpov d t response. Musí b ºet na serveru, který zvládne zpracovat programovací jazyk Java. Pouºili jsme Apache Tomcat 7 1. Ten implementuje verzi Servlet 3.0, jehoº moºnosti jsme 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í do databá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 ipojení 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 neaplikují 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 parametru získaného z HttpServletRequest je nastavena odpov do HttpServletResponse. Parametrem je adresa umíst ní obrázku, který bude následn odeslán do mobilního za ízení. Pokud není ºá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 1 http://tomcat.apache.org/ 2 Konzultace s Ing. Janem Pytlem Ph.D. 12
Servletu 3.0. P í sestavování poºadavku o kame e v mobilní aplikaci byl pouºit objekt MultipartEntity. Ten umoº uje poslat jedním http postem jak samotný text, tak i soubory, coº jsou v na²em p ípad fotograe 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 serveru kde je obrázek uloºen. Aplikace vytáhne soubor ze serveru a pouºije ho v informa ním okn 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ém vy 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ázkem kamery, 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ºadavek vytvá en p ímo v dané aktivit, tak tento poºadavek ne²el poslat na server. D vod byl ten, ºe od ur ité verze Android API ne²el poslat poºadavek v hlavním vlákn aplikace. Pomocí t ídy AsyncTask 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. 3 http://developer.android.com/reference/android/os/asynctask.html 13
5 Problémy p i implementaci aplikace S problémy jsme se setkávali tém nep etrºit. Verze, kterou te prezentujeme, se od verze kterou odevzdáme sdruºení IuRe je²t trochu li²í práv proto, ºe jsme se n které z problém zatím rozhodli ignorovat (pokud p ímo nenaru²ují chod aplikace) a vy e²íme je p ed odevzdáním aplikace 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 technik si myslíme, ºe jsou nad rámec obsahu projektu informatika 2, ale máme chu na aplikaci pracovat 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
6 Záv r Výsledkem na²i práce je aplikace pro p ístroje s opera ním systémem Android, vyvinutá pro ob 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 m v oboru. P esto je stále mnoho prostoru pro zlep²ování a proto, ºe se vývoji aplikace budeme v novat i nadále, není verze odevzdávaná v rámci p edm tu nální. V budoucnosti bude p ed lána gracká 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 proti zneuºitelnosti, aplikováním asového omezení vstupu nových kamer z p ístroje, který bude moºné dále identikovat unikátním kódem. Nakonec bude pod technickým zázemím organizace spu² en server 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 je komunikace 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 z aplikace rovnou do databáze OpenStreetMap. To není z technického hlediska úpln moºné a proto jsme 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
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 Overow [online]. [cit. 2013-05-13]. Dostupné z: http://stackoverow.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