• Nebyly nalezeny žádné výsledky

Bakal´aˇrsk´a pr´ace GPS framework na platformˇe Android

N/A
N/A
Protected

Academic year: 2022

Podíl "Bakal´aˇrsk´a pr´ace GPS framework na platformˇe Android"

Copied!
57
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Z´ apadoˇcesk´ a univerzita v Plzni Fakulta aplikovan´ ych vˇed

Katedra informatiky a v´ ypoˇcetn´ı techniky

Bakal´ aˇ rsk´ a pr´ ace

GPS framework

na platformˇ e Android

(2)

Prohl´ aˇ sen´ı

Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´yhradnˇe s po- uˇzit´ım citovan´ych pramen˚u.

V Plzni dne 7. kvˇetna 2014

Viktor Vaˇsina

(3)

Abstract

GPS framework on Android platform. This work analyzes possibility of deter- mining location of mobile devices, especially for the Android platform. The work describes the locational methods and compares them. Further attention is paid to implementation of these methods on the Android platform. The final part summarizes procedures frequently used during implementation of applications using the position determining. Framework based on mentioned summary seeks to cover the frequently used actions to simplify the implemen- tation of such applications. To better understand and verify functionality this part is finished by proposal and implementation of a sample application using the created framework.

Abstrakt

Tato pr´ace je anal´yzou moˇznost´ı urˇcov´an´ı polohy mobiln´ıch zaˇr´ızen´ı, zejm´ena pro platformu Android. Pr´ace postupnˇe popisuje jednotliv´e lokaˇcn´ı metody a srovn´av´a je. D´ale se zamˇeˇruje na realizaci tˇechto metod na platformˇe An- droid. V dalˇs´ı ˇc´asti se jsou shrnuty postupy ˇcasto pouˇz´ıvan´e pˇri implementaci aplikac´ı vyuˇz´ıvaj´ıc´ıch urˇcov´an´ı polohy. Na z´akladˇe zm´ınˇen´eho souhrnu je z´a- roveˇn pops´an framework, kter´y se snaˇz´ı ˇcast´e ´ukony v sobˇe obs´ahnout pro zjednoduˇsen´ı implementace podobn´ych aplikac´ı. Pro lepˇs´ı pochopen´ı a ovˇe- ˇren´ı funkˇcnosti je tato ˇc´ast zakonˇcena n´avrhem a implementac´ı uk´azkov´e aplikace s vyuˇzit´ım vytvoˇren´eho frameworku.

(4)

Obsah

1 Uvod´ 1

2 Reprezentace zpageemˇepisn´e polohy 2

2.1 Zemˇepisn´a poloha . . . 2

2.2 Kartografick´a projekce . . . 3

2.2.1 UTM projekce . . . 3

3 Metody urˇcov´an´ı zemˇepisn´e polohy 5 3.1 Triangulace . . . 5

3.1.1 Triangulace mobiln´ıho zaˇr´ızen´ı . . . 5

3.2 GPS . . . 13

3.2.1 A-GPS . . . 14

3.2.2 Dalˇs´ı satelitn´ı syst´emy . . . 14

3.3 Dalˇs´ı moˇznosti urˇcov´an´ı polohy . . . 14

4 Vyuˇzit´ı lokalizace mobiln´ıch zaˇr´ızen´ı 16 5 V´yvoj pro platformu Android 17 5.1 Lokalizace zaˇr´ızen´ı s OS Android . . . 17

5.1.1 Google Play Services . . . 18

5.1.2 Krit´eria . . . 18

5.1.3 Tˇr´ıda LocationListener . . . 19

6 Location Framework 23 6.1 Modely . . . 23

6.2 Vizualizace na mapˇe . . . 24

6.2.1 Integrace Google Maps Android API . . . 25

6.2.2 Rozˇsiˇruj´ıc´ı API frameworku . . . 26

6.3 Knihovny . . . 27

(5)

OBSAH OBSAH

6.4.2 Zp˚usob pˇrenosu . . . 29

6.4.3 Form´at pˇren´aˇsen´ych dat . . . 31

6.5 Integrace frameworku . . . 36

7 Aplikace 38 7.1 Datov´y model . . . 38

7.2 Pouˇzit´ı frameworku . . . 38

7.3 Komunikace s frameworkem . . . 40

7.4 Uˇzivatelsk´a dokumentace . . . 40

7.5 Instalace aplikace . . . 41

7.6 Testov´an´ı . . . 41

8 Server 44 8.1 Struktura serveru . . . 44

8.1.1 Datab´aze . . . 45

8.1.2 Instalace datab´aze . . . 45

8.1.3 J´adro serveru . . . 45

8.1.4 Instalace a spuˇstˇen´ı . . . 46

9 Z´avˇer 47

Seznam pouˇzit´ych zkratek 48

Zdroje 48

A Adres´aˇrov´a struktura pr´ace 52

(6)

1 Uvod ´

C´ılem t´eto pr´ace je sezn´amit ˇcten´aˇre s moˇznostmi lokace mobiln´ıch zaˇr´ızen´ı a vyuˇzit´ım tˇechto technologi´ı v mobiln´ıch aplikac´ıch.

V prvn´ı ˇc´asti pr´ace popisuje, co je zemˇepisn´a poloha a jak je reprezento- v´ana v pˇr´ıstroj´ıch. N´aslednˇe jsou tyto lokalizaˇcn´ı metody pops´any a porov- n´any.

D´ıky nabyt´ym znalostem z prvn´ı ˇc´asti je snazˇs´ı pochopit, jak jsou imple- mentov´any tyto technologie na platformˇe Android. Jelikoˇz v pr˚ubˇehu pr´ace byly nˇekter´e tyto technologie, resp. jejich implementace, zmˇenˇeny, vˇenuje se pr´ace okrajovˇe i v´yvoji lokalizace pˇr´ıstroje pod touto platformou. Z´aro- veˇn pr´ace postupnˇe proch´az´ı frameworkem a umoˇzˇnuje sn´aze pochopit, kter´e funkcionality se v aplikac´ıch ˇcasto pouˇz´ıvaj´ı ˇci jak je lze ˇreˇsit. Pr´ace uvaˇzuje i potˇrebu sd´ılen´ı polohy a jin´ych informac´ı skrze internetovou s´ıt’.

Dalˇs´ı ˇc´ast´ı je uk´azkov´a aplikace zaloˇzen´a na frameworku, kter´a bude vy- uˇz´ıvat moˇznosti urˇcov´an´ı polohy mobiln´ıch zaˇr´ızen´ı a sd´ılen´ı polohy pˇres webov´y server.

Po pˇreˇcten´ı pr´ace ˇcten´aˇr z´ısk´a pˇredstavu o principech urˇcov´an´ı polohy mobiln´ıch pˇr´ıstroj˚u a vyuˇzit´ı tˇechto informac´ı. Pr´ace popisuje, jak tato data sd´ılet s dalˇs´ımi mobiln´ımi zaˇr´ızen´ımi ˇci servery a jak jsou vˇsechny tyto funkce zastˇreˇseny operaˇcn´ım syst´emem Android.

(7)

2 Reprezentace zpageemˇ episn´ e polohy

Pro urˇcov´an´ı zemˇepisn´e polohy je nutn´e definovat podobu souˇradnic jedno- znaˇcnˇe urˇcuj´ıc´ıch polohu bodu na planetˇe.

2.1 Zemˇ episn´ a poloha

Bˇeˇznˇe pouˇz´ıvan´ym zp˚usobem pro urˇcen´ı polohy na povrchu planety je vyuˇzit´ı zemˇepisn´e d´elky a ˇs´ıˇrky.

Zemˇepisn´a d´elka je ´uhel, kter´y sv´ır´a rovina nult´eho poledn´ıku a poledn´ıku, kter´y prot´ın´a urˇcovan´y bod. M˚uˇze nab´yvat hodnot od 0 do 180. Smˇe- rem k v´ychodu od nult´eho poledn´ıku se pouˇz´ıv´a v´yraz v´ychodn´ı d´elka, smˇerem na z´apad od nult´eho poledn´ıku naopak z´apadn´ı d´elka.

Zemˇepisn´a ˇs´ıˇrka je ´uhel, kter´y sv´ır´a rovina rovn´ıku a pˇr´ımka proch´azej´ıc´ı urˇcovan´ym bodem a stˇredem planety. Nab´yv´a hodnot od 0 do 90. Od rovn´ıku smˇerem na sever se pouˇz´ıv´a v´yraz severn´ı ˇs´ıˇrka, smˇerem na jih jiˇzn´ı ˇs´ıˇrka.

Tyto dva ´udaje urˇcuj´ı jednoznaˇcnou polohu na povrchu planety. Pro elek- tronickou reprezentaci jsou ovˇsem nepohodln´e kv˚uli atribut˚um svˇetov´ych stran. Proto se pro elektronickou reprezentaci liˇs´ı. Zemˇepisn´a d´elka nab´yv´a hodnot od −180 (z´apadn´ı polokoule) do 180 (v´ychodn´ı polokoule) a ob- dobnˇe zemˇepisn´a ˇs´ıˇrka nab´yv´a hodnot od −90 (jiˇzn´ı polokoule) do 90 (se- vern´ı polokoule). D´ıky tomu lze reprezentovat polohu jen pomoc´ı dvou hod- not. Tyto hodnoty ovˇsem mohou m´ıt v´ıce form´at˚u, pˇriˇcemˇz nejbˇeˇznˇejˇs´ı z nich jsou pops´any v tabulce 2.1.

Je jistˇe patrn´e, ˇze pro reprezentaci ve v´ypoˇcetn´ıch technologi´ıch je nej- vhodnˇejˇs´ı form´at DDD a nad´ale bude vyuˇz´ıv´an pr´avˇe tento. Protoˇze se po- hybujeme v trojrozmˇern´em (d´ale jen 3D) prostoru, chyb´ı jeˇstˇe jedna sou- ˇradnice. Chybˇej´ıc´ı souˇradnic´ı je nadmoˇrsk´a v´yˇska, kter´a je reprezentov´ana kladnou hodnotou nad povrchem Zemˇe, resp. hladinou oce´anu, a z´apornˇe pod hladinou.

(8)

Reprezentace zpageemˇepisn´e polohy Kartografick´a projekce

Tabulka 2.1: Nejzn´amˇejˇs´ı zp˚usoby z´apisu zemˇepisn´ych souˇradnic.

Zkratka Z´apis Popis

DMS 493003000 z´apis stupˇn˚u, minut a sekund tak, jak jsme zvykl´ı DMM 49 30.5 minuty zaps´any dekadicky

DDD 49.508333 stupnˇe zaps´any dekadicky

Zkratky jsou odvozen´e z anglick´ych slov pro stupnˇe (Degrees), minuty (Minutes) a sekundy (Seconds). [5]

2.2 Kartografick´ a projekce

Pokud zn´ame polohu bodu, je ˇcasto vhodn´e ji uˇzivateli nˇejak zn´azornit. Pa- p´ırov´e mapy i obrazovky zaˇr´ızen´ı jsou ale ploch´e. Zde nastupuje nutnost projekce, tedy proces zobrazen´ı povrchu 3D tˇelesa na 2D plochu. Stejnˇe jako tenisov´y m´ıˇcek nelze rozvinout do roviny bez deformac´ı, nelze takto rozvi- nout ani povrch geoidu (matematicky popsan´e tˇeleso, kter´e nejv´ıce odpov´ıd´a re´aln´emu tvaru naˇs´ı planety) ˇci jin´eho zjednoduˇsen´eho referenˇcn´ıho tˇelesa, jako je elipsoid nebo koule. Proto se postupem ˇcasu vyvinuly projekce, kter´e pˇrev´ad´ı povrch takov´ych referenˇcn´ıch tˇeles na povrchy tˇeles, kter´e jiˇz jsou roz- vinuteln´e do roviny, jako je napˇr. v´alec. Vˇzdy doch´az´ı k deformac´ım a ztr´atˇe pˇresnosti, ale v z´avislosti na zvolen´em zobrazen´ı se deformuj´ı v´ıce vzd´alenosti nebo ´uhly v r˚uzn´ych ˇc´astech planety.

Anal´yza kartografick´ych zobrazen´ı vˇsak nen´ı pˇredmˇetem t´eto pr´ace. Z to- hoto d˚uvodu bude nast´ınˇena pouze UTM projekce.

2.2.1 UTM projekce

Zkratka UTM vznikla z ang. Universal Transverse Mercator projection[4].

Mercatorova projekce patˇr´ı mezi v´alcov´a zobrazen´ı. Jej´ım z´akladem je zob- razen´ı povrchu Zemˇe na v´alec, kter´y je elipsoidu teˇcn´y v m´ıstˇe rovn´ıku, a jeho osa je totoˇzn´a s osou planety. Z tohoto postupu vypl´yv´a, ˇze zobrazen´ı je ne- vhodn´e pro zobrazen´ı pol´arn´ıch oblast´ı. Pˇr´ıvlastek transverz´aln´ı znamen´a, ˇ

ze v´alec nen´ı teˇcn´y v m´ıstˇe rovn´ıku, ale v m´ıstˇe zvolen´eho poledn´ıku. Gaus- sovo zobrazen´ı (Mercatorovo transverz´aln´ı) se od UTM liˇs´ı jiˇz jen nˇekolika konstantami a typem referenˇcn´ıho elipsoidu

(9)

Reprezentace zpageemˇepisn´e polohy Kartografick´a projekce

zobrazen´ı. Takto byl syst´em vyvinut v roce 1947 arm´adou Spojen´ych st´at˚u americk´ych pro tvorbu vojensk´ych map. Dnes UTM vyuˇz´ıv´a mj. i spoleˇcnost Google pro tvorbu sv´ych map. T´ım se toto zobrazen´ı t´yk´a i t´eto pr´ace, pro- toˇze j´ım je dan´e omezen´ı souˇradnic. Podklady Google Map jsou d´ıky UTM omezeny, co se t´yˇce zemˇepisn´e ˇs´ıˇrky, pˇribliˇznˇe od −85 do 85[6]. Pouˇzit´ı UTM tak´e osvˇetluje moˇzn´e odchylky v souˇradnic´ıch z´ıskan´ych za pomoci jin´eho zobrazen´ı.

(10)

3 Metody urˇ cov´ an´ı zemˇ episn´ e polohy

Nyn´ı jiˇz m´ame moˇznost, jak popsat pozici na planetˇe, pokud zrovna drˇz´ıme v ruce mapu. Jak ale z´ıskat souˇradnice m´ısta, kde pr´avˇe stoj´ıme? Za t´ımto

´

uˇcelem se bˇehem let vyvinulo nˇekolik strategi´ı, od primitivn´ıch, jako je znalost noˇcn´ı oblohy a roˇcn´ıho obdob´ı, po dokonalejˇs´ı, kterou je napˇr´ıklad GPS.

Jelikoˇz jsou primitivn´ı strategie pro naˇsi pr´aci nepouˇziteln´e, nebudeme se jimi v˚ubec zab´yvat. Pro urˇcov´an´ı polohy se dnes pouˇz´ıvaj´ı zejm´ena triangulace a satelitn´ı pozicov´an´ı a jejich dalˇs´ı deriv´aty.

3.1 Triangulace

Jak n´azev napov´ıd´a, metody zaloˇzen´e na triangulaci vyuˇz´ıvaj´ı matematick´ych znalost´ı o troj´uheln´ıc´ıch. Historicky se vyvinuly pravdˇepodobnˇe z d˚uvodu, ˇ

ze se v ter´enu l´epe mˇeˇril ´uhel neˇz vzd´alenost. Napˇr´ıklad vzd´alenost c´ıle od hradeb ˇsla odvodit ze znalosti vzd´alenosti dvou hradn´ıch vˇeˇz´ı a ´uhlem mezi hradbou a c´ılem, jak je zn´azornˇeno na obr´azku 3.1. S takto zmˇeˇren´ymi ´uhly z obou vˇeˇz´ı lze skrze vˇetu o velikosti souˇctu vnitˇrn´ıch ´uhl˚u odvodit posledn´ı

´

uhel. Znalost vˇsech tˇr´ı ´uhl˚u a d´elky jedn´e strany troj´uheln´ıku je na v´ypoˇcet ostatn´ıch stran, popˇr´ıpadˇe v´yˇsek troj´uheln´ıku postaˇcuj´ıc´ı. A vzd´alenost c´ıle od hradby je ve skuteˇcnosti jednou z v´yˇsek troj´uheln´ıku.

Obdobn´e postupy lze aplikovat i dnes, pokud jsou zn´amy zemˇepisn´e sou- ˇradnice referenˇcn´ıch bod˚u. Ve v´yˇse zm´ınˇen´em pˇr´ıkladu by tedy staˇcilo nav´ıc zn´at souˇradnice obou vˇeˇz´ı. Triangulace se proto pouˇz´ıv´a i dnes napˇr´ıklad pˇri vytv´aˇren´ı map, kdy se vyuˇz´ıvaj´ı pevnˇe stanoven´e geodetick´e body. Dalˇs´ım vyuˇzit´ım je lokalizace mobiln´ıch zaˇr´ızen´ı.

3.1.1 Triangulace mobiln´ıho zaˇ r´ızen´ı

Mobiln´ı s´ıtˇe jsou zaloˇzeny na s´ıti vys´ılaˇc˚u. Tyto vys´ılaˇce jsou pevn´a stano- viˇstˇe a oper´atoˇri znaj´ı jejich polohu. Vˇsechny vys´ılaˇce maj´ı svou unik´atn´ı identifikaci (d´ale jen Cell ID) a tuto lze sp´arovat s polohou. Pokud je telefon

(11)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

v =

q

da·db (3.1)

v = tanα·da (3.2)

Obr´azek 3.1: V´ypoˇcet vzd´alenosti c´ıle od hradeb. Vzorec 3.1 demonstruje vyuˇzit´ı Eukleidovy vˇety, vzorec 3.2 vyuˇzit´ı funkce tangens pro pravo´uhl´y troj´uheln´ık.

(12)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

nadmoˇrsk´a v´yˇska z´ısk´av´ame kruh, resp. kruhovou v´yseˇc znaˇc´ıc´ı dosah sign´alu vys´ılaˇce.

3.1.1.a GSM s´ıt’

GSM s´ıt’ (z fr. Global Sp´ecial Mobile) se stala z´akladn´ım kamenem v mo- biln´ıch komunikac´ıch, d´ıky nˇemuˇz vznikly dneˇsn´ı modern´ı standardy. Je za- loˇzena na vys´ılaˇc´ıch (BTS) a mobiln´ıch telefonech (MT) jakoˇzto pˇrij´ımaˇc´ıch a dalˇs´ıch prvc´ıch. Pro naˇse ´uˇcely je d˚uleˇzit´e pr´avˇe komunikace mezi MT a BTS.

BTS jsou osazeny vys´ılaˇci s v´ıce frekvencemi, nav´ıc jsou tyto vys´ılaˇce zpravidla smˇerov´e (obr. 3.2), vˇsesmˇerov´e vys´ılaˇce jiˇz nejsou tak bˇeˇzn´e. Ko- munikace funguje obdobnˇe jako u vys´ılaˇcek. Na jedn´e frekvenci tedy m˚uˇze ve stejn´y okamˇzik vys´ılat pouze jeden pˇr´ıstroj. Takto by mohl vys´ılaˇc obsluhovat velmi m´alo MT, protoˇze frekvence nelze navyˇsovat libovolnˇe. V pˇr´ıpadˇe, ˇze by dvˇe sousedn´ı BTS vyuˇz´ıvaly stejnou frekvenc,i doch´azelo by k interferenci.

Proto je v GSM pouˇzit jeˇstˇe ˇcasov´y multiplex.

T´ım, ˇze vys´ılaˇc rozdˇel´ı pˇr´ıjem sign´alu na ˇcasov´a ok´enka, tzv. time sloty (TS), m˚uˇze na jedn´e frekvenci obsluhovat v´ıce MT. MT nahr´av´a a n´aslednˇe komprimuje n´aˇs hlas po ´usec´ıch a odes´ıl´a komprimovanˇe na BTS v pˇridˇele- n´ych TS. BTS naslouch´a v kaˇzd´em TS pr´avˇe jednomu MT a ostatn´ı ignoruje.

Pˇri komunikace z BTS do MT je syst´em analogick´y. Komunikace tedy nen´ı spojit´a, ale funguje na principu ”kaˇzd´y chvilku tah´a pilku”. Protoˇze jsou TS tak kr´atk´e, hraje v pˇrenosu roli uˇz i vzd´alenost mezi BTS a MT.

MT tak mus´ı pˇri vˇetˇs´ı vzd´alenosti vys´ılat data v pˇredstihu. Kv˚uli tomu mus´ı BT a MT zn´at vzd´alenost mezi sebou. Vzd´alenost se v GSM urˇcuje pomoc´ı timing advance (TA). Tento parametr nab´yv´a hodnot od 0 aˇz do 63 a rozdˇeluje dosah vys´ılaˇce na p´asma po 550 metrech. Vyn´asoben´ım zjist´ıme, ˇ

ze v GSM se uvaˇzuje maxim´aln´ı vzd´alenost od vys´ılaˇce 35 km kv˚uli rostouc´ı odchylce TA.

3.1.1.b Urˇcen´ı polohy jedn´ım vys´ılaˇcem

(13)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

To pˇrin´aˇs´ı dalˇs´ı zpˇresnˇen´ı v podobˇe zjiˇstˇen´ı mezikruˇz´ı, ve kter´em se pˇr´ıstroj nach´az´ı. Dalˇs´ı a pouˇz´ıvanˇejˇs´ı moˇznost´ı zpˇresnˇen´ı je vyuˇzit´ı TA parametru.

Telefon poskytuje softwarov´e vrstvˇe jak TA, tak Cell ID. Se znalost´ı pozice BTS a vzd´alenosti od n´ı urˇc´ıme jiˇz mezikruˇz´ı, ve kter´em se MT pohybuje.

V pˇr´ıpadˇe, ˇze je vys´ıl´an´ı BTS rozdˇeleno na v´ıce sektor˚u, lze pr˚unikem kruhov´e v´yseˇce a mezikruˇz´ı polohu jeˇstˇe zpˇresnit. Z popisu metody je patrn´e, ˇze se o triangulaci jako takovou nejedn´a.

3.1.1.c Urˇcen´ı polohy dvˇema vys´ılaˇci

Tato metoda vych´az´ı z pˇredchoz´ı. Data o BTS nav´ıc umoˇzˇnuj´ı zpˇresnˇen´ı, pro- toˇze dvˇe z´ony se nˇekde protnou. V ide´aln´ım pˇr´ıpadˇe vznikne pr˚unikem jedin´a relativnˇe mal´a oblast a v oblastech vˇetˇs´ıch mˇest jiˇz m˚uˇzeme z´ıskat pˇresnost v ˇr´adech stovek metr˚u. V horˇs´ım pˇr´ıpadˇe se mezikruˇz´ı protnou a vzniknou dvˇe oddˇelen´e oblasti. V takov´em pˇr´ıpadˇe je nutn´e z´ıskat nˇejak´y pomocn´y bod, aby bylo moˇzn´e urˇcit, kter´a oblast je n´ami hledan´a. Dalˇs´ı moˇznost´ı je upustit od mezikruˇz´ı a jako v´yslednou oblast ch´apat pr˚unik kruh˚u dosahu sign´al˚u (viz obr. 3.3). Jako v´ysledn´a pozice se vol´ı geometrick´y stˇred oblasti.

3.1.1.d Urˇcen´ı polohy v´ıce vys´ılaˇci

C´ım v´ıce vys´ılaˇˇ c˚u je k dispozici, t´ım menˇs´ı je oblast vznikl´a pr˚unikem sign´al˚u (viz obr. 3.4).

3.1.1.e Wi-Fi m´ısto mobiln´ı s´ıtˇe

V´yˇse zm´ınˇen´e postupy jsou pouˇziteln´e pouze pro MT. Zaˇr´ızen´ı bez moˇznosti pˇr´ıjmu s´ıt’ov´eho sign´alu mohou vyuˇz´ıvat Wi-Fi, kter´a m´a podobn´e vlastnosti.

Nav´ıc dosah sign´alu je menˇs´ı a tedy je pˇresnˇejˇs´ı. Proto lze k lokalizaci vyuˇz´ıvat obdobnˇe i Wi-Fi sign´al.

Wi-Fi je standard lok´aln´ıch bezdr´atov´ych s´ıt´ı dle specifikace IEEE 802.11.

Vys´ılaˇc pˇripojen´y k internetu zprostˇredkov´av´a zaˇr´ızen´ım v bl´ızk´em okol´ı bez- dr´atov´y pˇr´ıstup k s´ıti. Bˇeˇznˇe jsou vyuˇz´ıv´ana p´asma 2,4 a 5 GHz. Vys´ılaˇc je sd´ılen´y pro pˇripojen´a zaˇr´ızen´ı a proto pouˇz´ıv´a protokol CSMA/CA. Pˇr´ıstu- pov´y bod Wi-Fi je v jist´em smyslu podobn´y BTS. Lze jej identifikovat dle jeho MAC adresy a d´ıky tomu lze vytv´aˇret datab´aze pozic pˇr´ıstupov´ych bod˚u.

(14)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

Obr´azek 3.2: Typy vys´ılaˇc˚u.

Obr´azek 3.3: Pr˚uniky dosah˚u vys´ılaˇc˚u.

(15)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

Obr´azek 3.4: Oblast pr˚uniku sign´al˚u zpˇresnˇen´a TA a ´uhlem.

Bod C pˇredstavuje BTS a ´uhel F0CF pˇredstavuje sign´al jednoho smˇerov´eho vys´ılaˇce. BodF je ve vzd´alenosti maxim´aln´ıho dosahu BTSC. ObloukKCK0 tvoˇr´ı vnitˇrn´ı hranici TA, obloukLCL0 hranici vnˇejˇs´ı. Obdobnˇe je to pro BTS A a B. V ˇcerven´e oblasti se nech´az´ı MT.

(16)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

3.1.1.f Shrnut´ı

Metoda je nen´aroˇcn´a na zdroje zejm´ena z pohledu baterie. Pro rychl´e zjiˇstˇen´ı polohy s vˇetˇs´ı pˇr´ıpustnou odchylkou je velmi vhodn´a. V porovn´an´ı s GPS kr´atce po zapnut´ı GPS na pˇr´ıstroji ˇci v oblastech s velk´ym poˇctem vysok´ych budov je dokonce pˇresnˇejˇs´ı a rychlejˇs´ı neˇz GPS, zejm´ena vyuˇz´ıv´a-li ke zjiˇstˇen´ı polohy Wi-Fi. Nev´yhodou je velk´a nepˇresnost v oblastech s menˇs´ım poˇctem vys´ılaˇc˚u.

Jen m´alo zaˇr´ızen´ı zpˇr´ıstupˇnuje seznam BTS v dosahu i softwarov´e vrstvˇe.

V drtiv´e vˇetˇsinˇe pˇr´ıpad˚u jsou softwaru zpˇr´ıstupnˇeny pouze ´udaje o aktu´alnˇe pˇripojen´e BTS a t´ım lze vyuˇz´ıt pouze prvn´ı metodu. Zemˇepisn´e souˇradnice BTS a jejich v´ykon oper´atoˇri neposkytuj´ı. Je tedy nutn´a jin´a datab´aze, bud’

intern´ı v pˇr´ıstroji nebo pˇr´ıstupn´a skrz internet. Pˇr´ıklady takov´ych datab´az´ı resp. sluˇzeb jsou zaneseny v tabulce 3.1.

(17)

Metody urˇcov´an´ı zemˇepisn´e polohy Triangulace

Tabulka 3.1: Poskytovatel´e souˇradnic vys´ılaˇc˚u.

N´azev Dostupnost Pozn´amky

Geolocation API (Google)

Placen´e (ceny aˇz po kontaktu s pro- dejcem)

Poskytuje souˇradnice na z´a- kladˇe JSON dotazu na webo- vou sluˇzbu. Operuje s Cell ID i Wi-Fi MAC adresou.

Dalˇs´ı parametry jsou nepo- vinn´e a slouˇz´ı ke zpˇresnˇen´ı po- lohy. Aktu´aln´ı poˇcet z´aznam˚u v datab´azi nen´ı zn´am. [11]

Navizon Placen´e (ceny aˇz po kontaktu s pro- dejcem)

Nab´ız´ı nejen urˇcov´an´ı polohy pˇres Wi-Fi a mobiln´ı s´ıtˇe mimo budovy, ale tak´e tzv. In- door ˇreˇsen´ı pro urˇcen´ı polohy uvnitˇr budov na z´akladˇe Wi- Fi sign´alu. Sluˇzba funguje ob- dobnˇe jako v´yˇse zm´ınˇen´a pˇres HTTP protokol. Aktu´aln´ı po- ˇcet z´aznam˚u v datab´azi nen´ı zn´am.[12]

Location Api (Unwired Labs)

Placen´e (cena od 145$/mˇes´ıc)

Sluˇzba opˇet funguje na b´azi JSON dotaz˚u na servery. Za- mˇeˇruje se pouze na mobiln´ı Cell ID. Datab´aze ˇc´ıt´a 43.7 mil. z´aznam˚u a st´ale roste.[13]

OpenCellID Bezplatn´e Sluˇzba se zamˇeˇruje pouze na mobiln´ı Cell ID. Data jsou volnˇe dostupn´a ve formˇe ak- tualizovan´ych csv soubor˚u in- krement´alnˇe, tj. neni nutn´e po- kaˇzd´e stahovat celou datab´azi.

Pokud se tedy importuje da- tab´aze pˇr´ımo do pˇr´ıstroje, lze tato data vyuˇz´ıvat kompletnˇe bez vyuˇzit´ı internetu, coˇz je proti pˇredeˇsl´ym v´yhoda. Na- vzdory faktu, ˇze se jedn´a o da- tab´azi rozˇsiˇrovanou dobrovol- n´ıky, pˇres´ahl poˇcet z´aznam˚u jiˇz 4 mil.[22]

(18)

Metody urˇcov´an´ı zemˇepisn´e polohy GPS

3.2 GPS

Global Positioning System [9] spravovan´y Spojen´ymi st´aty americk´ymi vy- uˇz´ıv´a jako j´adro 24 satelit˚u krouˇz´ıc´ıch kolem Zemˇe po r˚uzn´ych orbit´ach ve v´yˇsce pˇribliˇznˇe 20 000 km. Dnes krouˇz´ı kolem Zemˇe v´ıce tˇechto satelit˚u jak kv˚uli zlepˇsen´ı pˇr´ıstupnosti, tak kv˚uli obmˇenˇe satelit˚u. Satelity mj. obsahuj´ı velmi pˇresn´e atomov´e hodiny. Satelity vys´ılaj´ı, data z nichˇz je ˇc´ast ˇsifrovan´a.

Veˇrejn´a ˇc´ast je pro civiln´ı ´uˇcely, ˇsifrovan´a je pro vojensk´e. D´ıky tomu si Spo- jen´e st´aty ponechaly moˇznost napˇr. doˇcasnˇe sn´ıˇzit pˇresnost civiln´ı navigace v pˇr´ıpadˇe konfliktu.

Z´akladn´ı sloˇzkou vys´ılan´eho sign´alu je ˇcasov´a znaˇcka poch´azej´ıc´ı z hodin.

Protoˇze se satelity pohybuj´ı po deterministick´ych orbit´ach, je moˇzn´e dle ˇca- sov´e znaˇcky a podpisu satelitu urˇcit, odkud sign´al pˇriˇsel. D´ıky vzd´alenosti doch´az´ı ke zpoˇzdˇen´ı sign´alu. Pˇrij´ımaˇc GPS pˇrijme ˇcasovou znaˇcku a porovn´a ji se sv´ym vnitˇrn´ım ˇcasem. Z rozd´ılu je schopen spoˇc´ıtat vzd´alenost. Pokud tedy pˇrij´ımaˇc zachyt´ı sign´al od 3 nebo v´ıce satelit˚u, je schopen urˇcit svou polohu obdobnˇe jako u triangulace BTS sign´alu. Ve skuteˇcnosti zn´ame body a vzd´alenosti od nich, ˇc´ımˇz z´ısk´av´ame pr˚unik 3 ˇci v´ıce koul´ı. ˇC´ım v´ıce sign´al˚u, t´ım bude poloha pˇresnˇejˇs´ı.

Je patrn´e, ˇze tato metoda m´a sv´e nedostatky. Jedn´ım z nich je fakt, ˇze pˇri pˇrenosu sign´alu m˚uˇze doj´ıt ke zpoˇzdˇen´ı kv˚uli odrazu o pˇrek´aˇzku, jak se tomu dˇeje hlavnˇe v zastavˇen´ych oblastech. Na v´ypoˇcet m´a vliv tak´e to, je-li pˇrij´ımaˇc v pohybu. V neposledn´ı ˇradˇe je problematick´y i fakt, ˇze hodiny pˇrij´ımaˇce nejsou tak pˇresn´e jako atomov´e hodiny druˇzice. Syst´em tedy nejl´epe funguje v m´ıstech s dobr´ym v´yhledem na oblohu. Z toho vypl´yv´a, ˇze pˇri pouˇzit´ı v budov´ach chyba nar˚ust´a nebo se dokonce nepovede spojit s dostateˇcn´ym poˇctem satelit˚u.

Dalˇs´ım probl´emem je skuteˇcnost, ˇze po zapnut´ı GPS MT netuˇs´ı o pozic´ıch satelit˚u nic. Ze zachycen´ych sign´al˚u mus´ı zjistit, o jak´y satelit se jedn´a a od- kud vys´ıl´a. Tyto v´ypoˇcty slouˇz´ı k urˇcen´ı, kter´e satelity mohou b´yt vyuˇzity ke stanoven´ı polohy. V´ypoˇcty trvaj´ı dlouho, takˇze GPS pˇrij´ımaˇc je nˇejakou dobu po zapnut´ı neschopn´y urˇcit polohu. Sloˇzit´e v´ypoˇcty nav´ıc spotˇrebov´a- vaj´ı cennou energii z baterie.

(19)

Metody urˇcov´an´ı zemˇepisn´e polohy Dalˇs´ı moˇznosti urˇcov´an´ı polohy

3.2.1 A-GPS

Reˇsen´ı je tzv. asistovan´ˇ a GPS. Zaˇr´ızen´ı vybaven´a touto technologi´ı vyuˇz´ıvaj´ı internet k tomu, aby odeslala zachycen´e sign´aly a pˇribliˇznou polohu dle BTS na stroj s daleko vˇetˇs´ım v´ykonem. Ten jiˇz vrac´ı informace o poloh´ach satelit˚u a jejich vhodnosti k urˇcen´ı polohy. T´ımto krokem se uˇsetˇr´ı energie a zkr´at´ı ˇ

cas nutn´y k nastartov´an´ı GPS pˇrij´ımaˇce.

3.2.2 Dalˇ s´ı satelitn´ı syst´ emy

GPS nen´ı jedin´y syst´em sv´eho druhu. V Rusku vznikl GLONASS [10] se- st´avaj´ıc´ı z 24 satelit˚u, kter´e se pohybuj´ı ve v´yˇsce 19 000 km. Syst´em byl p˚uvodnˇe vyvinut tak´e jako vojensk´y. Dalˇs´ım krokem tedy bylo nasazen´ı pˇri- j´ımaˇc˚u, kter´e jsou schopn´e vyuˇz´ıvat k urˇcen´ı polohy jak satelity GLONASS, tak satelity GPS. V´ıce satelit˚u znamen´a v´ıce sign´al˚u a tedy vˇetˇs´ı pravdˇe- podobnost, ˇze zkouman´y sign´al bude vhodn´y k urˇcen´ı polohy a MT se na nˇej m˚uˇze zamknout a to pˇrin´aˇs´ı rychlejˇs´ı start lokalizace. Dalˇs´ı v´yhodou je zpˇresnˇen´ı urˇcen´ı polohy.

Dalˇs´ım takov´ym syst´emem je Galileo [8]. Jedn´a se o evropsk´y ekvivalent GPS a GLONASS, kter´y nen´ı vojensk´y a spravuje jej v´ıce evropsk´ych st´at˚u.

Syst´em je pl´anov´an pro 30 satelit˚u, ale v aktivn´ım provozu jsou zat´ım 4.

3.3 Dalˇ s´ı moˇ znosti urˇ cov´ an´ı polohy

MT v dneˇsn´ı dobˇe obsahuj´ı mimo jin´e i r˚uzn´e senzory.

Polohov´e urˇcuj´ıc´ı aktu´aln´ı polohu, resp. n´aklon zaˇr´ızen´ı.

Pohybov´e urˇcuj´ıc´ı vektor zrychlen´ı zaˇr´ızen´ı pˇri pohybu.

Magnetometrick´e supluj´ıc´ı kompas.

Jin´e mˇeˇr´ıc´ı napˇr. teplotu, ´uroveˇn svˇetla ˇci vlhkost.

Vyuˇzit´ı kompasu jako takov´eho asi nen´ı nutn´e popisovat. Zaj´ımavˇejˇs´ı je ovˇsem senzor detekuj´ıc´ı vektor zrychlen´ı. Tento zp˚usob vyuˇz´ıvaj´ı napˇr´ıklad

(20)

Metody urˇcov´an´ı zemˇepisn´e polohy Dalˇs´ı moˇznosti urˇcov´an´ı polohy

nˇekter´e navigace v pˇr´ıpadˇe, ˇze vypadne sign´al GPS. Posledn´ı zn´amou pozici a rychlost uvaˇzuj´ı jako v´ychoz´ı bod. Dalˇs´ı pohyb je vypoˇc´ıt´av´an pomoc´ı vek- toru zrychlen´ı pˇr´ıstroje. Jedn´a se pouze o v´ypoˇcet pˇribliˇzn´eho pohybu, pro- toˇze senzory v MT jsou pro tuto metodu dosti nepˇresn´e. S´am jsem provedl pokus a mˇeˇril hodnoty vektoru zrychlen´ı u MT leˇz´ıc´ıch nehybnˇe na podloˇzce.

Vˇsechny smˇerov´e sloˇzky vektoru kmitaly a neustalovaly se.

Tato metoda nav´ıc nepoˇc´ıt´a s jevy, jako je setrvaˇcnost pohybu, takˇze pˇri prudˇs´ım brzdˇen´ı vznik´a dalˇs´ı nepˇresnost pokud nen´ı telefon pevnˇe spojen s automobilem. Pro pouˇzit´ı v pˇeˇs´ı navigaci by musela b´yt aplikace pˇrizp˚u- sobena konkr´etn´ımu uˇzivateli, aby byla schopna rozpoznat napˇr. ch˚uzi do schod˚u, bˇeh apod. Toho by bylo moˇzn´e doc´ılit uˇcen´ım aplikace v ter´enu.

Nicm´enˇe i v tomto pˇr´ıpadˇe by se projevily nepˇresnosti senzoru. Tento typ urˇcov´an´ı polohy by mohl poslouˇzit jako z´aklad dalˇs´ı pr´ace a nebude zde jiˇz d´ale rozeb´ır´an.

Popsan´e metody jsou ˇcasto zahrnut´e v API syst´em˚u zaˇr´ızen´ı, takˇze v´yvo- j´aˇr pouze mus´ı zv´aˇzit, kterou z metod pouˇz´ıt a API n´aslednˇe vr´at´ı zemˇepisnou polohu.

(21)

4 Vyuˇ zit´ı lokalizace mobiln´ıch zaˇ r´ızen´ı

Moˇznost´ı vyuˇzit´ı lokalizace MT je mnoho a urˇcitˇe nedok´aˇzu postihnout vˇsech- ny. Pokus´ım se tedy pˇribl´ıˇzit ty, kter´e povaˇzuji za nejv´yznamnˇejˇs´ı.

Navigace uˇzivatele mezi stanoven´ymi body at’ pˇri j´ızdˇe autem, na kole nebo pˇri ch˚uzi. MT dnes dok´aˇz´ı nahradit navigaˇcn´ı pˇr´ıstroje. Toto vyuˇzit´ı je limitov´ano bateri´ı (zejm´ena v pˇr´ıpadˇe vyuˇzit´ı pro cyklistiku a pˇeˇs´ı ch˚uzi) a objemem stahovan´ych dat. Navigace pro telefony jsou totiˇz v z´akladˇe dvoj´ıho typu:

• Online vyuˇz´ıvaj´ıc´ı sluˇzby na internetu jako zdroj grafiky i pro v´ypoˇcty.

• Offline prov´adˇej´ıc´ı v´ypoˇcty na pˇr´ıstroji a vyuˇz´ıvaj´ıc´ı mapov´e pod- klady uloˇzen´e na pˇr´ıstroji.

Geocoding je proces, pˇri kter´em jsou adresy, n´azvy podnik˚u nebo firem ˇ

ci jin´a kl´ıˇcov´a slova pˇrev´adˇena na zemˇepisn´e souˇradnice. Stejnˇe jako u navigace mohou b´yt zdroje online i offline.

Reverzn´ı geocoding je opak pˇredchoz´ıho procesu. K zadan´ym zemˇepis- n´ym souˇradnic´ım jsou vyhled´av´any ulice anebo tzv. POI (points of interest) body, coˇz jsou firmy, kav´arny, muzea atd.

C´ılen´a reklama, kdy je na reklamn´ı plochy uvnitˇr aplikac´ı umist’ov´an re- klamn´ı obsah firem z bl´ızk´eho okol´ı.

Sd´ılen´ı polohy s jin´ymi uˇzivateli stejn´e aplikace. Tento princip nach´az´ı vy- uˇzit´ı napˇr. v seznamk´ach, hl´ıd´an´ı dˇet´ı rodiˇci nebo hl´ıd´an´ı zamˇestnanc˚u atp.

(22)

5 V´ yvoj pro platformu Android

Protoˇze OS Android vyvinula a vyv´ıj´ı spoleˇcnost Google, ta sam´a spoleˇcnost d´av´a k dispozici i v´yvojov´e n´astroje. Dlouhou dobu byly tyto n´astroje zˇrejmˇe jedinou pouˇzitelnou variantou. Tato situace se ale zmˇenila. Objevuj´ı se dalˇs´ı moˇznosti, jak vyv´ıjet pro tuto platformu.

Android SDK nejrozˇs´ıˇrenˇejˇs´ı a nejzn´amˇejˇs´ı zp˚usob, jak vyv´ıjet aplikace pro Android. Jako jazyk se vyuˇz´ıv´a Java. Spolu s dalˇs´ımi bal´ıˇcky (napˇr.

emul´atory, lad´ıc´ı n´astroje) tvoˇr´ı plugin pro v´yvojov´e prostˇred´ı Eclipse.

Dalˇs´ı moˇznost´ı je st´ahnout si rovnou upravenou verzi Eclipse, tzv. ADT Bundle nebo alternativu Android Studio, coˇz je upraven´a verze IntelliJ IDEA.

Android NDK umoˇzˇnuj´ıc´ı implementaci nativn´ıho k´odu v C nebo C++.

Tyto n´astroje Google doporuˇcuje pouˇz´ıvat s rozmyslem, protoˇze zejm´ena spr´ava pamˇeti nen´ı na OS Android jednoduch´a. Vhodn´e vyuˇzit´ı nach´az´ı pro n´aroˇcn´e ´ukoly pro procesor s minimem alokovan´e pamˇeti.

Xamarin umoˇzˇnuj´ıc´ı v´yvoj aplikac´ı v jazyce C# a s prostˇredky .NET. Jako v´yvojov´e prostˇred´ı lze vyuˇz´ıt Visual Studio. Nav´ıc umoˇzˇnuje i pˇrenosi- telnost aplikac´ı mezi OS Android, iOS a Windows.

Qt velmi popul´arn´ı framework pro implementaci uˇzivatelsky pˇr´ıjemn´ych apli- kac´ı v C++. Nyn´ı lze tuto technologii vyuˇz´ıt i pro implementaci aplikac´ı pro Android. I zde je moˇzn´a pˇrenositelnost.

PhoneGap je framework umoˇzˇnuj´ıc´ı skrze zn´am´e technologie CSS, HTML a Javascript pˇristupovat k API r˚uzn´ych syst´em˚u, jako je Android, iOS, Symbian a dalˇs´ı.

Android SDK je nejrozˇs´ıˇrenˇejˇs´ım n´astrojem a je tedy i nejl´epe dokumen- tov´an ([1], [2]), proto bude ve zb´yvaj´ıc´ı ˇc´asti pr´ace pouˇz´ıv´ana pr´ave tato technologie.

5.1 Lokalizace zaˇ r´ızen´ı s OS Android

(23)

V´yvoj pro platformu Android Lokalizace zaˇr´ızen´ı s OS Android

NASS, vys´ılaˇc˚u mobiln´ı s´ıtˇe, Wi-Fi s´ıt´ı i pohybov´ych senzor˚u. N´ızko´urovˇnov´e informace sice zpˇr´ıstupˇnuje tak´e, ale ne vˇsechny. Napˇr. n´am poskytne Cell ID, ale zemˇepisn´e souˇradnice jiˇz ne. V takov´em pˇr´ıpadˇe m´ame moˇznost dot´azat se jedn´e ze sluˇzeb z tabulky 3.1.

5.1.1 Google Play Services

Neˇz se zaˇcneme vˇenovat dalˇs´ı problematice, je nutn´e rozebrat tuto knihovnu [14]. Nebyla tu po celou dobu existence OS Android, pˇriˇsla pozdˇeji a jej´ım hlavn´ım ´ukolem je ulehˇcen´ı pr´ace v´yvoj´aˇr˚um. Nab´ız´ı mj.

• jednoduˇsˇs´ı pˇr´ıstup ke sluˇzb´am Googlu, jako Mapy, Google+ aj.

• updaty aplikac´ı

• implementaci ˇcasto ˇreˇsen´ych probl´em˚u, jako black box (z´ısk´an´ı polohy od nejlepˇs´ıho poskytovatele)

Pˇri pouˇz´ıv´an´ı t´eto knihovny je vˇsak nutn´e uvˇedomit si, ˇze nˇekter´e custom ROM1 nejsou schopn´e ji nainstalovat a t´ım nemohou vaˇsi aplikaci vyuˇz´ıvat.

O tomto probl´emu jsem se s´am pˇresvˇedˇcil na Samsung Galaxy Y s upravenou ROM Titanium2.

Knihovna byla uvedena aˇz v pr˚ubˇehu v´yvoje aplikace, coˇz mˇelo za n´asle- dek zmˇenu nˇekter´ych konstrukc´ı. Kv˚uli tomu a v´yˇse zm´ınˇen´emu probl´emu bude v pr´aci obˇcas uvedena i alternativa bez pouˇzit´ı t´eto knihovny.

5.1.2 Krit´ eria

MT nab´ızej´ı v´ıce zdroj˚u, jak z´ıskat polohu. Aplikace se tedy mus´ı nˇejak do- zvˇedˇet, z kter´eho zdroje z´ısk´avat informace. To lze vynutit pˇr´ımo specifikac´ı konkr´etn´ıho zdroje nebo pouˇzit´ım objektu Criteria. Ten v sobˇe v´yvoj´aˇrem udrˇzuje nastaven´e preference na spotˇrebu energie, pˇresnost, rychlost z´ısk´an´ı polohy atp. Objekt LocationManager je pak na z´akladˇe preferenc´ı schopn´y vybrat nejlepˇs´ıho providera (viz listing 5.2). Android aktu´alnˇe vyuˇz´ıv´a 3 pro- videry polohy (viz tabulka 5.1).

1Upraven´a verze OS Android zpravidla vyvinut´a nadˇsenci s c´ılem vylepˇsit funkce OS nebo dostat na star´a zaˇr´ızen´ı vyˇs´ı verze OS Android.

(24)

V´yvoj pro platformu Android Lokalizace zaˇr´ızen´ı s OS Android

Tabulka 5.1: Provideˇri zemˇepisn´e polohy OS Android [16].

Zdroj polohy Popis

GPS PROVIDER zastˇreˇsuje zdroje polohy z GPS a GLONASS NETWORK PROVIDER umoˇzˇnuje pˇr´ıstup k souˇradnic´ım z´ıskan´ym

d´ıky mobiln´ı s´ıti a Wi-Fi s´ıt´ım

PASSIVE PROVIDER vyuˇz´ıv´a jako zdroje polohy jin´e aplikace, tj.

s´am neumoˇzˇnuje z´ısk´an´ı souˇradnic ze s´ıtˇe nebo GPS

5.1.3 Tˇ r´ıda LocationListener

Vysoko´urovˇnov´y pˇr´ıstup k z´ısk´av´an´ı polohy, jak n´azev rozhran´ı napov´ıd´a, funguje na principu posluchaˇce, kter´y se zaregistruje spolu se sv´ym nasta- ven´ım v syst´emu. Tento posluchaˇc je nad´ale notifikov´an o zmˇen´ach polohy a reaguje na nˇe. Tuto tˇr´ıdu vyuˇz´ıv´a jak ˇreˇsen´ı bez vyuˇzit´ı Google Play Servi- ces, tak i s vyuˇzit´ım t´eto knihovny. Pro pouˇzit´ı je nutn´e bud’ implementovat rozhran´ı jinou tˇr´ıdou nebo v m´ıstˇe pouˇzit´ı vytvoˇrit anonymn´ı tˇr´ıdu (viz lis- ting 5.1).

Implementovan´eho posluchaˇce staˇc´ı jiˇz jen pˇrihl´asit pro odbˇer zmˇen ze- mˇepisn´e polohy. Pro tyto ´uˇcely slouˇz´ı pˇret´ıˇzen´a metoda requestLocationUp- dates() (viz listing 5.3 a 5.4).

Metoda nab´ız´ı i dalˇs´ı varianty, napˇr. s vyuˇzit´ım objektu PendingIntent, kter´y umoˇzˇnuje vykonat jin´e aplikaci kus k´odu s pr´avy aktu´aln´ı aplikace.

Knihovna Google Play Services umoˇzˇnuje zjednoduˇsen´ı, kter´e bude pops´ano v anal´yze frameworku.

(25)

V´yvoj pro platformu Android Lokalizace zaˇr´ızen´ı s OS Android

Listing 5.1: Jednor´azov´e z´ısk´an´ı polohy s vyuˇzit´ım krit´eri´ı.

//ziskani LocationManagera jakozto sluzby systemu LocationManager mgr = (LocationManager)

getSystemService(LOCATION_SERVICE);

//nastaveni preferenci pro ziskavani polohy Criteria kriteria = new Criteria();

//vyzadani nejen lokace ale i smeru kompasu kriteria.setBearingRequired(true);

kriteria.setBearingAccuracy(Criteria.ACCURACY_LOW);

//pouze bezplatne sluzby a vysoka presnost kriteria.isCostAllowed(false);

kriteria.setAccuracy(Criteria.ACCURACY_FINE);

//vysledny identifikator ma podobu retezce

String nejlepsi = mgr.getBestProvider(criteria, true);

//ziskani posledni zname polohy ze zdroje urceneho na zaklade preferenci

Location location = mgr.getLastKnownLocation(best);

(26)

V´yvoj pro platformu Android Lokalizace zaˇr´ızen´ı s OS Android

Listing 5.2: Implementace rozhran´ı LocationListener anonymn´ı tˇr´ıdou.

LocationListener ll = new LocationListener() {

public void onLocationChanged(Location location){

//rekace na novou polohu napr. posunuti mapy }

public void onProviderEnabled(String provider){

//reakce na zapnuti providera polohy

//nutne pro implementaci rozhrani, metoda muze byt prazdna

}

public void onProviderDisabled(String provider){

//reakce na vypnuti providera polohy

//nutne pro implementaci rozhrani, metoda muze byt prazdna

}

public void onStatusChanged(String provider, int status, Bundle extras){

//reakce na zmenu stavu providera

//napr. pokud provider najednou neni schopny delsi dobu ziskat polohu

//jako v pripade GPS uvnitr budovy

//nutne pro implementaci rozhrani, metoda muze byt prazdna

} }

(27)

V´yvoj pro platformu Android Lokalizace zaˇr´ızen´ı s OS Android

Listing 5.3: Odbˇer zmˇen lokace s vyˇz´adan´ym providerem.

LocationManager mgr =

(LocationManager)getSystemService(LOCATION_SERVICE) //implementace neni dulezita

LocationListener ll = new LocationListener(){...}

//minimalni cas pro obdrzeni nove lokace //0 znamena, ze bude obdrzena kazda zmena int minCas = 0;

//minimalni zmena vzdalenosti pro obdrzeni nove lokace float minVzdalenost = 0;

//prihlaseni ll pro odber zmen lokace

mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, minCas, minVzdalenost, ll);

...

//zruseni odberu zmen lokace mgr.removeUpdates(ll);

Listing 5.4: Odbˇer zmˇen lokace s providerem volen´ym syst´emem.

LocationManager mgr =

(LocationManager)getSystemService(LOCATION_SERVICE) //implementace neni dulezita

LocationListener ll = new LocationListener(){...}

//minimalni cas pro obdrzeni nove lokace //0 znamena, ze bude obdrzena kazda zmena int minCas = 0;

//minimalni zmena vzdalenosti pro obdrzeni nove lokace float minVzdalenost = 0;

//vytvoreni defaultnich preferenci Criteria kriteria = new Criteria();

//prihlaseni ll pro odber zmen lokace, provider bude zvolen systemem dle preferenci

//posledni parametr null nahrazuje objekt Looper //proto bude notifikovano pouze volajici vlakno

mgr.requestLocationUpdates(minCas, minVzdalenost, kriteria, ll, null);

...

//zruseni odberu zmen lokace mgr.removeUpdates(ll);

(28)

6 Location Framework

Pˇredmˇetem t´eto pr´ace je framework pro zjednoduˇsen´ı implementace aplikac´ı vyuˇz´ıvaj´ıc´ıch zemˇepisnou polohu (location-based aplikac´ıch, d´ale jen LB).

Mˇel by tedy zahrnovat funkcionality, kter´e se ˇcasto vyskytuj´ı v tˇechto aplika- c´ıch. D´ale by mˇel splˇnovat poˇzadavek jednoduch´e modifikace nebo rozˇs´ıˇren´ı.

LB aplikace kromˇe zjiˇstˇen´ı polohy potˇrebuj´ı tuto polohu tak´e vizualizo- vat nebo sd´ılet. Pro vizualici je vhodn´a mapa a pro sd´ılen´ı internet. Proto framework obsahuje bal´ıˇcky pro pr´aci se s´ıt´ı, s mapov´ymi podklady i s daty uˇzivatel˚u.

6.1 Modely

V lokalizaˇcn´ıch aplikac´ıch je vhodn´e udrˇzovat polohu objektu (i v pˇr´ıpadˇe pouze vaˇs´ı polohy) spolu s dalˇs´ımi informacemi. Protoˇze je Java objektovˇe orientovan´y (d´ale OO) jazyk, nab´ız´ı se varianta pouˇzit´ı modelov´ych tˇr´ıd. Tyto tˇr´ıdy maj´ı bezparametrick´y kontruktor, gettery a settery pro sv´e atributy (zpravidla primtivn´ı datov´e typy). Toto ˇreˇsen´ı m´a hned nˇekolik d˚uvod˚u:

• pˇrehlednost n´avrhu

• snadn´e rozˇs´ıˇren´ı tˇr´ıd o dalˇs´ı atributy

• moˇznost pouˇzit´ı knihoven tˇret´ıch stran pro serializaci a deserializaci dat Tyto tˇr´ıdy jsou obsaˇzeny v bal´ıˇcku Objects. Bal´ıˇcek obsahuje tˇr´ıdy, kter´e se snaˇz´ı postihnout z´akladn´ı potˇreby pro LB aplikace.

Point obsahuje atributy pro popis, identifikaci bodu na mapˇe.

Player je potomkem tˇr´ıdy Point a obsahuje nav´ıc atributy pro popis stavu a jm´ena.

Group umoˇzˇnuje shluknout instancePoint ˇci jej´ı potomky do slovn´ıku, pˇri-

(29)

Location Framework Vizualizace na mapˇe

Game shlukuje instance tˇr´ıdy Group opˇet pomoc´ıSparseArray. Umoˇzˇnuje tak´e uloˇzen´ı krit´eri´ı hry, jako napˇr. prostor vymezen´y souˇradnicemi.

JSONPuzzle je spoleˇcn´y pˇredek pro vˇsechny pˇredch´azej´ıc´ı tˇr´ıdy. Obsahuje pouze dvˇe metody pro serializaci a deserializaci objekt˚u do, resp. z, form´atu JSON, ˇcehoˇz se vyuˇz´ıv´a pˇri pˇrenosu dat.

6.2 Vizualizace na mapˇ e

V okamˇziku, kdy jsou k dispozici modely a jejich zemˇepisn´e souˇradnice, je v ˇradˇe aplikac´ı vhodn´e je vizualizovat na mapˇe. Mapa v tomto pˇr´ıpadˇe nezna- men´a pouze obr´azek m´ısta na Zemi. Jedn´a se o komplexn´ı ˇreˇsen´ı zahrnuj´ıc´ı:

• um´ıstˇen´ı ukazatele na mapu dle souˇradnic

• zjiˇstˇen´ı zemˇepisn´ych souˇradnic konkr´etn´ıho pixelu na obrazovce

• pohyb a zoom mapy

• kreslen´ı lomen´e ˇc´ary (tzv. polyline) na mapy dle zadan´ych zemˇepisn´ych souˇradnic

Vˇsechny tyto funkce pracuj´ı nad mapou jako takovou. Ovˇsem proˇc s sebou nosit cel´y atlas, pokud n´am staˇc´ı mapa mˇesta? Ve skuteˇcnosti je mapa, kterou v´ıd´ame na obrazovk´ach zaˇr´ızen´ı, sloˇzena z obr´azk˚u, tzv. dlaˇzdic. Dlaˇzdice lze jednoznaˇcnˇe identifikovat na z´akladˇe zoomu, zemˇepisn´ych souˇradnic a typu zobrazen´ı (3D, satelitn´ı, turistick´e atd.). Implementac´ı existuje mnoho, lze je vˇsak rozdˇelit zhruba do nˇekolika skupin.

XHTML ˇreˇsen´ı vyuˇz´ıvaj´ıc´ı k zobrazen´ı a pr´aci s mapou vestavˇen´y prohl´ıˇzeˇc s j´adrem WebKit1. Mezi takov´a ˇreˇsen´ı patˇr´ı napˇr´ıklad Google Maps V3 ˇ

ci Leaflet [20], kter´a stoj´ı na Javascriptu, CSS3 a HTML. Tato ˇreˇsen´ı jsou t´ım p´adem pouˇziteln´a i pro desktopov´e aplikace. Vhodnˇejˇs´ı je dle m´eho n´azoru sp´ıˇse Leaflet, protoˇze jiˇz pˇri n´avrhu bylo poˇc´ıt´ano s t´ım, ˇ

ze technologie bude urˇcen´a i pro telefony a tablety. Nev´yhodou tohoto n´avrhu je n´ar˚ust objemu dat staˇzen´ych i odeslan´ych prostˇrednictv´ım

1Renderovac´ı j´adro pro prohl´ıˇzeˇce vyuˇz´ıvaj´ıc´ı prohl´ıˇzeˇce jako Google Chrome, Safari nebo Opera

(30)

Location Framework Vizualizace na mapˇe

internetu. Kladem je fakt, ˇze pokud bude cel´a aplikace implementov´ana ve vestavˇen´em prohl´ıˇzeˇci, je snadno pˇrenositeln´a na jin´e platformy.

Kompletnˇe offline ˇreˇsen´ı, kter´a se nespol´ehaj´ı na ˇz´adn´e dalˇs´ı sluˇzby ani v ot´azce v´ypoˇct˚u ani v ot´azce mapov´ych podklad˚u. Tato ˇreˇsen´ı jsou vhodn´a pro navigace, protoˇze vyˇzaduj´ı pouze prvotn´ı pˇripojen´ı k in- ternetu pro instalaci a staˇzen´ı mapov´ych podklad˚u. Z toho vypl´yv´a, ˇze aplikace vˇcetnˇe podklad˚u m˚uˇze zabrat stovky MB na ´uloˇziˇsti.

Hybridn´ı model vyuˇz´ıvaj´ıc´ı v´yhody obou pˇredchoz´ıch metod.

6.2.1 Integrace Google Maps Android API

Ve frameworku je vyuˇzito veˇrejn´eho API od Googlu pro zjednoduˇsen´ı pr´ace s mapami.

Patˇr´ı mezi hybridn´ı varianty a je v aktu´aln´ı verzi 2 (V2). Verze 1 (V1) jiˇz nen´ı podporov´ana, v dobˇe zapoˇcet´ı pr´ace vˇsak byla aktu´aln´ı. V1 byla m´enˇe pˇr´ıvˇetiv´a, jelikoˇz funkce i mapov´e podklady byly pevnˇe sv´az´any. Pro zobra- zen´ı mapy se vyuˇz´ıval widget2MapView. To nutilo v´yvoj´aˇre pˇrijmout politiku Googlu ohlednˇe vyuˇzit´ı map, coˇz mj. znamenalo z´akaz ukl´ad´an´ı nebo modi- fikace dlaˇzdic a omezen´y poˇcet bezplatn´ych staˇzen´ı dlaˇzdic. Pokud v´yvoj´a- ˇr˚um z nˇejak´eho d˚uvodu tato pravidla nevyhovovala, museli hledat alternativy nebo pˇrij´ıt s vlastn´ı implementac´ı.

Jednou z alternativ byl OSMDroid, coˇz byla alternativn´ı implementace MapView vyuˇz´ıvaj´ıc´ı jako zdroj dlaˇzdic projekt OpenStreetMap (d´ale OSM) [21]. OSM je projekt nab´ızej´ıc´ı dlaˇzdice mapy svˇeta pod otevˇrenou licenc´ı.

Dlaˇzdice jsou tvoˇreny dobrovoln´ıky a tvoˇr´ı tak alternativu k podklad˚um od Googlu, protoˇze je lze modifikovat ˇci ukl´adat.

Mapy V2 jiˇz obsahuj´ı lepˇs´ıˇreˇsen´ı. Mapa se zobrazuje do widgetuFragment a zdroj dlaˇzdic lze specifikovat pˇred´an´ım instance rozhran´ıTileProvider. Ta mus´ı implementovat jedinou metodu getTile(int x, int y, int zoom), kter´a vrac´ı dlaˇzdici pro zadan´e parametry. Co bude zdrojem dlaˇzdic, je jiˇz na v´y- voj´aˇri. Pro OSM je to URL serveru, kter´y vrac´ı dlaˇzdice. Dalˇs´ı moˇznost´ı je ˇcerpat dlaˇzdice pˇr´ımo z ´uloˇziˇstˇe, coˇz pˇrin´aˇs´ı rychlejˇs´ı zobrazen´ı dlaˇzdice a moˇznost vyuˇzit´ı i mimo dosah mobiln´ı s´ıtˇe.

(31)

Location Framework Vizualizace na mapˇe

6.2.2 Rozˇ siˇ ruj´ıc´ı API frameworku

Tˇr´ıdy zjednoduˇsuj´ıc´ı vizualizace jsou obsaˇzeny v bal´ıˇcku Maps.

SimpleUrlTileProvider je implementace abstraktn´ı tˇr´ıdy UrlTileProvi- der. Vyˇzaduje pouze URL adresu serveru, kter´y poskytuje dlaˇzdice.

Servery zpravidla funguj´ı tak, ˇze je vol´ana URL ve form´atu

http://server.com/z/x/y.png a server vrac´ı jako odpovˇed’ dlaˇzdici. Proto instance vyˇzaduje URL serveru, ve kter´e jsou za promˇenn´ex, y a z uve- den´e placeholdery3, za kter´e jsou pak konkr´etn´ı promˇenn´e dosazovan´e pˇri dotazu na server. Dalˇs´ımi parametry jsou pˇredpokl´adan´e rozmˇery dlaˇzdic.

MixedTileProvider umoˇzˇnuje oproti pˇredchoz´ı tˇr´ıdˇe jednu z´asadn´ı vˇec:

ukl´adat dlaˇzdice do ´uloˇziˇstˇe. Funguje tak, ˇze jako parametr vyˇzaduje instanciUrlTileProvideru. V okamˇziku, kdy je vyˇzadov´ana dlaˇzdice, je nejdˇr´ıve prozkoum´ano ´uloˇziˇstˇe. Pokud dlaˇzdice v ´uloˇziˇsti nen´ı, je sta- ˇ

zena prostˇrednictv´ım UrlTileProvideru, zobrazena a uloˇzena v ´uloˇziˇsti pod sv´ymi souˇradnicemi. Dalˇs´ım parametrem je ˇcasov´y ´udaj, kter´y ˇr´ık´a, po jakou dobu jsou dlaˇzdice ch´ap´any jako aktu´aln´ı. Neaktu´aln´ı dlaˇzdice bude v pˇr´ıpadˇe poˇzadavku pˇreps´ana novˇe staˇzenou verz´ı.

MapObjectsManager zjednoduˇsuje spr´avu objekt˚u na mapˇe. Objekt mapy um´ı zobrazovat markery a kreslit na mapu, bohuˇzel tyto objekty nejsou bez uchov´an´ı reference d´ale pˇr´ıstupn´e. Manager obsahuje seznamy, v kte- r´ych tyto objekty uchov´av´a a lze pˇres nˇe i iterovat. Do list˚u lze vkl´adat a odeb´ırat a gettery vrac´ı seznamy pouze v readonly podobˇe.

RectangleBoundsMarkerDragListener implementuje rozhran´ıOnMar- kerDragListener, kter´e umoˇzˇnuje reagovat na ud´alosti pˇri drag & drop pohybu s markerem po mapˇe. Tato tˇr´ıda poskytuje dva markery, d´ıky kter´ym je na mapˇe vykreslen obd´eln´ık. Pohybem s markery se mˇen´ı tvar obd´eln´ıku. Toto je uˇziteˇcn´e pro vymezov´an´ı hranic napˇr. pro hru nebo pro pˇri hl´ıd´an´ı dˇet´ı.

CircleBoundsMarkerDragListener je obdobou pˇredchoz´ı tˇr´ıdy. Liˇs´ı se pouze t´ım, ˇze dva markery urˇcuj´ı stˇred a polomˇer kruhu.

BoundedOnCameraChangeListener je implementace rozhran´ıOnCame- raChangeListener, kter´e umoˇzˇnuje reagovat na ud´alost pˇresunu po mapˇe

3Charakteristick´e textov´e sekvence, ktel´e lze snadno naj´ıt a n´aslednˇe nahradit jin´ym textem.

(32)

Location Framework Knihovny

skrze metoduonCameraChangeListener(CameraPosition position). Jak n´azev napov´ıd´a, umoˇzˇnuje tˇr´ıda vymezit zemˇepisn´y prostor, ve kter´em se m˚uˇze uˇzivatel pohybovat. Tato skuteˇcnost pom´ah´a sn´ıˇzit objem sta- ˇ

zen´ych dat, protoˇze pokud pohled mapy nevystoup´ı z omezen´eho pro- storu, nebudou se stahovat ani dlaˇzdice mimo tento prostor. Probl´emem pˇri implementaci se uk´azal b´yt efekt plynul´eho zpomalen´ı pouˇz´ıvan´y pˇri scrollov´an´ı v syst´emu Android. Spoˇc´ıv´a v tom, ˇze pokud uˇzivatel na dotykov´e obrazovce pohne rychle prstem, je mapa pˇresunuta stej- n´ym smˇerem a odpov´ıdaj´ıc´ı intenzitou. D´ıky tomu se mi nedaˇrilo doc´ılit toho, aby byla mapa limitov´ana striktnˇe na vymezen´y prostor, protoˇze odstranˇen´ı efektu mˇelo za n´asledek nepohodln´e zach´azen´ı s mapou pro uˇzivatele. Zvolil jsem tedy strategii, kter´a tento efekt ponech´av´a. Roz- hran´ı posluchaˇce je implementov´ano tak, ˇze pˇri ukonˇcen´ı pohybu mapy kontroluje pozici stˇredu zobrazen´ı. Pokud je tento bod mimo vyme- zen´e hranice, je mapa vycentrov´ana na pˇredem stanoven´e souˇradnice.

Grafika tak z˚ustala plynul´a a ovl´ad´an´ı uˇzivatelsky pˇr´ıjemn´e.

6.3 Knihovny

Ve frameworku samozˇrejmˇe nesmˇej´ı chybˇet ani konstanty nebo knihovn´ı fun- kce. Ty jsou obsaˇzen´e v bal´ıˇcku Libs. Pˇri rozˇsiˇrov´an´ı frameworku nebo jeho vyuˇzit´ı jsem poˇc´ıtal s t´ım, ˇze budou tˇr´ıdy z bal´ıˇcku editov´any popˇr. dalˇs´ı knihovn´ı tˇr´ıdy budou um´ıstˇeny pro pˇrehlednost pr´avˇe sem.

GameStates je tˇr´ıda slouˇz´ıc´ı k um´ıstˇen´ı konstant t´ykaj´ıc´ıch se hry. Ve fra- meworku obsahuje jen konstantu pro nespecifikovan´e ID hry.

PlayerStates je obdoba pˇredchoz´ı tˇr´ıdy, ale je urˇcena pro konstanty t´yka- j´ıc´ı se hr´aˇc˚u, tj. instanc´ı tˇr´ıdy Player. Ve frameworku obsahuje pouze konstantu pro nespecifikovan´e ID hr´aˇce.

SimpleStringAESCrypto je knihovn´ı tˇr´ıda obsahuj´ıc´ı metody pro syme- trick´e ˇsifrov´an´ı ˇretˇezc˚u algoritmem AES na z´akladˇe poskytnut´eho ˇre- tˇezce - kl´ıˇce. Z kl´ıˇce je vygenerov´an pomoc´ı SHA256 hash, kter´y je n´aslednˇe vyuˇzit pro ˇsifrov´an´ı, resp. deˇsifrov´an´ı. Hlavn´ım d˚uvodem pro vznik t´eto knihovny byla moˇznost poskytnout v´yvoj´aˇr˚um zabezpeˇcit

(33)

Location Framework Komunikace

• v´ypoˇcet re´aln´e vzd´alenosti dvojice zemˇepisn´ych souˇradnic

• konverzi zemˇepisn´ych souˇradnic reprezentovan´ych starˇs´ı tˇr´ıdouLo- cation na novˇejˇs´ı reprezentaci LatLng

• v´ypoˇcet koordin´at˚u dlaˇzdice ze zemˇepisn´ych souˇradnic a zoomu, coˇz lze vyuˇz´ıt pro staˇzen´ı dlaˇzdic pˇredem bez nutnosti vyuˇzit´ı widgetu mapy

• z´ısk´an´ı parametr˚u pro vytvoˇren´ı instanceLatLngBounds4z dvojice zemˇepisn´ych souˇradnic nez´avisle na vz´ajemn´e poloze

• vytv´aˇren´ı kopi´ı instanc´ıPolygonOptions a CircleOptions, kter´e se vyuˇz´ıvaj´ı pro drag & drop vymezov´an´ı hranic, ovˇsem bez zkop´ıro- v´an´ı konkr´etn´ıch zemˇepisn´ych bod˚u

GlobalVars je tˇr´ıda vyuˇz´ıvaj´ıc´ı n´avrhov´y vzor jedin´aˇcek, kter´a umoˇzˇnuje ukl´ad´an´ı glob´aln´ıch objektov´ych promˇenn´ych. Tˇr´ıda ukl´ad´a pod Strin- gov´e kl´ıˇce libovoln´e instance objekt˚u a umoˇzˇnuje spr´avu t´eto kolekce po celou dobu bˇehu aplikace. Data vˇsak nejsou perzistentn´ı a doch´az´ı k jejich ztr´atˇe po vypnut´ı pˇr´ıstroje.

6.4 Komunikace

D˚uleˇzitou a velmi promˇenlivou souˇc´ast´ı LB aplikac´ı je sd´ılen´ı pozice a dalˇs´ıch dat. Pˇri n´avrhu frameworku bylo nutn´e zv´aˇzit nˇekolik hledisek.

6.4.1 Spojen´ı s aplikac´ı

Aplikace pro Android se mj. skl´adaj´ı z tzv. aktivit. Aktivita je v podstatˇe uˇzi- vatelsk´e rozhran´ı, na kter´e se d´ıv´ame. Jakmile je na telefonu nˇeco zobrazeno souvis´ı to s aktivitou. Aktivita m´a sv´e vl´akno, kter´e je spjat´e s uˇzivatelsk´ym rozhran´ım. Pokud se rozhodneme v tomto vl´aknˇe spustit dlouh´y v´ypoˇcet nebo napˇr. stahov´an´ı dat, pˇrestane uˇzivatelsk´e rozhran´ı reagovat, protoˇze bude vyt´ıˇzen´e pr´avˇe t´ımto v´ypoˇctem. Pokud pˇrestane aktivita reagovat po nˇekolik sekund, je syst´emem n´asilnˇe ukonˇcena. Pro dlouhotrvaj´ıc´ı ´ukony na pozad´ı existuje nˇekolik moˇznost´ı jak je implementovat.

4Obd´eln´ıkov´y prostor nad n´ımˇz lze se lze dot´azat, zda dan´a zemˇepisn´a souˇradnice leˇz´ı uvnitˇr.

(34)

Location Framework Komunikace

V LB aplikac´ıch komunikuj´ıc´ıch pˇres internet je potˇrebn´e, aby aplikace neust´ale z´ısk´avala informace od ostatn´ıch ´uˇcastn´ık˚u a z´aroveˇn odes´ılala lo- k´aln´ı ´udaje. Pro tento ´uˇcel by se hodilo samostatn´e vl´akno se smyˇckou, kter´a by tuto smyˇcku umoˇzˇnovala nejl´epe i v okamˇziku, kdy je aplikace napˇr. mi- nimalizov´ana.

Pro takov´e ´uˇcely existuje tˇr´ıda Service. Sluˇzba bˇeˇz´ı na pozad´ı aplikace nehledˇe na aktivity a je moˇzn´e ji nechat vykon´avat k´od, i kdyˇz je aplikace minimalizov´ana nebo se aktivita pˇrekresluje z d˚uvodu otoˇcen´ı obrazovky.

Takov´a sluˇzba je obsaˇzena v bal´ıˇckuNetworking. Protoˇze vyuˇzit´ı frameworku mus´ı b´yt dostateˇcnˇe flexibiln´ı, je tˇr´ıda abstraktn´ı. Tˇr´ıda v sobˇe zahrnuje kostru pro nˇekolik ˇcast´ych ´ukon˚u spojen´ych s LB aplikacemi.

6.4.2 Zp˚ usob pˇ renosu

Pokud aplikace zahrnuje komunikaci s jin´ymi zaˇr´ızen´ımi, je nutn´e zvolit zp˚u- sob pˇrenosu dat. Pokud vynech´ame, pro tento pˇr´ıpad, ponˇekud exotick´e moˇz- nosti (ftp, e-mail atp.), tak z˚ustane nˇekolik nejpouˇz´ıvanˇejˇs´ıch protokol˚u.

TCP a UDP

Protokoly pro pˇr´ım´e vyuˇzit´ı pracnˇejˇs´ı. Sk´ytaj´ı vˇsak moˇznost komuni- kovat i s zaˇr´ızen´ımi, kter´e neum´ı obsluhovat HTTP poˇzadavky. Toto ˇreˇsen´ı bylo p˚uvodnˇe vybr´ano pro realizaci uzavˇren´eho bytov´eho proto- kolu z d˚uvodu ´uspory pˇren´aˇsen´ych dat. Od Javy 1.4 je souˇc´ast´ı API bal´ıˇcekjava.nio.channel, kter´y obsahuje mj. tˇr´ıdu SocketChannel. D´ıky t´eto tˇr´ıdˇe ve spolupr´aci s tˇr´ıdou Selector lze se sockety pracovat ob- dobnˇe jako v jazyce C.

InstanceSocketChannel se otevˇrou a pˇripoj´ı na adresu a port. a zaregis- truj´ı uSelectoru.Selector n´aslednˇe hl´ıd´a a pˇr´ıpadnˇe poskytuje instance SocketChannel pro ˇcten´ı nebo z´apis. T´ım lze se sockety pracovat jako s bytovˇe orientovan´ymi streamy. Nev´yhodou tohoto pˇr´ıstupu je kom- plikovanost a pˇri snaze zmenˇsit objem dat se st´av´a tˇeˇzce rozˇsiˇriteln´ym napˇr. v pˇr´ıpadˇe pˇrid´av´an´ı atribut˚u k jedn´e z modelov´ych tˇr´ıd.

Google Cloud Messaging (GCM)

Sluˇzba poskytovan´a Googlem, jeˇz moˇzˇnuje odes´ılat data z aplikaˇcn´ıho

(35)

Location Framework Komunikace

GCM je zdarma a samozˇrejmˇe poskytuje v´ıce funkc´ı jako napˇr. odesl´an´ı jedn´e zpr´avy na v´ıce zaˇr´ızen´ı nebo zpˇetnou komunikaci ze zaˇr´ızen´ı na server. Aplikaˇcn´ı server mus´ı implementovat GCM Server a aplikace zaseGCM Client. Mezi nimi stoj´ıGCM Connection Servery, kter´e pˇre- d´avaj´ı zpr´avy (viz obr´azek 6.1).

GCM rozezn´av´a zaˇr´ızen´ı, resp. uˇzivatele d´ıky jejich Google ´uˇct˚um, kter´e jsou nutn´e pro moˇznost napˇr. stahov´an´ı aplikac´ı z Google Play Store5. GCM nebyla vybr´ana, protoˇze pokud by se nˇejak´a aplikace mˇela roz- ˇsiˇrovat i na jin´e OS pro mobiln´ı zaˇr´ızen´ı, musel by aplikaˇcn´ı server rozezn´avat z jak´e platformy poˇzadavek pˇriˇsel a napˇr. v pˇr´ıpadˇe Win- dow 8 by musel vyuˇz´ıvat sluˇzby Azure6. Pˇri testovac´ı implementaci aplikaˇcn´ıho serveru v jazyce Python nav´ıc doˇslo k pot´ıˇz´ım, kdy data ze serveru odeˇsla bez ohl´aˇsen´ı chyby, ale na zaˇr´ızen´ı nedorazila a na Google Developers Console7 nebyla ˇz´adn´a data zapoˇc´ıt´ana.

HTTP

Velmi rozˇs´ıˇren´y internetov´y protokol pro pˇrenos dokument˚u HTML i dalˇs´ıch soubor˚u. Funguje syst´emem dotaz-odpovˇed’. Uˇzivatel vznese textov´y poˇzadavek na konkr´etn´ı URL, pˇriˇcemˇz souˇc´ast´ı poˇzadavku m˚u- ˇ

zou b´yt dalˇs´ı parametry. Server odpov´ıd´a textovou hlaviˇckou obsahu- j´ıc´ı informace o k´odov´an´ı textu, verzi HTTP protokolu, typu vracen´eho obsahu atp. N´asleduje pr´azdn´y ˇr´adek a samotn´y obsah, napˇr. webov´a str´anka (viz listing 6.2).

Typ obsahu, tzv. MIME Type urˇcuje, zda jde o HTML str´anku, pdf soubor nebo hudebn´ı z´aznam mp3. Lze tedy pˇren´aˇset i textov´a data, kter´a poskytuj´ı dostateˇcnou flexibilitu pro framework. HTTP protokol nav´ıc funguje nad TCP, takˇze nen´ı nutn´e ˇreˇsit poˇrad´ı, popˇr. v´ypadek datov´ych packet˚u.

HTTP protokol je nav´ıc zn´am´y a implementace serveru spoˇc´ıv´a v imple- mentaci webov´eho serveru. K tomu dnes jiˇz slouˇz´ı mnoho framework˚u (Django, .NET MVC, Zend), kter´e pr´aci znaˇcnˇe urychl´ı. Dalˇs´ı v´yhodou je fakt, ˇze jeden server dok´aˇze obslouˇzit jak´ekoliv zaˇr´ızen´ı, kter´e dok´aˇze zas´ılat HTTP poˇzadavky nehledˇe na platformu. M˚uˇze tedy obsluhovat jak mobiln´ı zaˇr´ızen´ı, tak bˇeˇzn´y poˇc´ıtaˇc, aniˇz by se musela implementace nˇejak liˇsit. Nev´yhodou je, ˇze server nem˚uˇze s´am bez vyzv´an´ı zaslat data

5Online obchod s aplikacemi pro OS Android.

6Cloudov´a platforma spoleˇcnosti Microsoft vyuˇz´ıvan´a k hostov´an´ı a ˇsk´alov´an´ı webov´ych aplikac´ı skrze datacentra Microsoftu.

7Online centrum pro v´yvoj´re, kde mohou spravovat Googlem poskytnut´e sluˇzby pro sv´e aplikace.

(36)

Location Framework Komunikace

na klienta, takˇze klient se mus´ı pravidelnˇe dotazovat na nov´a data.

Klientsk´a implementace obn´aˇs´ı vytvoˇren´ı dotazu, naplnˇen´ı parametry a odesl´an´ı na poˇzadovanou URL. Jedna z moˇznost´ı implementace je ke shl´ednut´ı v listingu 6.1.

Tato moˇznost komunikace byla nakonec vybr´ana pro framework i pˇres jej´ı nedostatek. Protoˇze zaˇr´ızen´ı by mˇelo pravidelnˇe zas´ılat na server dotaz se svou lokac´ı, m˚uˇze jako odpovˇed’ mj. dostat i zpr´avu, zda jsou k dispozici nˇejak´a nov´a data odkud je st´ahnout.

Obr´azek 6.1: Sch´ema GCM komunikace. [15]

6.4.3 Form´ at pˇ ren´ aˇ sen´ ych dat

Pˇri pˇren´aˇsen´ı dat v textov´em form´atu je pro interpretaci dat mnoho moˇznost´ı.

J´a jsem vybral JSON (z ang. JavaScript Object Notation). D˚uvod˚u bylo hned nˇekolik.

• velmi rozˇs´ıˇren´y form´at serializace dat

• rozˇs´ıˇren´ı objekt˚u o atributy nen´ı probl´em

• vyuˇz´ıvan´y i sluˇzbami tˇret´ıch stran jako napˇr. Google Geolocation API

• d´ıky rozˇs´ıˇrenosti existuj´ı jiˇz hotov´a ˇreˇsen´ı pro serializaci a deserializaci

(37)

Location Framework Komunikace

JSON dok´aˇze reprezentovat (viz listing 6.3):

1. ˇRetˇezce 2. ˇC´ısla

(a) Cel´a

(b) S plovouc´ı desetinnou ˇc´arkou 3. Speci´aln´ı hodnoty

(a) True nebo False (b) Null

4. Neindexovan´e pole hodnot

5. Objekty, resp. pole, indexovan´e ˇretˇezcov´ymi kl´ıˇci

Pravidla lze kombinovat, takˇze JSON um´ı pˇren´aˇset i pole objekt˚u. Pˇri pr´aci s ˇretˇezci lze vyuˇz´ıt escapov´an´ı pro znaky jako konec ˇr´adku(\n), tabu- l´ator(\t) nebo znaky UTF-16 zapsan´e hexadecim´alnˇe (\uXXXX).

6.4.3.a Reakce na zpr´avy

Framework poˇc´ıt´a s dvˇema druhy zpr´av. Prvn´ı typ je vlastnˇe odpovˇed’ na HTTP poˇzadavek na server. Odpovˇed’ je zpracov´ana v abstraktn´ı metodˇe processResponse(HttpResponse response, String url), kter´a je vol´ana uvnitˇr metody sendDataToServer(String data, String serverUrl). Konkr´etn´ı imple- mentace je tedy na program´atorovi. Parametr url je vhodn´e pouˇz´ıt k rozli- ˇsen´ı, jak m´a b´yt s odpovˇed´ı naloˇzeno. T´ım se nab´ız´ı implementace v podobˇe stromu podm´ınek, kdy kl´ıˇcem bude pr´avˇe adresa, odkud odpovˇed’ pˇriˇsla.

Druh´y pˇr´ıpad je reakce na zpr´avy od aplikace. Ty mohou pˇrij´ıt od uˇziva- tele skrze uˇzivatelsk´e rozhran´ı nebo od aplikace jako takov´e napˇr. od vl´akna, kter´e bude pravidelnˇe vykon´avat nˇejakou ˇcinnost.

V t´eto f´azi bylo nutn´e zvolit vhodn´y zp˚usob doruˇcov´an´ı zpr´av do sluˇzby.

Jedn´ım ze zp˚usob˚u je ponechat si referenci na sluˇzbu, d´ıky ˇcemuˇz k n´ı lze pˇristupovat pˇr´ımo. Tento zp˚usob je ovˇsem nepohodln´y pro aplikace, kde bude vyuˇzito mnoho aktivit. Mnou zvolen´y zp˚usob je robustnˇejˇs´ı. Zakl´ad´a se na zas´ıl´an´ı instanc´ı tˇr´ıdyIntent. InstanceItent v sobˇe obsahuje mj.

(38)

Location Framework Komunikace

Listing 6.1: Implementace HTTP poˇzadavku pro OS Android.

//nastaveni hlavicky pro odesilani metodou POST HttpClient httpclient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost("serverUrl");

List<NameValuePair> params = new ArrayList<NameValuePair>(1);

params.add(new BasicNameValuePair("data", data));

try {

//pridani parametru do pozadavku

httpPost.setEntity(new UrlEncodedFormEntity(params));

//zachyceni reakce na pozadavek

HttpResponse httpResponse = httpClient.execute(httpPost);

//zpracovani odpovedi

processResponse(httpResponse);

} catch (Exception e) { osetreni vyjimky handleError(e);

}

Listing 6.2: Pˇr´ıklad HTTP komunikace skrze telnet.

telnet w3c.org 80 -4 Trying 128.30.52.45...

Connected to w3c.org.

Escape character is ’^]’.

GET / HTTP/1.1

HTTP/1.0 403 Forbidden Cache-Control: no-cache Connection: close

Content-Type: text/html

<html><body><h1>403 Forbidden</h1>

Request forbidden by administrative rules.

</body></html>

(39)

Location Framework Komunikace

Listing 6.3: Uk´azka dat ve form´atu JSON.

# neindexovane pole [1, 2.5, true, "text"]

# indexovane pole resp. instance objektu {

"var1":1,

"var2":2.5,

"var3":true,

"var4":"text"

}

# neindexovane pole objektu [

{

"var1":1,

"var2":2.5,

"var3":true,

"var4":"text"

}, {

"var1":1,

"var2":2.5,

"var3":true,

"var4":"text"

} ]

(40)

Location Framework Komunikace

• typ akce reprezentovan´y ˇretˇezcem

• slovn´ık promˇenn´ych s ˇretˇezcov´ymi kl´ıˇci

Tyto instance lze pak skrze syst´em zas´ılat broadcastem8. Sluˇzba nebo ak- tivita, kter´a implementuje instanciBroadcastReceiver, tj. jeho metody onRe- ceive(Context context, Intent intent), m˚uˇze na zaslan´e instance Intent re- agovat nebo je nechat b´yt. Instanci tˇr´ıdy BroadcastReceiver je nutn´e jeˇstˇe registrovat u instance LocalBroadcastManager spolu s instanc´ıIntentFilter, kter´a obsahuje seznam akc´ı pro odeb´ır´an´ı

6.4.3.b Odes´ıl´an´ı zpr´av

Zpr´avy mohou b´yt na server odes´ıl´any skrze HTTP poˇzadavek nebo skrze Intent do jin´e aktivity, resp. sluˇzby. OS Android vyuˇz´ıv´aIntenty i pro spouˇs- tˇen´ı aplikac´ı nebo napˇr. otev´ır´an´ı internetov´ych str´anek. D´ıky komunikaci pˇres Intenty m˚uˇze b´yt framework souˇc´ast´ı tohoto toku informac´ı syst´emem a reagovat napˇr. i na n´ızk´y stav baterie apod.

6.4.3.c Aktualizace lokace pˇr´ıstroje

Souˇc´ast´ı sluˇzby na pozad´ı je i pravideln´e z´ısk´av´an´ı nov´e lokace pˇr´ıstroje. Pro tento pˇr´ıpad byla zvolena jin´a varianta neˇz v listingu 5.3, resp. 5.4. Knihovna Google Play Services nab´ız´ı zjednoduˇsen´ı pro odbˇer aktu´aln´ı polohy i nasta- ven´ı zp˚usobu odbˇeru. Proces je jednoduch´y, ale na slovn´ı popis zdlouhav´y, proto je n´azornˇejˇs´ı uk´azka v listingu 6.4.

Zjednoduˇsen´e nastaven´ı spoˇc´ıv´a ve volbˇe druhu odbˇeru lokace metodou setPriority(int type) prostˇrednictv´ım konstant z tˇr´ıdy LocationRequest [17]

(viz tabulka 6.1). K tomu je tˇreba nastavit jeˇstˇe intervaly pravideln´eho ak- tivn´ıho odbˇeru metodousetInterval(int interval) a pasivn´ıho odbˇeru setFas- testInterval(int interval). Aktivn´ı odbˇer znamen´a, ˇze je lokace vyˇz´ad´ana. Pa- sivn´ı funguje tak, ˇze lokace jsou obdrˇzeny od jin´ych bˇeˇz´ıc´ıch aplikac´ı, kter´e si aktivnˇe polohu vyˇz´adaly.

Protoˇze sluˇzba sama implementuje rozhran´ıLocationListener, m˚uˇze na

(41)

Location Framework Integrace frameworku

Pro pouˇzit´ı ve sluˇzbˇe staˇc´ı implementovat abstraktn´ı metodu setupProper- tiesOfLocationRequest() a v n´ı prov´est nastaven´ı instance LocationRequestu.

Spojen´ı jiˇz sluˇzba obstar´a sama.

Tabulka 6.1: Moˇznosti odbˇeru polohy LocationClientem.

Konstanta Popis

PRIORITY BALANCED POWER ACCURACY Cast´ˇ e kompromisn´ı nastaven´ı. Dlouh´e intervaly aktivn´ıch poˇzadavk˚u jsou pro- kl´ad´any pasivn´ım z´ısk´av´an´ım polohy.

PRIORITY HIGH ACCURACY Poˇzadavek nejvyˇsˇs´ı

moˇzn´e pˇresnosti a pra- videln´eho odbˇeru.

PRIORITY LOW POWER Staˇc´ı niˇzˇs´ı pˇresnost,

coˇz ˇsetˇr´ı baterii. Napˇr.

pokud je zapojen´a GPS, tak je vyuˇzita pouze s´ıt’ k urˇcen´ı polohy.

PRIORITY NO POWER Slouˇz´ı k nastaven´ı

pouze pasivn´ıho pˇr´ı- jmu polohy.

6.5 Integrace frameworku

Cel´y framework je zabalen´y jako *.jar soubor a staˇc´ı jej k projektu pouze pˇripojit. V prostˇred´ıEclipse je postup n´asleduj´ıc´ı:

1. vytvoˇrit v projektu adres´aˇrlibs, pokud jiˇz neexistuje 2. nakop´ırovat do adres´aˇre knihovnu frameworku

3. pˇridat knihovnu do Build path projektu pˇres Project -> Properties ->

Java Build Path -> Libraries -> Add JARs

(42)

Location Framework Integrace frameworku

Listing 6.4: Pˇrihl´aˇsen´ı k odbˇeru polohy s vyuˇzit´ım Google Play Services [18].

public class MainActivity extends Activity implements

ConnectionCallbacks,OnConnectionFailedListener,LocationListener {

private LocationClient lc;

private LocationRequest;

// metoda zajistujici iniciaci aktivity

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// protoze trida implementuje rozhrani ConnectionCallbacks a // OnConnectionFailedListener lze vyuzit jako argumenty this lc = new LocationClient(this, this, this);

// pripojeni clienta pro odber sluzby lc.connect();

// vytvoreni prazdneho pozadavku lr = LocationRequest.create();

// nastaveni zpusobu ziskavani lokace

lr.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

// interval pro vyzadani lokace aktivne lr.setInterval(100000);

// interval pro obdrzeni lokace od jinych aplikaci pasivne lr.setFastestInterval(10000);

}

// volana ve chvili, kdy je LocationClient pripojen

// pozadavek je vhodne umistit zde, protoze metoda lc.connect() // je asynchronni

@Override

public void onConnected(Bundle dataBundle) { lc.requestLocationUpdates(lr, this);

}

// volana pri notifikaci o zmene polohy

@Override

public void onLocationChanged(Location location) {...}

(43)

7 Aplikace

Pro ovˇeˇren´ı pouˇzitelnosti frameworku je vhodn´a implementace aplikace, kter´a jej vyuˇz´ıv´a. Zvolil jsem aplikaci pro sd´ılen´ı pozice a vizualizaci ´uˇcastn´ık˚u na mapˇe.

Uˇzivatel m˚uˇze vytvoˇrit skupinu a jej´ı ID a heslo pˇredat jin´ym uˇzivatel˚um, kteˇr´ı se mohou do skupiny pˇrihl´asit. Uˇzivatel´e v r´amci skupiny se vz´ajemnˇe vid´ı na mapˇe. Uˇzivatel m˚uˇze b´yt pˇrihl´aˇsen ve v´ıce map´ach a mezi skupinami m˚uˇze vyb´ırat.

Aplikace ovˇsem slouˇz´ı k ovˇeˇren´ı funkˇcnosti a nalezen´ı pˇr´ıpadn´ych moˇz- nost´ı vylepˇsen´ı. K jej´ımu detailn´ımu pochopen´ı m˚uˇze ˇcten´aˇr nahl´ednout do pˇriloˇzen´ych zdrojov´ych k´od˚u.

7.1 Datov´ y model

Model (viz Obr´azek 7.3) sest´av´a ze tˇr´ı tabulek. Skuteˇcnost, ˇze uˇzivatel (User) m˚uˇze b´yt pˇrihl´aˇsen ve v´ıce skupin´ach (Groups), vede na vazbu m:n, kter´a je rozloˇzena v tabulce GroupUser.

Na zaˇr´ızen´ı vˇsak datab´azi vyuˇz´ıvat nebudeme, aby bylo moˇzn´e uk´azat moˇznosti frameworku. Proto jsou v aplikaˇcn´ı ˇc´asti data reprezentov´ana za pomoci modelov´ych tˇr´ıd (viz Obr´azek 7.4).

7.2 Pouˇ zit´ı frameworku

Aplikace vyuˇz´ıv´a kromˇe modelov´ych tˇr´ıd i implementaci abstraktn´ı tˇr´ıdyNe- tworkService - BaseService. Implementac´ı dev´ıti abstraktn´ıch metod se z t´eto sluˇzby st´av´a komunikaˇcn´ı centrum aplikace.

getBinder vrac´ı objektIBinder. Ten je vr´acen pˇri spuˇstˇen´ı sluˇzby z aktivity jako v´azan´e. IBinder pak zpˇr´ıstupˇnuje veˇrejn´e metody a promˇenn´e.

buildTrayNotification je obalovac´ı metodou volanou jiˇz pˇri vytv´aˇren´ı sluˇz- by. Jej´ım ´uˇcelem je zajistit, aby sluˇzba mˇela neust´al´y z´aznam panelu

Odkazy

Související dokumenty

Jelikoˇz m´a kaˇzd´y zamˇestnanec ˇCSOB k dispozici pracovn´ı mobiln´ı zaˇr´ızen´ı s operaˇcn´ım syst´emem Android, nab´ız´ı se vytvoˇren´ı mobiln´ı aplikace,

Teˇ ziˇstˇ em bakal´ aˇrsk´ e pr´ ace je implementace origin´ aln´ı aplikace pro tvorbu animac´ı, jej´ıˇ z hlavn´ı konkurenˇ cn´ı v´ yhodou je podpora pro automatick´

Tato pr´ace se zab´yv´a anal´yzou, n´avrhem a implementac´ı dˇetsk´e ˇc´asti mobiln´ı aplikace na platformˇe Android a je psan´a v programovac´ım jazyce Kotlin..

Pˇredloˇ zen´ a bakal´ aˇrsk´ a pr´ ace se zab´ yv´ a odhadov´ an´ım geometrie dvou kamer z korespondenc´ı, za situac´ı kdy se vyskytuje v´ yznamn´ e mnoˇ zstv´ı

Je tˇ eˇ zk´ e urˇ cit, kter´ a ˇ c´ ast cviˇ cen´ı je nejn´ aroˇ cnˇ ejˇs´ı, protoˇ ze do hry vstupuje i pr´ ace pseudopilot˚ u, kteˇr´ı, vzhledem k enormn´ı

Aˇ ckoli je zaˇr´ızen´ı Mikrotik a jeho operaˇ cn´ı syst´ em RouterOS urˇ cen pˇredevˇs´ım ke smˇ e- rov´ an´ı mezi s´ıtˇ emi, nen´ı to tak vˇ zdy a jeho moˇ znosti

Jedn´ım ze z´ akladn´ıch c´ıl˚ u t´ eto pr´ ace bylo pr´ avˇ e vytvoˇren´ı hledaˇ cky dis- ponuj´ıc´ı displejem, na kter´ em by bylo moˇ zn´ e zobrazit vˇ etˇs´ı ˇ

modelem ˇ s´ıˇ ren´ı z´ aˇ ren´ı v plazmatu zaloˇ zen´ em na principu raytracingu, kter´ y je v pr´ aci vyuˇ zit jednak pro modelov´ an´ı absorpce laserov´ eho svazku