• Nebyly nalezeny žádné výsledky

VYSOKÉ U ˇCENÍ TECHNICKÉ V BRN ˇE BRNO UNIVERSITY OF TECHNOLOGY

N/A
N/A
Protected

Academic year: 2022

Podíl "VYSOKÉ U ˇCENÍ TECHNICKÉ V BRN ˇE BRNO UNIVERSITY OF TECHNOLOGY"

Copied!
63
0
0

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

Fulltext

(1)

VYSOKÉ U ˇ CENÍ TECHNICKÉ V BRN ˇ E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ CNÍCH TECHNOLOGIÍ ÚSTAV PO ˇ CÍTA ˇ COVÉ GRAFIKY A MULTIMÉDIÍ

FACULTY OF INFORMATION TECHNOLOGY

DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

MOBILNÍ APLIKACE PRO PODPORU ˇ RÍZENÍ DOPRAVNÍCH STAVEB

MOBILE APPLICATION SUPPORTING MANAGEMENT OF TRAFFIC CONSTRUCTIONS

DIPLOMOVÁ PRÁCE

MASTER’S THESIS

AUTOR PRÁCE Bc. RADEK OBO ˇ RIL

AUTHOR

VEDOUCÍ PRÁCE Doc. Ing. ADAM HEROUT, Ph.D.

SUPERVISOR

BRNO 2015

(2)
(3)

Abstrakt

Tato pr´ace se zab´yv´a v´yvojem aplikace pro podporu ˇr´ızen´ı dopravn´ıch staveb. V´ysledn´e ˇreˇsen´ı se skl´ad´a z mobiln´ı aplikace a serverov´e ˇc´asti. Mobiln´ı aplikace umoˇzˇnuje pomoc´ı integrovan´eho fotoapar´atu, map a GPS preciznˇe dokumentovat pr˚ubˇeh dopravn´ıch staveb v ter´enu a nasb´ıran´a data odes´ılat na server. Serverov´a ˇc´ast zahrnuje webovou sluˇzbu pro komunikaci s klienty a webovou aplikaci pro spr´avu datab´aze a zpracov´an´ı nab´ıran´ych dat.

Kromˇe n´avrhu a implementace jsou diskutov´any vyuˇzit´e vlastnosti a technologie mobiln´ıch zaˇr´ızen´ı. Pr´ace se tak´e zab´yv´a souˇcasn´ymi nejv´yznamnˇejˇs´ımi mobiln´ı platformami a rozeb´ır´a koncepty a technologie multiplatformn´ıho v´yvoje, zejm´ena n´astroj Xamarin a framework MvvmCross, kter´e byly pouˇzity pˇri v´yvoji aplikace.

Abstract

This thesis deals with development of an application supporting management of traffic constructions. The resulting solution consists of a mobile application and a server appli- cation. The mobile application allows users to document progress of a construction using integrated camera, maps and GPS, and send collected data to the server. The server ap- plication includes a web service for client-server communication, and a web application for database management and processing of the collected data. Apart from the design and im- plementation, the features and technologies of mobile devices utilized by the application are discussed. The thesis also reviews current most significant mobile platforms and analyses concepts and technologies of cross-platform development, especially Xamarin and Mvvm- Cross, which were used for development of the above-mentioned application.

Kl´ıˇ cov´ a slova

Mobiln´ı aplikace, webov´a sluˇzba, podpora dopravn´ıch staveb, multiplaformn´ı v´yvoj, An- droid, iOS, Windows Phone, Xamarin, MvvmCross

Keywords

Mobile application, web service, road construction, cross-platform, Android, iOS, Windows Phone, Xamarin, MvvmCross

Citace

Radek Oboˇril: Mobiln´ı aplikace pro podporu ˇr´ızen´ı

dopravn´ıch staveb, diplomov´a pr´ace, Brno, FIT VUT v Brnˇe, 2015

(4)

Mobiln´ı aplikace pro podporu ˇ r´ızen´ı dopravn´ıch staveb

Prohl´ aˇ sen´ı

Prohlaˇsuji, ˇze jsem tuto pr´aci vypracoval samostatnˇe pod veden´ım pana Doc. Ing. Adama Herouta a uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇcerpal.

. . . . Radek Oboˇril 26. kvˇetna 2015

Podˇ ekov´ an´ı

T´ımto bych chtˇel podˇekovat panu Doc. Ing. Adamu Heroutovi, vedouc´ımu t´eto pr´ace, za odbornou pomoc, ochotu a ˇcas, kterou mi pˇri jej´ı tvorbˇe vˇenoval. D´ale bych r´ad podˇekoval Ing. Petru Kˇrenkovi a spoleˇcnosti Q2 Interactive za poskytnut´ı zdroj˚u, potˇrebn´ych pˇri tvorbˇe t´eto pr´ace a Ing. Romanu Kopˇrivovi za konzultace specifikac´ı.

c

Radek Oboˇril, 2015.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇc- n´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.

(5)

Obsah

1 Uvod´ 2

2 Specifikace a anal´yza poˇzadavk˚u 4

2.1 Zad´an´ı. . . 4

2.2 Architektura ˇreˇsen´ı . . . 4

2.3 Akt´eˇri . . . 6

2.4 Vyuˇzit´e technologie a vlastnosti mobiln´ıch zaˇr´ızen´ı . . . 7

3 Mobiln´ı platformy a multiplatformn´ı v´yvoj 10 3.1 Nejrozˇs´ıˇrenˇejˇs´ı mobiln´ı platformy . . . 10

3.2 Multiplatformn´ı v´yvoj . . . 14

3.3 Xamarin . . . 15

3.4 MvvmCross . . . 17

4 N´avrh 25 4.1 Dom´ena syst´emu . . . 25

4.2 Mobiln´ı aplikace . . . 26

4.3 Webov´a sluˇzba . . . 30

4.4 Webov´a aplikace . . . 32

5 Implementace 37 5.1 Mobiln´ı aplikace . . . 37

5.2 Serverov´a ˇc´ast. . . 44

6 Testov´an´ı 50 6.1 Uˇzivatelsk´e testov´an´ı. . . 50

7 Z´avˇer 52 Literatura 54 Pˇr´ılohy 57 Seznam pˇr´ıloh. . . 58

A Obsah CD 59

(6)

Kapitola 1

Uvod ´

I pˇres velk´y rozmach webov´ych technologi´ı, mobiln´ıch technologi´ı a ERP syst´em˚u v po- sledn´ıch letech, mnoho firem st´al´e pouˇz´ıv´a pro spr´avu zdroj˚u, zak´azek a firemn´ıch proces˚u zastaral´e syst´emy, kter´e ˇcasto spol´ehaj´ı v´yhradnˇe na tiˇstˇen´e a ruˇcnˇe psan´e podklady. To je d´ano rozmanit´ym zamˇeˇren´ım firem, specifiky a rozd´ıly ve firemn´ıch procesech, pro jejichˇz modelov´an´ı je ˇcasto nutn´e vyvinout software na m´ıru. Na trhu je tedy st´ale prostor pro produkty tohoto zamˇeˇren´ı, jejichˇz ned´ılnou souˇc´ast´ı se v posledn´ı dobˇe st´avaj´ı tak´e aplikace pro mobiln´ı zaˇr´ızen´ı.

Dle v´yzkumn´e a poradensk´e agentury Gartner pˇrekonal v prvn´ım kvart´ale roku 20131 prodej tzv. chytr´ych mobiln´ıch telefon˚u prodej telefon˚u klasick´ych2. D´a se tedy oˇcek´avat, ˇ

ze v budoucnosti bude vˇetˇsina uˇzivatel˚u mobiln´ıch telefon˚u vlastnit pr´avˇe chytr´e telefony.

Casto se jedn´ˇ a o pˇristroje s v´ykonem, kter´eho bylo jeˇstˇe pˇred nˇekolika lety moˇzn´e dos´ahnout pouze na osobn´ıch poˇc´ıtaˇc´ıch pˇri ˇr´adovˇe vyˇsˇs´ı spotˇrebˇe elektrick´e energie. Tato zaˇr´ızen´ı tak´e zpravidla podporuj´ı datov´e pˇrenosy pˇres s´ıt’ GSM, urˇcov´an´ı pozice pomoc´ı druˇzicov´ych navigaˇcn´ıch syst´em˚u a jsou vybaveny integrovan´ymi kamerami. Dalˇs´ım jejich spoleˇcn´ym znakem je moˇznost v´yvoje nativn´ıch aplikac´ı pro jejich mobiln´ı operaˇcn´ı syst´emy, kter´e mohou tˇechto vlastnost´ı vyuˇz´ıvat.

Jedn´ım z obor˚u, ve kter´ych je moˇzn´e vyuˇz´ıt modern´ı technologie chytr´ych mobiln´ıch tele- fon˚u jsou dopravn´ı stavby. Dopravn´ımi stavbami se v kontextu t´eto pr´ace rozum´ı v´ystavba,

´

udrˇzba nebo rekonstrukce dopravn´ıch komunikac´ı. Prim´arnˇe jsou uvaˇzov´any komunikace pro osobn´ı dopravu, tedy silnice a d´alnice. Silniˇcn´ı s´ıt’ v ˇCesk´e Republice dosahovala v roce 2013 celkov´e d´elky 55 716 kilometr˚u3. N´aklady na silniˇcn´ı infrastrukturu se v ˇCR pohybuj´ı roˇcnˇe okolo 60 mld. Kˇc 4. Stabilnˇe se tedy jedn´a o aktivn´ı odvˇetv´ı pr˚umyslu.

Ukolem t´´ eto pr´ace je vytvoˇrit mobiln´ı aplikaci pro podporu ˇr´ızen´ı dopravn´ıch staveb.

Aplikace umoˇzˇnuje ˇr´ızen´ı prac´ı a jejich precizn´ı dokumentaci pˇr´ımo v ter´enu pomoc´ı integro- van´eho fotoapar´atu a technologi´ı pro urˇcov´an´ı polohy. Poˇr´ızen´a dokumentace je odes´ıl´ana na server pro dalˇs´ı zpracov´an´ı.

Kapitola 2 analyzuje zad´an´ı a potˇrebn´e vlastnosti c´ılov´ych zaˇr´ızen´ı. D´ale identifikuje technologick´a ´uskal´ı, kter´a byla pˇri v´yvoji aplikace nutn´e pˇrekonat. Kapitola 3 popisuje souˇcasn´y stav trhu s chytr´ymi mobiln´ımi telefony. Zab´yv´a se moˇznostmi multiplatformn´ıho

1Zdroj: [8]

2Rozum´ı se mobiln´ı telefony bˇz´ıc´ı na a propriet´arn´ı platformˇe (tj. bez standardn´ıho mobiln´ıho syst´emu), jejichˇz sadu funkc´ı nen´ı moˇzn´e uˇzivatelsky rozˇs´ıˇrit. Nˇekdy jsou oznaˇcov´any jako tzv. hloup´e telefony. V angliˇctinˇe se pouˇz´ıv´a v´yraz feature phone.

3Jedn´a se o souˇcet d´elek d´alnic a silnic prvn´ı, druh´e a tˇret´ı tˇr´ıdy.

4Zdroje: [6,4]

(7)

v´yvoje a bl´ıˇze popisuje technologie, kter´e byly vybr´any pro implementaci aplikace, pˇre- devˇs´ım n´astroj Xamarin a framework MvvmCross. Kapitoly 2 a 3 vznikly z vˇetˇs´ı ˇc´asti v r´amci semestr´aln´ıho projektu. Kapitola4prezentuje n´avrh jednotliv´ych ˇc´ast´ı v´ysledn´e apli- kace. N´asleduj´ıc´ı kapitola 5je vˇenov´ana jej´ı implementaci. Testov´an´ı aplikace je pops´ano v kapitole6.

(8)

Kapitola 2

Specifikace a anal´ yza poˇ zadavk˚ u

Tato kapitola analyzuje poˇzadavky na aplikaci. Zab´yv´a se jej´ım zad´an´ım a popisuje vlast- nosti a technologie c´ılov´ych zaˇr´ızen´ı, kter´e jsou pro funkci v´ysledn´e aplikace z´asadn´ı.

2.1 Zad´ an´ı

Spoleˇcnost Q2 Interactive, s´ıdl´ıc´ı v Brnˇe, se rozhodla vytvoˇrit produkt pro podporu doprav- n´ıch staveb. Jedn´a se o ˇreˇsen´ı umoˇzˇnuj´ıc´ı spr´avu prov´adˇen´ych prac´ı a jejich dokumentaci v ter´enu pomoc´ı mobiln´ıho zaˇr´ızen´ı, kter´e bude moˇzn´e integrovat jako souˇc´ast ERP syst´emu.

Tento produkt nen´ı zad´an konkr´etn´ım klientem. Mˇel by m´ıt hlavnˇe demonstraˇcn´ı ´ulohu pro z´ısk´av´an´ı nov´ych klient˚u z oboru dopravn´ıch staveb a slouˇzit jako z´aklad pro v´yvoj pro- dukt˚u, nasaditeln´ych do re´aln´eho provozu. N´avrh aplikace je proto v nˇekter´ych ohledech zjednoduˇsen.

Pˇrestoˇze aplikace nebyla vyv´ıjena pro konkr´etn´ıho klienta, impulz pro jej´ı vytvoˇren´ı vznikl na z´akladˇe z´ajmu manaˇzer˚u firem z oboru dopravn´ıch staveb, se kter´ymi spoleˇcnost Q2 Interactive spolupracovala v oblasti internetov´eho marketingu. Poˇzadavky, zachycen´e v n´asleduj´ıc´ıch sekc´ıch byly z´ısk´any pˇrev´aˇznˇe na z´akladˇe neform´aln´ıch rozhovor˚u s Ing. Petrem Kˇrenkem, jednatelem spoleˇcnosti Q2 Interactive a Ing. Romanem Kopˇrivou, obchodn´ım manaˇzerem spoleˇcnosti Znaˇcky Morava, a.s.

2.2 Architektura ˇ reˇ sen´ı

Poˇzadovan´e ˇreˇsen´ı je aplikace typu klient – server. Jeho sch´ema je zn´azornˇeno na obr´azku 2.1. Jednotliv´e ˇc´asti jsou pops´any v n´asleduj´ıc´ım textu.

2.2.1 Klient

Roli klienta pˇredstavuje mobiln´ı aplikace pro pouˇzit´ı v ter´enu. Jej´ım hlavn´ım ´uˇcelem je poˇrizov´an´ı pˇresn´e obrazov´e dokumentace pomoc´ı integrovan´e kamery mobiln´ıho zaˇr´ızen´ı.

Kromˇe obrazov´e dokumentace obsahuj´ı z´aznamy tak´e informace o m´ıstˇe poˇr´ızen´ı, pˇredevˇs´ım pˇresnou polohu, z´ıskanou pomoc´ı lokalizaˇcn´ı technologie mobiln´ıho zaˇr´ızen´ı. Podle polohy umoˇzˇnuje aplikace urˇcit dalˇs´ı informace o m´ıstˇe, napˇr. ˇc´ıslo silnice, okres nebo katastr.

Z´aznamy dokumentuj´ı hlavnˇe vykonan´e pr´ace na zak´azk´ach, ale aplikace tak´e umoˇzˇnuje poˇrizov´an´ı z´aznam˚u, kter´e se vykonan´ych prac´ı pˇr´ımo netykaj´ı - napˇr. dokumentov´an´ı ˇskod, zp˚usoben´ych pˇr´ırodn´ımi ˇzivly, apod.

(9)

Server s hlavní databází

Webová aplikace

Webová služba

Klient - mobilní aplikace

Obr´azek 2.1: Sch´ema aplikace.

Aplikace tak´e podporuje ˇr´ızen´ı prac´ı – umoˇzˇnuje vytv´aˇren´ı a zmˇeny jednotliv´ych ´ukol˚u, kter´e spadaj´ı do zak´azky, pˇr´ımo v ter´enu. Pˇri vytv´aˇren´ı ´ukol˚u je aplikace schopna urˇcovat d´elky ´usek˚u komunikace.

Pro spojen´ı se serverem pˇri pr´aci v ter´enu vyuˇz´ıv´a aplikace mobiln´ıho internetov´eho pˇripojen´ı. Mus´ı proto poˇc´ıtat s jeho omezenou dostupnost´ı a umoˇzˇnovat odloˇzenou syn- chronizaci. Aplikace by ide´alnˇe mˇela b´yt multiplatformn´ı, minim´alnˇe mus´ı fungovat na zaˇr´ızen´ıch bˇeˇz´ıc´ıch na platformˇe Android.

2.2.2 Server

Serverovou aplikaci je moˇzn´e rozdˇelit na dvˇe n´asleduj´ıc´ı ˇc´asti:

Webov´a sluˇzba – zajiˇst’uje komunikaci s klienty. Umoˇzˇnuje pˇredevˇs´ım pˇrenos dat na- sb´ıran´ych v ter´enu na server, a to vˇcetnˇe obrazov´e dokumentace. Dalˇs´ım ´ukolem je synchronizace aktu´aln´ıch uloˇzen´ych dat k zak´azk´am a nastaven´ı na klientsk´a zaˇr´ızen´ı.

Pro tyto ´uˇcely poskytuje vhodn´e aplikaˇcn´ı rozhran´ı (API).

Webov´a aplikace – jej´ım hlavn´ım ´uˇcelem je spr´ava zak´azek a zpracov´an´ı dat, kter´a byla nasb´ır´ana v ter´enu. Umoˇzˇnuje tak´e prov´adˇen´ı operac´ı, ke kter´ym nejsou mobiln´ı zaˇr´ı- zen´ı vhodn´a. Obzvl´aˇst’ takov´e, kter´e zahrnuj´ı zad´av´an´ı delˇs´ıch ˇc´ast´ı textu, nebo jin´e operace, kter´e se na mobiln´ıch zaˇr´ızen´ıch prov´adˇej´ı obt´ıˇznˇe kv˚uli mal´ym rozmˇer˚um ob- razovky. Zejm´ena se jedn´a o pˇr´ıpravu nov´ych zak´azek, kter´a zahrnuje pˇresnou definici jednotliv´ych ´ukol˚u.

Protoˇze server obsahuje hlavn´ı datab´azi cel´eho syst´emu, mus´ı webov´a aplikace umoˇz- ˇ

novat tak´e spr´avu dat pˇrijat´ych z ter´enu a jejich slouˇcen´ı se st´avaj´ıc´ımi daty zak´azek.

(10)

Vytvořit/upravit záznam prací

Synchronizovat data zakázek

ze serveru

Připravit zakázku

Sloučit přijaté změny s hlavní databází Stavbyvedoucí

Manažer zakázky

Administrátor

Odeslat vytvořená a upravená data

na server

Spravovat uživatelské účty

Spravovat nastavení systému

Obr´azek 2.2: Diagram pˇr´ıpadu uˇzit´ı specifikovan´e aplikace.

Z existence v´ıce klient˚u tak´e vypl´yv´a moˇznost vzniku konflikt˚u v pˇrijat´ych datech, k jejichˇz ˇreˇsen´ı mus´ı webov´a aplikace poskytovat vhodn´e rozhran´ı.

2.3 Akt´ eˇ ri

Ze specifikovan´ych poˇzadavk˚u vypl´yv´a existence tˇr´ı n´asleduj´ıc´ıch akt´er˚u (rol´ı):

Stavbyvedouc´ı – reprezentuje vedouc´ıho pracovn´ıka v ter´enu, kter´y m´a na starosti doku- mentaci proveden´ych prac´ı. Jeho interakce se syst´emem se omezuje na pouˇzit´ı mobiln´ı aplikace. Nem´a tedy pˇr´ıstup do webov´e aplikace.

Manaˇzer zak´azky – m´a za ´ukol spr´avu dat v syst´emu. Jeho hlavn´ım ´ukolem je vytv´aˇren´ı nov´ych zak´azek a ´ukol˚u, ze kter´ych se jednotliv´e zak´azky skl´adaj´ı a kter´e je tˇreba

(11)

Technologie Rychlost - downlink1 Rychlost - uplink1 Pokryt´ı 2

EDGE 236 Kbit/s 59,2 Kbit/s 96,4%

HSPA+ 42 Mbit/s 5,76 Mbit/s

35,4 %

LTE 100 Mbit/s 57,6 Mbit/s

Tabulka 2.1: Pˇrehled rychlost´ı a pokryt´ı mobiln´ıho datov´eho pˇripojen´ı na ´uzem´ı ˇCR. Zdroje:

[24,28,26,31,30,7]

v ter´enu vykonat. Jeho ´ulohou je d´ale spr´ava zmˇen, kter´e jsou na server odes´ıl´any z ter´enu, a jejich slouˇcen´ı s daty v hlavn´ı datab´azi. Prim´arnˇe pracuje s webovou aplikac´ı.

Sd´ıl´ı z´akladn´ı pr´ava s akt´erem Stavbyvedouc´ı, tedy m˚uˇze vyuˇz´ıvat i mobiln´ı aplikaci.

Administr´ator – jedn´a se o rozˇs´ıˇren´ı akt´era Manaˇzer zak´azky o spr´avu uˇzivatelsk´ych

´

uˇct˚u, mobiln´ıch zaˇr´ızen´ı, nastaven´ı syst´emu, apod.

Hierarchii uˇzivatelsk´ych rol´ı a jejich hlavn´ı interakce se syst´emem zn´azorˇnuje diagram pˇr´ı- pad˚u uˇzit´ı na obr´azku 2.2. Uˇzivatel´e vˇsech rol´ı (tj. ve webov´e i mobiln´ı aplikaci) se auten- tizuj´ı pomoc´ı uˇzivatelsk´eho jm´ena a hesla. Vytv´aˇren´ı uˇzivatelsk´ych ´uˇct˚u maj´ı na starosti uˇzivatel´e s rol´ı Administr´ator.

2.4 Vyuˇ zit´ e technologie a vlastnosti mobiln´ıch zaˇ r´ızen´ı

Pro dosaˇzen´ı poˇzadovan´ych vlastnost´ı mus´ı c´ılov´e mobiln´ı zaˇr´ızen´ı podporovat nˇekolik tech- nologi´ı. Ty jsou v t´eto ˇc´asti textu podrobnˇeji pops´any. D´ale jsou diskutov´any moˇznosti jejich pouˇzitelnosti v aplikaci.

2.4.1 Internetov´e pˇripojen´ı

Navrhovan´a mobiln´ı aplikace m´a v cel´em ˇreˇsen´ı ´ulohu klienta. Pro spr´avnou funkci tedy vyˇzaduje datov´e pˇripojen´ı k serveru. Souˇc´ast´ı mobiln´ıch s´ıt´ı ve vˇsech rozvinut´ych st´atech svˇeta jsou sluˇzby pro pˇrenos datov´ych paket˚u. Prim´arnˇe se poˇc´ıt´a s fungov´an´ım aplikace v podm´ınk´ach na ´uzem´ı ˇCesk´e Republiky. Z tabulky 2.1vypl´yv´a, ˇze rychlosti r˚uzn´ych tech- nologi´ı pro datov´e pˇrenosy se velmi v´yznamnˇe liˇs´ı. Pokryt´ı technologi´ı EDGE na ´uzem´ı CR je t´ˇ emˇeˇr kompletn´ı. Rychlosti t´eto technologie ale nejsou dostateˇcn´e pro synchronizaci obrazov´e dokumentace ´ukon˚u, obzvl´aˇstˇe jejich odes´ıl´an´ı na server. ´Uroveˇn pokryt´ı tech- nologiemi s vyˇsˇs´ımi pˇrenosov´ymi rychlostmi nen´ı dostateˇcn´a k tomu, aby s dostupnost´ı rychlejˇs´ıch datov´ych pˇrenos˚u bylo pˇri n´avrhu aplikace moˇzn´e obecnˇe poˇc´ıtat.

Z v´yˇse uveden´eho vypl´yv´a, ˇze navrhovan´a aplikace mus´ı b´yt schopna pracovat v reˇzimu bez pˇripojen´ı a umoˇzˇnovat odloˇzenou synchronizaci se serverem. Jako dalˇs´ı nezbytn´a funkce se jev´ı spr´ava staˇzen´ych podklad˚u k zak´azk´am a moˇznost jejich stahovan´ı na vyˇz´ad´an´ı.

1Maxim´aln´ı rychlosti ud´avan´e tˇremi nejvˇetˇs´ımi oper´atory v ˇCR (Telef´onica, T-Mobile, Vodafone). Zpra- vidla jsou niˇs´ı neˇz teoretick´a max. rychlost samotn´e technologie, coˇz je z´avisl´e na pouˇzit´e revizi a reˇzimu provozu. Rychlosti uplinku (odes´ıl´an´ı dat) nejsou ˇcasto oper´atory ud´av´any a jsou proto z´ısk´any z jin´ych zdroj˚u pro odpov´ıdaj´ıc´ı typy a reˇzimy provozu dan´e technologie.

2 Pr˚umˇern´e pokryt´ı ´uzem´ı tˇremi nejvˇetˇs´ımi oper´atory v ˇCR podle ˇCesk´eho telekomunikaˇcn´ıho ´radu v dobˇe vypracov´an´ı semestr´aln´ıho projektu (leden 2014).

(12)

2.4.2 Integrovan´y fotoapar´at

Prvn´ı telefon s integrovan´ym fotoapar´atem se v ˇCesk´e Republice zaˇcal prod´avat jiˇz v roce 20023. V dalˇs´ıch letech se integrovan´e kamery v mobiln´ıch telefonech staly standardem.

V dneˇsn´ı dobˇe je jejich kvalita na dostateˇcn´e ´urovni, aby v nˇekter´ych pˇr´ıpadech nahradili dedikovan´e digit´aln´ı fotoapar´aty. Z pohledu mobiln´ıch v´yvoj´aˇr˚u je podstatn´e, ˇze vyuˇzit´ı integrovan´e kamery je podporov´ano n´astroji pro tvorbu nativn´ıch aplikac´ı na vˇsech dnes rozˇs´ıˇren´ych platform´ach.

Pro ´uˇcely obrazov´e dokumentace stavebn´ıch prac´ı je kvalita kamer v dneˇsn´ıch chytr´ych telefonech dostaˇcuj´ıc´ı. D´ıky jejich standardizaci nem´a poˇzadavek na existenci integrovan´e kamery t´emˇeˇr ˇz´adn´y vliv na mnoˇzstv´ı podporovan´ych c´ılov´ych zaˇr´ızen´ı.

2.4.3 Syst´em pro urˇcen´ı polohy

Syst´emy pro urˇcen´ı polohy, zaloˇzen´e na r˚uzn´ych technologi´ıch, maj´ı v mobiln´ım odvˇetv´ı v´yznamnou roli. Nejpˇresnˇejˇs´ı a nejpouˇz´ıvanˇejˇs´ı jsou glob´aln´ı druˇzicov´e syst´emy, tedy ta- kov´e, jejichˇz funkce je z´avisl´a na druˇzic´ıch na obˇeˇzn´e dr´aze Zemˇe. Nejzn´amˇejˇs´ım takov´ym syst´emem je GPS4 (Global Positioning System).

GPS

Obsah t´eto kapitoly vych´az´ı z [20] a [27].

Pomoc´ı GPS pˇrij´ımaˇce lze urˇcit kdekoliv na planetˇe ˇcas, rychlost a aktu´aln´ı geografickou pozici vˇcetnˇe nadmoˇrsk´e v´yˇsky. P˚uvodnˇe byl syst´em GPS vyv´ıjen americk´ym ministerstvem obrany pro vojensk´e pouˇzit´ı. V pr˚ubˇehu v´yvoje ale bylo rozhodnuto, ˇze bude k dispozici i pro civiln´ı ´uˇcely. Z´ıskal tak mnoho dalˇs´ıch vyuˇzit´ı a zaznamenal rapidn´ı n´ar˚ust uˇzivatel˚u, kteˇr´ı se dnes poˇc´ıtaj´ı na des´ıtky mili´on˚u. To m´a nˇekolik d˚uvod˚u, zejm´ena:

• Relativnˇe vysok´a polohov´a pˇresnost

• Schopnost urˇcovat i rychlost a ˇcas

• Dostupnost sign´al˚u kdekoliv na planetˇe

• Pouˇzit´ı sluˇzby je standardnˇe bezplatn´e

• Syst´em pracuje za kaˇzd´eho poˇcas´ı a je dostupn´y 24 hodin dennˇe

• Pˇrij´ımaˇce proˇsly v posledn´ıch letech rapidn´ım v´yvojem, a to hlavnˇe v oblasti mini- malizace rozmˇer˚u a n´arok˚u na spotˇrebu elektrick´e energie

Syst´em spol´eh´a na 32 druˇzic na obˇeˇzn´e dr´aze Zemˇe. Komunikace mezi druˇzicemi a pˇrij´ı- maˇcem je dosaˇzeno pomoc´ı r´adiov´ych vln. Jejich frekvenˇcn´ı p´asma jsou zvolena tak, aby doch´azelo k nejmenˇs´ımu moˇzn´emu ruˇsen´ı pˇri jejich pr˚uchodu atmosf´erou.

Nejd˚uleˇzitˇejˇs´ı funkce syst´emu, tedy urˇcov´an´ı polohy, je doc´ıleno pomoc´ı v´ypoˇctu tzv.

zd´anliv´ych vzd´alenost´ı od jednotliv´ych druˇzic. Pˇrij´ımaˇc synchronizuje sv´e hodiny s hodi- nami druˇzic a pomoc´ı dalˇs´ıch ´udaj˚u, kter´e druˇzice vys´ılaj´ı (hlavnˇe parametry jejich dr´ahy),

3Podle [17] se jednalo telefon Nokia 7650 s operaˇcn´ım syst´emem Symbian S60.

4 Dalˇs´ı v´yznamn´e glob´aln´ı syst´emy jsou GLONASS, provozovan´y ruskou arm´adou a Galieo realizovan´y ESA (Evropsk´a kosmick´a agentura).

(13)

m˚uˇze tyto zd´anliv´e vzd´alenosti urˇcit. Z nich je pak moˇzn´e po korekci chyb za pomoc´ı tri- laterace5 urˇcit aktu´aln´ı polohu. Pro urˇcen´ı polohy ve dvojrozmˇern´em prostoru (zemˇepisn´a d´elka a ˇs´ıˇrka) je nutn´e pˇrij´ımat sign´al z nejm´enˇe tˇr´ı druˇzic. Pro urˇcen´ı trojrozmˇern´e polohy (tj. vˇcetnˇe nadmoˇrsk´e v´yˇsky) je pak nutn´y souˇcasn´y pˇr´ıjem sign´alu ze ˇctyˇr druˇzic.

D˚uleˇzit´ym parametrem GPS pˇrij´ımaˇc˚u je ˇcas nutn´y pro z´ısk´an´ı polohy. Oznaˇcuje se zkratkou TTFF (time to first fix). Rozliˇsuje se nˇekolik pˇr´ıpad˚u TTFF.

• Studen´y start (cold start)

• Tepl´y start (warm start)

• Hork´y start (hot start)

Jednotliv´e pˇr´ıpady se liˇs´ı informacemi, kter´e m´a pˇrij´ımaˇc k dispozici z pˇredchoz´ıho pouˇzit´ı.

Konkr´etn´ı ˇcasy z´avis´ı na aktu´aln´ıch podm´ınk´ach. Studen´y start trv´a ˇr´adovˇe minuty, zbyl´e dva pˇr´ıpady zpravidla nˇekolik jednotek aˇz des´ıtek sekund. Pro zrychlen´ı tˇechto ˇcas˚u se pou- ˇ

z´ıv´a technologie A-GPS (Assisted GPS, tak´e aGPS). Funguje pomoc´ı z´ısk´av´an´ı uˇziteˇcn´ych informac´ı, v prv´e ˇradˇe o poloze a dr´aze druˇzic, z internetov´ych server˚u. Zvl´aˇstˇe v pˇr´ıpadˇe studen´eho startu m˚uˇze pouˇzit´ı A-GPS pˇrin´est znateln´e zrychlen´ı.

Podpora syst´emu GPS je v dneˇsn´ıch chytr´ych telefonech standardem. Nˇekter´e modely podporuj´ı v kombinaci s GPS tak´e rusk´y glob´aln´ı druˇzicov´y syst´em GLONASS, coˇz d´ale zvyˇsuje pˇresnost pˇrij´ımaˇce a sniˇzuje ˇcasy TTFF. S vyuˇzit´ım technologi´ı pro pˇresn´e urˇcen´ı polohy je tedy pˇri n´avrhu aplikace moˇzn´e poˇc´ıtat.

2.4.4 Mapov´e podklady

S urˇcov´an´ım polohy ´uzce souvis´ı dostupnost mapov´ych podklad˚u. Mapy maj´ı v mobiln´ıch zaˇr´ızen´ıch jiˇz pomˇernˇe dlouhou historii – sahaj´ı aˇz do dob monochromatick´ych displej˚u. V dneˇsn´ı dobˇe jsou v mobiln´ı zaˇr´ızen´ıch nejˇcastˇeji vyuˇz´ıv´any jako souˇc´ast navigaˇcn´ıch aplikac´ı.

Vˇsechny spoleˇcnosti, stoj´ıc´ı za v´yznamn´ymi mobiln´ımi operaˇcn´ımi syst´emy dneˇsn´ı doby, nab´ızej´ı vlastn´ı mapov´e podklady6 a aplikace pro jejich prohl´ıˇzen´ı. Z pohledu t´eto pr´ace je ale d˚uleˇzitˇejˇs´ı, ˇze nab´ızej´ı tak´e v´yvojov´e n´astroje, kter´e program´ator˚um umoˇzˇnuj´ı mapy integrovat do mobiln´ıch aplikac´ı.

5 Jedn´a se o proces v´ypoˇctu pozice ze vzd´alenost´ı od zn´am´ych bod˚u. V pˇr´ıpadˇe syst´emu GPS se poˇc´ıt´a jako pr˚unik povrch˚u koul´ı.

6Google Maps, Apple Maps, Bing Maps.

(14)

Kapitola 3

Mobiln´ı platformy a multiplatformn´ı v´ yvoj

I pˇresto, ˇze maj´ı nativn´ı aplikace pro r˚uzn´e mobiln´ı operaˇcn´ı syst´emy v z´asadˇe stejn´e moˇz- nosti, ekosyst´emy pro distribuci a v´yvojov´e nastroje jsou ˇcasto velmi odliˇsn´e. Zpravidla se liˇs´ı i v pouˇzit´em programovac´ım jazyce. V posledn´ıch letech proto vznikaj´ı n´astroje pro multiplatformn´ı v´yvoj mobiln´ıch aplikac´ı. Ty v´yvoj´aˇr˚um umoˇzˇnuj´ı pˇrenos k´odu mezi plat- formami a tedy moˇznost souˇcasn´eho v´yvoje aplikac´ı pro co nejvˇetˇs´ı ˇc´ast trhu.

Tato kapitola se zab´yv´a nejrozˇs´ıˇrenˇejˇs´ımi mobiln´ımi platformami v dobˇe vzniku pr´ace1, shrnuje moˇznosti multiplatformn´ıho v´yvoje a bl´ıˇze popisuje n´astroje, kter´e byly pouˇzity pro v´yvoj zadan´e mobiln´ı aplikace.

3.1 Nejrozˇ s´ıˇ renˇ ejˇ s´ı mobiln´ı platformy

Jedn´ım z nejd˚uleˇzitˇejˇs´ıch faktor˚u pˇri v´ybˇeru c´ılov´e platformy pro mobiln´ı aplikaci je trˇzn´ı pod´ıl. Z tabulky 3.1vypl´yv´a, ˇze svˇetovˇe nejprod´avanˇejˇs´ı mobiln´ı platformy jsou:

• Google Android

• Apple iOS

• Microsoft Windows Phone 3.1.1 Android

Tato ˇc´ast pˇrev´aˇznˇe vych´az´ı z [11].

1etˇsina textu t´eto kapitoly vnikla v r´amci semestr´aln´ıho projektu v lednu roku 2014.

OS Pod´ıl na trhu [%]

Android 80,7

iOS 15,4

Windows Phone 2,8

Ostatn´ı 1,1

Tabulka 3.1: Rozloˇzen´ı glob´aln´ıho trhu mobiln´ıch zaˇr´ızen´ı v roce 2014. Zdroj: [9]

(15)

Home Contacts Browser vvv APPLICATIONS

APPLICATIONhFRAMEWORK

LIBRARIES ANDROIDhRUNTIME

Phone

PackagehManager TelephonyhManager ResourcehManager LocationhManager NotificationhManager

SurfacehManager MediahFramework SQLite

OpenGLhVhES FreeType WebKit

SGL SSL Iibc

ActivityhManager WindowhManager ViewhSystem

DalvikhVirtualhMachine CorehLibraries ContenthProviders

LINUXhKERNEL

KeypadhDriver WiFihDriver AudiohDrivers PowerhManagement DisplayhDriver CamerahDriver FlashhMemoryhDriver BinderhuIPCdhDriver

Obr´azek 3.1: Architektura operaˇcn´ıho syst´emu Android. Zdroj: [11]

Android je softwarov´a platforma pro mobiln´ı zaˇr´ızen´ı, postaven´a na modifikovan´e verzi operaˇcn´ıho syst´emu linux. Je prim´arnˇe urˇcena pro chytr´e mobiln´ı telefony a tablety, ale m˚uˇze se uplatnit v mnohem ˇsirˇs´ı ˇsk´ale zaˇr´ızen´ı. Platformu tvoˇr´ı operaˇcn´ı syst´em, middleware2 a z´akladn´ı aplikace. Android byl p˚uvodnˇe vyv´ıjen americkou spoleˇcnost´ı stejn´eho jm´ena, kte- rou v roce 2005 odkoupila spoleˇcnost Google. Vˇetˇsina zdrojov´ych k´odu Androidu pak byla vypuˇstˇena pod open-source licenc´ı Apache3. Android se tak stal pro v´yrobce hardwaru, zvl´aˇstˇe mobiln´ıch telefon˚u a tablet˚u, velmi atraktivn´ım. Chce-li v´yrobce do sv´eho zaˇr´ızen´ı nainstalovat Android, staˇc´ı mu st´ahnout pln´y zdrojov´y k´od a prov´est ˇz´adan´e ´upravy. Zpra- vidla v´yrobci pˇrid´avaj´ı vlastn´ı grafickou n´astavbu.

Prvn´ı zaˇr´ızen´ı, bˇeˇz´ıc´ı na operaˇcn´ım syst´emu Android, se zaˇcalo prod´avat v ˇr´ıjnu roku 20084. Android pak zaznamenal velmi rychl´y vzestup. Z celosvˇetov´eho pod´ılu na trhu mo- biln´ıch operaˇcn´ıch syst´em˚u 2,8% ve 2. ˇctvrtlet´ı roku 2009 se do 4. ˇctvrtlet´ı roku 2010 stal svˇetovˇe nejprod´avanˇejˇs´ı mobiln´ı platformou. Z tabulku 3.1 vypl´yv´a, ˇze jeho celosvˇetov´y pod´ıl v roce 2014 je 80,7%.

Obr´azek3.1zachycuje architekturu operaˇcn´ıho syst´emu Android. Z pohledu v´yvoj´aˇre je nejd˚uleˇzitˇejˇs´ı ˇc´ast Android Runtime. Jedn´a se o knihovny umoˇzˇnuj´ıc´ı bˇeh aplikac´ı. Souˇc´ast´ı vrstvy je tak´e Dalvik VM, speci´aln´ı virtu´aln´ı stroj pro exekuci bytov´eho k´odu programo- vac´ıho jazyka Java, navrˇzen´y pro bˇeh na pˇrenosn´ych zaˇr´ızen´ıch s omezen´ymi zdroji. Pro kaˇzdou spuˇstˇenou aplikaci je spuˇstˇena instance VM Dalvik. Vykon´av´an´ı k´odu aplikace je tak izolov´ano od ostatn´ıch bˇeˇz´ıc´ıch aplikac´ı.

2Software, spojuj´ıc´ı operaˇcn´ı syst´em a aplikace.

3Licence pro open-source software, kter´a umoˇnuje libovoln´e ´upravy a distribuci softwaru, kter´y pod n´ı spad´a.

4Jednalo se o telefon HTC Dream. Do prodeje byl vypuˇstˇen 22.10.2008. [17]

(16)

Obr´azek 3.2: Z´akladn´ı vrstvy syst´emu iOS. Zdroj: [2]

V´yvoj nativn´ıch aplikac´ı pro Android

Nativn´ı aplikace pro Android jsou programov´any v jazyce Java5. Prim´arn´ım n´astrojem je Android SDK, pomoc´ı kter´eho je moˇzn´e vyv´ıjet na vˇsech hlavn´ıch poˇc´ıtaˇcov´ych operaˇcn´ıch syst´emech, tedy Windows, Mac OS X a Unixov´ych syst´emech. To je ve kontextu ostatn´ıch mobiln´ıch platforem sp´ıˇse v´yjimkou. Souˇc´ast´ı SDK je upraven´a verze programovac´ıho pro- stˇred´ı Eclipse. K v´yvoji lze ale pouˇz´ıt velk´e mnoˇzstv´ı neofici´aln´ıch n´astroj˚u. Dalˇs´ı d˚uleˇzitou souˇc´ast´ı SDK je emul´ator. I ten je moˇzn´e nahradit neofici´aln´ımi alternativami6, jejichˇz v´y- hodou je ˇcasto rychlejˇs´ı bˇeh. Samotn´y v´yvoj aplikac´ı pro Android je bezplatn´y. Licence, umoˇzˇnuj´ıc´ı zveˇrejˇnov´an´ı aplikac´ı v obchodˇe Google Play, je ale zpoplatnˇena jednor´azov´ym poplatkem ve v´yˇs´ı 25 USD.

Pˇri programov´an´ı aplikac´ı pro Android si program´ator mus´ı b´yt vˇedom existence velk´eho mnoˇzstv´ı verz´ı platformy a faktu, ˇze vˇetˇsina z nich m´a st´ale sv´e uˇzivatele. Pˇri zac´ılen´ı co nejvˇetˇs´ıho poˇctu uˇzivatel˚u tak nˇekdy nen´ı moˇzn´e vyuˇz´ıvat nejnovˇejˇs´ı prvky API.

3.1.2 iOS

Informace v t´eto ˇc´asti textu byly ˇcerp´any z [2,23,29].

Operaˇcn´ı syst´em iOS byl vyvinut americkou spoleˇcnost´ı Apple. Je postaven na poˇc´ıta- ˇ

cov´em operaˇcn´ım syst´emu Mac OS X, se kter´ym sd´ıl´ı nˇekter´e vlastnosti. Apple umoˇzˇnuje vyuˇz´ıv´an´ı iOS v´yhradnˇe na sv´ych vlastn´ıch zaˇr´ızen´ıch. Konkr´etnˇe se jedna o mobiln´ı tele- fony, tablety a multimedi´aln´ı pˇrehr´avaˇce z modelov´ych ˇrad iPhone, iPad a iPod. Z toho, zvl´aˇstˇe oproti platformˇe Android, plynou v´yhody, jako napˇr´ıklad vysok´a optimalizace a relativnˇe mal´a roztˇr´ıˇstˇenost platformy.

Prvn´ı zaˇr´ızen´ı, bˇeˇz´ıc´ı na operaˇcn´ım syst´emu iOS (p˚uvodnˇe pojmenovan´em iPhone OS), bylo uvedeno na trh v l´etˇe roku 20077. Jeho uveden´ı z´asadnˇe zmˇenilo mobiln´ı trh a nastavilo jeho nov´y smˇer. Jednalo se o prvn´ı chytr´y telefon s dotykovou obrazovkou, kter´y byl urˇcen pro ˇsirokou veˇrejnost. Z´asadn´ımi novinkami bylo pouˇzit´ı dotykov´eho displeje s kapacitn´ı technologi´ı, ovl´ad´an´ı pomoc´ı v´ıcedotykov´ych gest a d˚uraz na kvalitu grafick´eho rozhran´ı a uˇzivatelskou zkuˇsenost. I pˇres omezenou funkˇcn´ı v´ybavu ve srovn´an´ı s tehdejˇs´ımi chytr´ymi

5 Android tak´e nab´ız´ı n´astroj NDK (Native Development Kit), kter´y umoˇnuje pomoc´ı rozhran´ı JNI (java native interface) vkl´adat do aplikac´ı komponenty programovan´e v nativn´ım jazyce OS (C/C++).

6r´ıkladem je emul´ator Genymotion.

7Jednalo se o mobiln´ı telefon iPhone prvn´ı generace, uvolnˇen´y 29.6. 2007.

(17)

telefony a z poˇc´atku i absenc´ı v´yvojov´ych n´astroj˚u pro tvorbu nativn´ıch aplikac´ı se prvn´ı generace telefonu iPhone doˇckala okamˇzit´eho ´uspˇechu. Uvolnˇen´ı v´yvoj´aˇrsk´ych n´astroj˚u pro iOS na jaˇre roku 2008 pak umoˇznilo vznik dnes standardn´ıho ekosyst´emu mobiln´ıch plat- forem, zaloˇzen´em na v´yvoji a centralizovan´e distribuci aplikac´ı.

Obr´azek3.2zachycuje z´akladn´ı vrstvy operaˇcn´ıho syst´emu iOS. Nejvyˇsˇs´ı vrstva, Cocoa Touch, se star´a o bˇeh aplikac´ı a multitasking. Jej´ı souˇc´ast´ı je framework, kter´y v´yvoj´aˇr˚um umoˇzˇnuje pˇr´ıstup k funkc´ım operaˇcn´ıho syst´emu a samotn´emu zaˇr´ızen´ı. Stejnˇe jako nativn´ı aplikace je vrstva Cocoa Touch naprogramov´ana v jazyce Objective-C a vyuˇz´ıv´a API Cocoa, pouˇzit´e v operaˇcn´ım syst´emu pro stoln´ı poˇc´ıtaˇce, Apple Mac OS X.

V´yvoj nativn´ıch aplikac´ı pro iOS

Jak jiˇz bylo naznaˇceno v´yˇse, aplikace pro iOS jsou programov´any v jazyce Objective-C.

Ten vznikl v 80. letech minul´eho stolet´ı jako n´astavba nad jazykem C. ˇC´asti syntaxe tohoto jazyka jsou pˇrevzaty z objektov´eho jazyka Smalltalk. Jedin´ym ofici´aln´ım n´astrojem pro tvorbu aplikac´ı, bˇeˇz´ıc´ıch na iOS, je XCode. Jedn´a se o sadu v´yvojov´ych n´astroj˚u, jej´ıˇz nej- d˚uleˇzitˇejˇs´ımi prvky jsou stejnojmenn´e v´yvojov´e prostˇred´ı a emul´ator mobiln´ıch zaˇr´ızen´ı. Na rozd´ıl od v´yvojov´ych n´astroj˚u pro platformu Android je XCode moˇzn´e pouˇz´ıvat exkluzivnˇe na operaˇcn´ım syst´emu Mac OS X.

Ofici´aln´ı distribuce aplikac´ı prob´ıh´a pˇres port´al iTunes, kter´y stejnˇe jako port´al Google Play, sdruˇzuje distribuci aplikac´ı, hudby, elektronick´ych knih, film˚u a dalˇs´ıho obsahu. Jiˇz pro instalaci aplikace do c´ılov´eho zaˇr´ızen´ı je nutn´e zakoupit v´yvoj´aˇrskou licenci. Existuj´ı dvˇe z´akladn´ı verze licence:

iOS Developer Program – pro v´yvoj aplikac´ı distribuovan´ych v´yhradnˇe pomoc´ı port´alu iTunes.

iOS Developer Enterprise Program – umoˇzˇnuje v´yvoj propriet´arn´ıch aplikac´ı, distri- buovan´ych mimo iTunes.

Tyto licence je moˇzn´e poˇr´ıdit za 99 USD, respektive 299 USD8 na rok. Aplikace distribuo- van´e pˇres port´al iTunes proch´azej´ı schvalovac´ım procesem. Tento fakt, zejm´ena v kontrastu s Google Play, pˇrin´aˇs´ı v´yhody v podobˇe ochrany uˇzivatel˚u pˇred nebezpeˇcn´ymi aplikacemi a ´utoky.

3.1.3 Windows Phone

Tato ˇc´ast vych´az´ı pˇrev´aˇznˇe z [10,25].

Mobiln´ı operaˇcn´ı syst´em Windows Phone (tak´e WP), za kter´ym stoj´ı americk´a firma Microsoft, je jeden z nejmladˇs´ıch na trhu. Vznikl, aby nahradil pˇredchoz´ı operaˇcn´ı syst´em stejn´e spoleˇcnosti, tedy Microsoft Windows Mobile9. K uvolnˇen´ı prvn´ı verze syst´emu doˇslo ve 3. ˇctvrtlet´ı roku 2010. Ve stejn´e dobˇe se zaˇcaly prod´avat i prvn´ı mobiln´ı telefony s t´ımto syst´emem10. Prvn´ı verze syst´emu nazvan´a Windows Phone 7 se ve srovn´an´ı s konkurenc´ı vyznaˇcovala menˇs´ımi n´aroky na HW zaˇr´ızen´ı, ale tak´e menˇs´ı funkˇcn´ı v´ybavou. Dalˇs´ım ne- dostatkem WP, zp˚usoben´ym mimo jin´e nekompatibilitou aplikac´ı pro Windows Mobile, byl

8Zdroj: [3]

9Syst´em Windows Mobile byl v dobˇe jeho nahrazen´ı ve verzi 6.5. WP (Windows Phone) nen´ı nov´a verze syst´emu Windows Mobile. Jedn´a se o zcela nov´y produkt. Nativn´ı aplikace, vytvoˇren´e pro Windows Mobile, nejsou kompatibiln´ı s platformou WP.

10Jednalo se o nˇekolik model˚u znaˇcek HTC, LG a Samsung.

(18)

tak´e daleko menˇs´ı poˇcet dostupn´ych aplikac´ı. Tyto nedostatky OS byly postupnˇe odstraˇno- v´any v dalˇs´ıch verz´ıch syst´emu. V ´unoru roku 2011 Microsoft nav´azal strategick´e partnerstv´ı s v´yrobcem mobiln´ıch telefon˚u Nokia, kter´e v z´aˇr´ı roku 2013 vy´ustilo v akvizici spoleˇcnosti.

Verze syst´emu Windows Phone 8 (WP8) pˇrinesla pomˇernˇe radik´aln´ı zmˇeny v architektuˇre a v´yvoji pro platformu. Je postavena na Windows NT11. WP8 tak sd´ıl´ı nˇekter´e prvky s OS Microsoft Windows 8, urˇcen´ym pro poˇc´ıtaˇce. To usnadˇnuje pˇrenos aplikac´ı mezi tˇemito syst´emy. Nejnovˇejˇs´ı verze syst´emu v dobˇe vzniku t´eto pr´ace je Windows Phone 8.1.

V´yvoj nativn´ıch aplikac´ı pro Windows Phone

Prim´arn´ım podporovan´ym n´astrojem pro v´yvoj nativn´ıch aplikac´ı pro WP je Windows Phone SDK. Ten je moˇzn´e pouˇz´ıvat v´yhradnˇe na poˇc´ıtaˇci s operaˇcn´ım syst´emem Windows verze 7 a vyˇsˇs´ı. Hlavn´ı souˇc´ast´ı Windows Phone SDK je v´yvojov´e prostˇred´ı Visual Stu- dio Express. Jedn´a se o zjednoduˇsenou verzi rozˇs´ıˇren´eho komerˇcn´ıho v´yvojov´eho prostˇred´ı stejn´eho jm´ena. SDK tak´e obsahuje emul´ator mobiln´ıch zaˇr´ızen´ı. Hlavn´ım programovac´ım jazykem pro v´yvoj pomoc´ı W8 SDK je C#. Je ale moˇzn´e programovat i v jin´ych jazyc´ıch, jako je Visual Basic a ˇc´asteˇcnˇe i C/C++12. I pˇres rozd´ılnou architekturu WP8.1 oproti star- ˇs´ım verz´ım, je s urˇcit´ymi omezen´ımi moˇzn´e pomoc´ı Windows Phone SDK souˇcasnˇe vyv´ıjet i pro starˇs´ı verze WP.

Distribuci mobiln´ıch aplikac´ı pro WP ofici´alnˇe zajiˇst’uje port´al Windows Phone Store.

Z´akladn´ı v´yvoj´aˇrsk´y ´uˇcet, umoˇzˇnuj´ıc´ı zveˇrejˇnov´an´ı aplikac´ı do Windows Phone Store a Windows Store13, je moˇzn´e poˇr´ıdit za 19 USD na rok. Firemn´ı ´uˇcet, umoˇzˇnuj´ıc´ı distribuci aplikac´ı mimo dva zm´ınˇen´e port´aly, je moˇzn´e z´ıskat za roˇcn´ı poplatek 99 USD. Podobnˇe, jako v pˇr´ıpadˇe aplikac´ı pro iOS, proch´az´ı aplikace pro WP pˇred publikac´ı na port´alu WP Store certifikaˇcn´ım procesem, jehoˇz souˇc´ast´ı je i manu´aln´ı testov´an´ı aplikace. Tento fakt m˚uˇze m´ıt kromˇe v´yhod pro uˇzivatele tak´e nev´yhody z pohledu v´yvoj´aˇr˚u, a to zejm´ena v podobˇe prodlev pˇri publikaci aplikace. [14]

3.2 Multiplatformn´ı v´ yvoj

Tato ˇc´ast pr´ace ˇcerp´a zejm´ena z [21] a [22].

Se zvyˇsov´an´ım v´ykonu mobiln´ıch zaˇr´ızen´ı v posledn´ıch letech nab´yvaly mobiln´ı aplikace na v´yznamu. Z informac´ı uveden´ych v pˇredchoz´ıch ˇc´astech tohoto textu vypl´yv´a, ˇze je trh s mobiln´ımi aplikacemi nehomogenn´ı a dynamick´y. Z toho plynou pomˇernˇe omezen´e moˇznosti pˇredv´ıd´an´ı jeho v´yvoje. Z roztˇr´ıˇstˇenosti trhu vznik´a potˇreba v´yvoje aplikac´ı pro v´ıce platforem.

Oddˇelen´y v´yvoj pro jednotliv´e c´ılov´e platformy m˚uˇze tvorbu aplikace znaˇcnˇe prodlouˇzit a tak i zdraˇzit, a to aˇz tolikan´asobnˇe, kolik platforem je zac´ıleno. Dalˇs´ı nev´yhodou tohoto pˇr´ıstupu je fakt, ˇze vyˇzaduje znalosti potˇrebn´e pro v´yvoj na vˇsech c´ılov´ych platform´ach nebo oddˇelen´e v´yvojov´e t´ymy v pˇr´ıpadˇe firemn´ıho v´yvoje.

Typick´y ˇzivotn´ı cyklus mobiln´ı aplikace je podobn´y ˇzivotn´ımu cyklu jin´ych softwarov´ych produkt˚u. M˚uˇzeme jej rozdˇelit do n´asleduj´ıc´ıch f´az´ı:

• N´avrh

11Starˇs´ı verze syst´emu mˇely z´aklad ve Windows CE.

12Je napˇr. moˇzn´e vyuˇz´ıt existuj´ıc´ıch knihoven v C/C++. Dalˇs´ı vyuˇzit´ı jsou programov´an´ı aplikac´ı, kter´e vyuˇz´ıvaj´ı Direct3D nebo zrychlen´ı bˇehu v´ypoˇcetnˇe n´aroˇcn´ych ˇast´ı aplikac´ı.

13Port´al pro prodej HW a aplikac´ı pro operaˇcn´ı syst´emy of firmy Microsoft, urˇcen´e pro poˇc´ıtaˇce.

(19)

• V´yvoj

• Publikov´an´ı

• Udrˇ´ zba

Jedinou f´az´ı, kterou lze pˇri oddˇelen´em v´yvoji aplikac´ı prov´adˇet souˇcasnˇe, je n´avrh. A to nav´ıc jen ˇc´asteˇcnˇe14. Je zˇrejm´e, ˇze zv´yˇsen´ı n´aklad˚u a ˇcasov´ych n´arok˚u, spojen´e s c´ılen´ım v´ıce platforem, se neomezuje pouze na f´az´ı v´yvoje. Jako v´ychodisko se nab´ız´ı multiplatformn´ı v´yvoj aplikac´ı.

Na tomto m´ıstˇe je vhodn´e poznamenat, ˇze samostatn´y v´yvoj pro v´ıce platforem m´a tak´e sv´e v´yhody. A to pˇredevˇs´ım v rozs´ahlejˇs´ıch moˇznostech optimalizace aplikace, kter´e plynou z pˇr´ım´eho pˇr´ıstupu k jednotliv´ym API v moˇznosti pouˇzit´ı specializovan´ych v´yvojov´ych n´astroj˚u.

Z d˚uvod˚u, uveden´ych v pˇredchoz´ıch odstavc´ıch, zaˇcaly v posledn´ıch letech vznikat n´a- stroje pro multiplatformn´ı v´yvoj. Vˇetˇsina existuj´ıc´ıch multiplatformn´ıch ˇreˇsen´ı produkuje aplikace zaloˇzen´e na webov´ych technologi´ıch. Vyuˇz´ıvaj´ı spoleˇcn´eho rysu mobiln´ıch ope- raˇcn´ıch syst´em˚u, integrovan´eho webov´eho prohl´ıˇzeˇce. Uˇzivatelsk´e rozhran´ı takto vznikl´ych aplikac´ı je zpravidla postaveno na technologi´ıch HTML5, Javascript a CSS3. V nˇekter´ych pˇr´ıpadech tyto aplikace nejsou z pohledu uˇzivatele rozeznateln´e od aplikac´ı, vznikl´ych na- tivn´ım v´yvojem. V´yvojov´e n´astroje z t´eto kategorie tak´e ˇcasto umoˇzˇnuj´ı pˇr´ıstup k ome- zen´e mnoˇzinˇe funkc´ı nativn´ıch API jednotliv´ych platforem. Pr´avˇe omezen´a funkcionalita a ˇ

casto niˇzˇs´ı v´ykon aplikac´ı jsou nejv´yraznˇejˇs´ımi nev´yhodami pouˇzit´ı pˇr´ıstup˚u, zaloˇzen´ych na webov´ych technologi´ıch. V tomto kontextu stoj´ı za zm´ınku tak´e tzv. aplikaˇcn´ı tov´arny (Ap- plication factory). Ty umoˇzˇnuj´ı v´yvoj jednoduch´ych aplikac´ı bez znalost´ı programovac´ıch jazyk˚u.

Dalˇs´ı skupinou multiplatformn´ıch ˇreˇsen´ı jsou n´astroje, kter´e umoˇzˇnuj´ı v´yvoj plnohod- notn´ych nativn´ıch aplikac´ı. Zpravidla nab´ızej´ı vlastn´ı SDK. Mohou obsahovat vlastn´ı run- time, ve kter´em je bˇeh aplikace zajiˇstˇen pomoc´ı virtualizace nebo interpretu. Dalˇs´ı nastroje pˇr´ımo generuj´ı strojov´y k´od (nebo bytov´y k´od) pro c´ılovou platformu. Pˇredstavitelem kom- binace tˇechto pˇr´ıstup˚u je n´astroj Xamarin, popsan´y v n´asleduj´ıc´ı ˇc´asti textu.

3.3 Xamarin

Xamarin je sada n´astroj˚u pro multiplatformn´ı v´yvoj, kterou vyv´ıj´ı stejnojmenn´a americk´a spoleˇcnost. Je zaloˇzen´a na open-source projektu Mono, kter´y byl p˚uvodnˇe vyv´ıjen spoleˇc- nost´ı Novell. Projekt Mono je implementac´ı specifikace Common Language Infrastructure (CLI)15. Jeho hlavn´ım c´ılem je umoˇznit bˇeh aplikac´ı vytvoˇren´ych v prostˇred´ı Microsoft .NET Framework na dalˇs´ıch platform´ach.

Z´akladn´ımi stavebn´ımi prvky n´astroje Xamarin jsou Xamarin.iOS16, a Xamarin.Android17. Jedn´a se o implementace projektu Mono pro dva nejv´yznamnˇejˇs´ı mobiln´ı operaˇcn´ı syst´emy, Android a iOS. Pˇri programov´an´ı pomoc´ı Xamarin.iOS a Xamarin.Android m´a program´a- tor k dispozici plnohodnotn´a API odpov´ıdaj´ıc´ıch platforem v jazyce C# a nav´ıc knihovny

14avrh UI je nutn´e pro jednotliv´e platformy odliˇsovat v z´avislosti na jejich rozd´ıln´ych konceptech.

15 Jedn´a se o otevˇrenou specifikaci vyvinutou firmou Microsoft, kter´a definuje vlastnosti spustiteln´eho odu a prostˇred´ı pro jejich bˇeh. Implementace CLI je z´akladn´ım stavebn´ım prvkem architektury frameworku Microsoft .NET.

16uvodnˇe pojmenovan´y MonoTouch. Prvn´ı verze byla vyd´ana v roce 2009.

17uvodnˇe pojmenovan´y Mono for Android. Prvn´ı verze byla vyd´ana v roce 2011.

(20)

Your application (C#, others) Class Library

Common Language Runtime

Operating System

1 2

3

1: Library

2: Common Language Specification 3: Native Operating System API

Obr´azek 3.3: Zjednoduˇsen´e sch´ema architektury frameworku .NET. Zdroj: [18]

z Base Class Library (BCL), tedy z´akladn´ı knihovny specifikovan´e v CLI. Roli BCL a CLI v r´amci architektury frameworku .NET zn´azorˇnuje obr´azek 3.3.

Standardn´ım pˇr´ıstupem v .NET frameworku je kompilace do Common Intermediate Language (CIL)18 a jeho n´asledn´a just-in-time (JIT) kompilace do strojov´eho jazyka c´ılo- v´eho zaˇr´ızen´ı za bˇehu. Tento pˇr´ıstup je vyuˇz´ıv´an u Xamarin.Android. Z d˚uvodu omezen´ı syst´emu iOS nen´ı pouˇzit´ı tohoto pˇr´ıstupu v pˇr´ıpadˇe Xamarin.iOS moˇzn´e. Aplikace vytvoˇren´e v Xamarin.iOS jsou tak pˇredkompilovan´e do nativn´ıho spustiteln´eho souboru operaˇcn´ıho syst´emu. Pro co moˇzn´a nejefektivnˇejˇs´ı vyuˇzit´ı zdroj˚u obsahuje Xamarin.iOS tak´e vlastn´ı linker.

Xamarin sice explicitnˇe nepodporuje operaˇcn´ı syst´em Windows Phone, ale jak jiˇz bylo uvedeno v´yˇse, k´od vytvoˇren´y v C# a .NET je z touto platformou kompatibiln´ı. Xamarin tak umoˇzˇnuje tvorbu nativn´ıch aplikac´ı pro vˇsechny tˇri nejrozˇs´ıˇrenˇejˇs´ı platformy v progra- movac´ım jazyce C#. To zn´azorˇnuje sch´ema na obr´azku 3.4.

Za v´yhodu n´astroje je moˇzn´e povaˇzovat moˇznost implementace uˇzivatelsk´eho rozhran´ı pro kaˇzdou c´ılovou platformu zvl´aˇst’. V´ysledn´y vzhled a ovl´adac´ı prvky aplikace jsou tedy stejn´e, jako v pˇr´ıpadˇe, kdyby by aplikace byla vytvoˇrena ofici´aln´ım SDK pro danou plat- formu. Na tuto vlastnost lze ale tak´e pohl´ıˇzet jako na nev´yhodu. Vˇetˇsina konkurenˇcn´ıch n´a- stroj˚u pouˇz´ıv´a jednotnou implementaci UI, coˇz m˚uˇze ve srovn´an´ı s n´astrojem Xamarin pˇri- n´est ´usporu ˇcasu a n´aklad˚u na v´yvoj. Nespornou v´yhodou Xamarin.iOS a Xamarin.Android je moˇznost integrace nativn´ıch knihoven, vytvoˇren´ych pro c´ılov´e platformy pomoc´ı jejich ofici´aln´ıch v´yvojov´ych n´astroj˚u.

Aplikace, postaven´e na Xamarin.iOS a Xamarin.Android, je moˇzn´e vyv´ıjet v integrova- n´em v´yvojov´em prostˇred´ı Xamarin Studio, nebo pomoc´ı prostˇred´ı Microsoft Visual Studio pˇri pouˇzit´ı poskytovan´eho doplˇnku. Je tˇreba zm´ınit, ˇze s v´yvojem (hlavnˇe s pˇrekladem) aplikac´ı pomoc´ı n´astroje Xamarin jsou spojena vˇsechna omezen´ı, charakteristick´a pro v´y- voj na jednotliv´ych platform´ach, zm´ınˇen´a v sekci3.1. Pro vytvoˇren´ı aplikace pro Android,

18Jedn´a se o mezijazyk, do kter´eho jsou pˇrekl´ad´any vˇsechny jazyky, podporovan´e v .NET.

(21)

Obr´azek 3.4: Sch´ema multiplatformn´ıho v´yvoje pomoc´ı n´astroje Xamarin. Zdroj: [32]

iOS a Windows Phone je tak tˇreba m´ıt k dispozici poˇc´ıtaˇce19s operaˇcn´ımi syst´emy Mac OS X a Windows 7 nebo vyˇsˇs´ı. Poˇc´ıtaˇc s Mac OS X by v t´eto konfiguraci mohl slouˇzit pouze pro pˇreklad v´ysledn´e aplikace pro platformu iOS. Zat´ım ale neexistuje n´astroj pro tvorbu uˇzivatelsk´eho rozhran´ı pro tuto platformu, kter´y by bˇeˇzel v OS Windows. Je tak tˇreba vy- uˇz´ıvat ofici´aln´ı v´yvojov´e prostˇred´ı Xcode nebo se spokojit s programov´an´ım uˇzivatelsk´eho rozhran´ı v´yluˇcnˇe pomoc´ı programovac´ıho jazyka C#.

Xamarin je komerˇcn´ı produkt. Poskytuje vˇsak tak´e bezplatn´e licence, kter´e za omeze- n´ych podm´ınek umoˇzˇnuj´ı jeho pouˇzit´ı. Nejlevnˇejˇs´ı komerˇcn´ı licenci,Indie, umoˇzˇnuj´ıc´ı v´yvoj plnohodnotn´ych aplikac´ı pomoc´ı Xamarin.iOS nebo Xamarin.Andorid je moˇzn´e poˇr´ıdit za 299USD. Tuto ˇc´astku je tedy pro v´yvoj na obou podporovan´ych platform´ach zaplatit dva- kr´at. Podporu integrace do prostˇred´ı Visual Studio pˇrin´aˇsej´ı aˇz vyˇsˇs´ı licence. Ty je moˇzn´e poˇr´ıdit za 999 USD, respektive 1899 USD a nab´ız´ı oproti z´akladn´ı licenci nˇekter´e dalˇs´ı v´yhody. V roce 2014 zaˇcal Xamarin nab´ızet bezplatn´e licence pro studenty a uˇcitele na vysok´ych ˇskol´ach. [33]

3.4 MvvmCross

MvvmCross, d´ale tak´e Mvx, je framework pro v´yvoj multiplatformn´ıch aplikac´ı s pomoc´ı technologi´ı .NET. Jeho z´akladem je architektonick´y n´avrhov´y vzor Model-View-ViewModel.

3.4.1 N´avrhov´y vzor Model-View-ViewModel Tato ˇc´ast vych´az´ı pˇredevˇs´ım z [15].

Architektura softwarov´ych aplikac´ı je zpravidla tvoˇrena na z´akladˇe zaveden´ych n´avr- hov´ych vzor˚u. Jedn´ım z nich je Model-View-ViewModel, d´ale MVVM. Jedn´a se o jeden z nejmladˇs´ıch pouˇz´ıvan´ych n´avrhov´ych vzor˚u architektury aplikace. Je odvozen´y od starˇs´ıch rozˇs´ıˇren´ych vzor˚u, zvl´aˇstˇe Model-View-Controller (MVC) a Model-View-Presenter (MVP).

19Je moˇzn´e pouˇz´ıt n´astroje pro virtualizaci.

(22)

Obr´azek 3.5: Sch´ema n´avrhov´eho vzoru Model-View-ViewModel. Zdroj: [15]

Prim´arn´ım ´uˇcelem vˇsech tˇechto vzor˚u je oddˇelen´ı datov´eho modelu a aplikaˇcn´ı logiky od uˇzivatelsk´eho rozhran´ı. MVVM se toho snaˇz´ı doc´ılit rozdˇelen´ım ˇc´ast´ı aplikace na do tˇr´ı n´asleduj´ıc´ıch vrstev:

Model – souˇc´ast´ı modelov´e vrstvy je reprezentace dat a veˇsker´a aplikaˇcn´ı logika spojen´a s jejich z´ısk´av´an´ım a spr´avou. Obsahuje tak´e reprezentaci obchodn´ıch proces˚u. Mode- lov´a vrstva a jej´ı souˇc´asti se v MVVM nijak neliˇs´ı od modelov´ych vrstev v n´avrhov´ych vzorech MVC a MVP.

View (pohled) – je zde obsaˇzena implementace prvk˚u uˇzivatelsk´eho rozhran´ı a definov´any vazby na tyto prvky, zejm´ena vlastnosti (property) a pˇr´ıkazy (command), z vrstvy viewmodel. Tyto vazby jsou realizov´any pomoc´ı n´ıˇze popsan´eho mechanizmu data binding. Vrstva view je zpravidla reprezentov´ana k´odem ve znaˇckovac´ım jazyce dan´e platformy, nebo jin´ym zp˚usobem deklarace grafick´eho uˇzivatelsk´eho rozhran´ı (GUI).

Jej´ı souˇc´ast´ı je tak´e k´od pro manipulaci s GUI (code-behind).

Viewmodel (pohledov´y model, tak´e VM) – obsahuje prezentaˇcn´ı logiku a data, zob- razovan´a vrstvou view. Pohledov´y model neobsahuje pˇr´ımou referenci na vrstvu view a nem´a informace o jej´ı specifick´e implementaci. Implementuje vlastnosti a pˇr´ıkazy, na kter´e se mohou prvky z pohledov´e vrstvy pomoc´ı techniky data binding nav´azat a pˇrij´ımat notifikace o jejich zmˇenˇe v podobˇe ud´alost´ı.

Ned´ıln´ymi souˇc´astmi n´avrhov´eho vzoru MVVM jsou koncepty data binding (v´az´an´ı dat) a command (pˇr´ıkaz).

Data binding – technika deklarov´an´ı vztah˚u mezi prvky vrstvy view a jejich odpov´ıdaj´ı- c´ımi reprezentacemi ve vrstvˇe viewmodel. Pˇr´ıkladem m˚uˇze b´yt nav´az´an´ı uˇzivatelsk´eho prvku typu textov´e pole na promˇennou typu ˇretˇezec, nach´azej´ıc´ı se ve vrstvˇe view- model. Vytvoˇren´e vztahy mohou b´yt jednosmˇern´e nebo dvousmˇern´e. Pˇri jednosmˇer- n´em v´az´an´ı reflektuj´ı prvky uˇzivatelsk´eho rozhran´ı jim odpov´ıdaj´ıc´ı data ve vrstvˇe viewmodel. Pˇri dvousmˇern´em v´az´an´ı se zmˇeny zp˚usoben´e interakc´ı uˇzivatele proje- vuj´ı zmˇenou stavu prvk˚u ve vrstvˇe viewmodel. V´azan´a data mezi vrstvami view a viewmodel mohou b´yt pˇrev´adˇena a upravov´ana pomoc´ı konvertor˚u (value converter).

Command – rozhran´ı pro reprezentaci a spr´avu akc´ı a operac´ı, kter´e je moˇzn´e vyvolat z vrstvy view. Jsou definov´any ve vrstvˇe viewmodel a s prvky vrstvy view jsou propo- jeny pomoc´ı mechanizmu data binding.

Vztah mezi v´yˇse zm´ınˇen´ymi vrstvami a koncepty je patrn´y z obr´azku 3.5.

(23)

3.4.2 Projekt MvvmCross

Tato ˇc´ast se zab´yv´a frameworkem MvvmCross, kter´y byl vybr´an pro implementaci mobiln´ı aplikace, vyv´ıjen´e v r´amci pr´ace. Vˇetˇsina informac´ı v t´eto sekci poch´az´ı z ofici´aln´ı str´anky projektu MvvmCross, [13].

Open-soure projekt MvvmCross umoˇzˇnuje multiplatformn´ı v´yvoj aplikac´ı za pouˇzit´ı n´avrhov´eho vzoru MVVM. Je zaloˇzen na projektu Portable Class Libraries (PCL), kter´y je souˇc´ast´ı platformy .NET Framework. Pˇrestoˇze se tento text zab´yv´a zejm´ena platformami pro mobiln´ı telefony, je vhodn´e na tomto m´ıstˇe vyjmenovat vˇsechny platformy, pro kter´e lze pomoc´ı MvvmCross vyv´ıjet:

• Xamarin.Android

• Xamarin.iOS

• Windows Universal App (aplikace pro Windows Phone 8.1 a Windows 8.1 Store apli- kace)

• WinRT framework pro Windows 8 Store aplikace.

• Silverlight pro Windows Phone 7 a 8

• Xamarin.Mac

• Windows Presentation Foundation

Nativn´ı v´yvoj aplikac´ı pro Windows Phone (a dalˇs´ı modern´ı platformy ekosyst´emu Microsoft Windows) standardnˇe podporuje vyuˇzit´ı MVVM pˇr´ıstupu. V pˇr´ıpadˇe platforem Android a iOS jsou ale vyuˇz´ıv´any jin´e pˇr´ıstupy a architektury20, kter´e pouˇzit´ı MVVM neumoˇzˇnuj´ı. Pˇri vyuˇzit´ı n´astroje Xamarin je sice moˇzn´e programovat, stejnˇe jako pro platformu Windows Phone, v jazyce C#, ale na architektuˇre aplikac´ı tento fakt nic nemˇen´ı. Hlavn´ım pˇr´ınosem projektu MvvmCross je tedy implementace mechanizmu data binding, kter´y tvoˇr´ı z´aklad architektury MVVM pro Xamarin.iOS a Xamarin.Android.

Pˇri pouˇzit´ı MvvmCross je implementace vrstev architektury MVVM model a viewmo- del spoleˇcn´a pro vˇsechny platformy. Je tak doc´ıleno maxim´aln´ı pˇrenositelnosti k´odu pˇri zachov´an´ı oddˇelen´e implementace nativn´ıho uˇzivatelsk´eho rozhran´ı jednotliv´ych platforem, tj. vrstvy view. Souˇc´ast´ı projektu MvvmCross je tak´e mnoˇzstv´ı doplˇnk˚u, kter´e obsahuj´ı im- plementaci vybran´ych funkc´ı, vlastnost´ı a technologi´ı pro jednotliv´e platformy (napˇr. pr´ace se soubory nebo datab´az´ı) pomoc´ı spoleˇcn´eho rozhran´ı.

Multiplatformn´ı aplikace vytvoˇren´a pomoc´ı MvvmCross je zpravidla sloˇzena z n´asledu- j´ıc´ıch ˇc´ast´ı:

• Hlavn´ı, plnˇe pˇrenosn´y PCL projekt (tak´e

”core“ projekt), kter´y obsahuje souˇc´asti vrstvy model a viewmodel.

• Nˇekolik nativn´ıch (tak´e

”UI“ projekt) projekt˚u, jejichˇz poˇcet odpov´ıd´a poˇctu podpo- rovan´ych platforem, kter´e obsahuj´ı pˇredevˇs´ım vrstvu view.

• Doplˇnky (anglicky plugin), z nichˇz kaˇzd´y se skl´ad´a z ˇc´ast´ı v UI projektech (nativn´ı implementace dan´e funkcionality) a v core projektu (abstraktn´ı vrstva pro pˇr´ıstup k nativn´ım ˇc´astem doplˇnku).

20V pˇr´ıpadˇe iOS se jedn´a o vzor MVC. U platformy Android jde architekturu podobnou MVC, kter´a ale nesplˇnuje nˇekter´e vlastnosti tohoto vzoru.

(24)

public class MyClass {

private readonly IDatabaseService db;

public MyClass(IDatabaseService database) { this.db = database;

}

/* ... */

public static Bitmap TakePicture() {

var camera = Mvx.Resolve<ICameraService>();

return camera.TakePicture();

} }

V´ypis 3.1: Pˇr´ıklad vyuˇzit´ı IoC v MvvmCross.

N´asleduj´ıc´ı sekce se zab´yvaj´ı hlavn´ımi souˇc´astmi a pˇr´ıstupy, pouˇzit´ymi v MvvmCross s uk´azkami jejich vyuˇzit´ı.

Inversion of control v MvvmCross

MvvmCross, stejnˇe jako vˇetˇsina modern´ıch framework˚u, vyuˇz´ıv´a pˇr´ıstupu Inversion of Con- trol (obr´acen´e ˇr´ızen´ı, tak´e IoC). Na tomto m´ıstˇe je vhodn´e vysvˇetlit samotn´y pojem IoC a nˇekter´e dalˇs´ı souvisej´ıc´ı pˇr´ıstupy, kter´e MvvmCross vyuˇz´ıv´a:

Inversion of control – mechanismus, kter´y pˇren´aˇs´ı odpovˇednost za v´ybˇer konkr´etn´ı im- plementace, konstrukci a prov´az´an´ı objekt˚u z program´atora na framework.

Dependency injection (DI) – n´avrhov´y vzor, kter´y implementuje IoC. Dle konkr´etn´ı implementace m˚uˇze podporovat nˇekolik r˚uzn´ych zp˚usob˚u, jak´ymi program´ator m˚uˇze definovat z´avislosti mezi objekty (napˇr. pomoc´ı konstruktoru nebo setteru).

Service locator – dalˇs´ı n´avrhov´y vzor, kter´y ´uzce souvis´ı s IoC. Zapouzdˇruje proces spo- jen´y se z´ısk´av´an´ım sluˇzeb (z´avislost´ı) pomoc´ı abstraktn´ı vrstvy. Vyuˇz´ıv´a k tomu glo- b´aln´ı registr sluˇzeb.

Vyuˇzit´ı tˇechto pˇr´ıstup˚u je zvl´aˇstˇe v´yhodn´e v multiplatformn´ıch aplikac´ıch, kde za jejich pomoci mohou b´yt abstrahov´any jednotliv´e nativn´ı implementace dan´ych z´avislost´ı. Toho je vyuˇzito napˇr´ıklad v doplˇnc´ıch. Za nev´yhodu lze povaˇzovat fakt, ˇze k implementaci tˇechto pˇr´ıstup˚u je v Mvx ve velk´e m´ıˇre vyuˇzito reflexe. Nˇekter´e chyby pak nemohou b´yt odhaleny pˇri pˇrekladu a zp˚usobuj´ı chybov´e ukonˇcen´ı aplikace. V´ypis 3.1 obsahuje zjednoduˇsenou uk´azku vyuˇzit´ı IoC v MvvmCross.

Start a inicializace aplikace

Platformy podporovan´e frameworkem MvvmCross se v mnoh´em velmi z´asadnˇe liˇs´ı. Fra- mework m´a za ´ukol tyto rozd´ıly abstrahovat. Pˇri startu MvvmCross aplikace jsou nejdˇr´ıve vytvoˇreny nativn´ı objekty (napˇr. objektAppDelegatena platformˇe Xamarin.iOS), ve kter´e je vytvoˇren objekt Setup. Ten obsahuje nastaven´ı pro danou platformu a m´a za ´ukol vy- tvoˇren´ı a inicializaci potomka tˇr´ıdy MvxAplication, kter´y reprezentuje aplikaci a spravuje jej´ı ˇzivotn´ı cyklus.

(25)

public class Application : MvxApplication { public override async void Initialize() {

this.InitializeIoC();

this.CreatableTypes() .EndingWith("Service") .AsInterfaces()

.RegisterAsLazySingleton();

this.RegisterAppStart<HomeViewModel>();

} }

V´ypis 3.2: Pˇr´ıklad inicialize MvvCross aplikace v Core projektu.

Bˇehem inicializace aplikace (metodaInitialize()) jsou zpravidla registrov´any sluˇzby, kter´e jsou pak v aplikaci vyuˇzity pomoc´ı v´yˇse zm´ınˇen´ych mechanizm˚u IoC, DI a Service location. D´ale je zde vytvoˇren objekt typuStart, kter´y definuje prvn´ı zobrazen´y viewmodel.

V´ypis3.2 obsahuje typickou podobu t´eto tˇr´ıdy.

ViewModel

Zdrojov´y k´od MvvmCross aplikace obsahuje jeden nebo v´ıce pohledov´ych model˚u. Nejd˚u- leˇzitˇejˇs´ı ´ukolem VM je reprezentace dat zobrazen´ych vrstvou view. To zahrnuje rozes´ıl´an´ı ud´alost´ı o jejich zmˇenˇe a naslouch´an´ı zmˇenov´ych ud´alost´ı zp˚usoben´ych interakc´ı uˇzivatele s vrstvou view, tedy realizace mechanizmu data binding. V Mvx je viewmodel vytvoˇren jako potomek abstraktn´ı tˇr´ıdy MvxViewModel, kter´a implementuje zm´ınˇenou funkˇcnost.

Zdrojov´y k´od ve v´ypisu3.3ukazuje pˇr´ıklad implementace VM s vlastnostmi (property) a pˇr´ıkazem (command), kter´ych je moˇzn´e vyuˇz´ıt z vrstvy view pomoc´ı mechanizmu data binding.

Navigaci mezi jednotliv´ymi VM zajiˇst’uje zejm´ena metodaStartViewModel<T>(). Jej´ım vol´an´ım se vytvoˇr´ı objekt tˇr´ıdy ViewModelRequest. O v´ybˇer konkr´etn´ıho typu VM a jeho konstrukci a inicializaci na z´akladˇe pˇredan´e instance ViewModelRequest se staraj´ı tˇr´ıdy MvxViewModelLocator a MvxViewModelLoader, jejichˇz z´akladn´ı implementaci framework poskytuje. Program´ator si vˇsak m˚uˇze zvolit jinou funkˇcnost vytvoˇren´ım vlastn´ıch tˇr´ıd, kter´e implementuj´ı pˇr´ısluˇsn´a rozhran´ı a jejich registrac´ı pˇri inicializaci aplikace.

Konstrukce a inicializace VM m´a pˇri pouˇzit´ı v´ychoz´ı implementace tˇr´ıdy MvxViewMo- delLoaderˇctyˇri z´akladn´ı f´aze:

Konstrukce – vytvoˇren´ı instance a pˇred´an´ı jej´ıch z´avislost´ı pomoc´ı Dependency Injection.

Zpracov´an´ı navigaˇcn´ıch parametr˚u – jsou definovan´y pomoc´ı argument˚u jedn´e nebo v´ıce implementac´ı metody Init(), kter´e jsou vol´any pomoc´ı reflexe.

Obnoven´ı uloˇzen´eho stavu – realizov´ano pomoc´ı pˇret´ıˇzen´ı metody ReloadState().

Dokonˇcen´ı inicializace – reprezentov´ano vol´an´ım metodyStart(), ke kter´emu doch´az´ı po dokonˇcen´ı dvou pˇredchoz´ıch bod˚u. Tuto metodu je vhodn´e pˇret´ıˇzit jako asyn- chronn´ı a naˇc´ıtat v n´ı perzistentn´ı data.

(26)

public class LoginViewModel : MvxViewModel { /* ... */

private string _loginString;

public string LoginString {

get { return this._loginString; } set {

this._loginString = value;

this.RaisePropertyChanged(() => this.LoginString);

} }

private string _passwordString;

/* ... */

private MvxCommand _loginCommand;

public ICommand LoginCommand { get {

if (this._loginCommand == null) {

this._loginCommand = new MvxCommand(() => { if (this.TryAuthenticate()) {

this.ShowViewModel<HomeViewModel>();

} } }

return this._loginCommand;

} } }

V´ypis 3.3: Pˇr´ıklad implementace pohledov´eho modelu.

(27)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://..." moreparams="...">

<EditText

android:hint="Uˇzivatelsk´e jm´eno"

local:MvxBind="Text Password"/>

<EditText

android:hint="Heslo"

android:password="true"

local:MvxBind="Text LoginString"/>

<Button

android:text="Pˇrihl´asit"

local:MvxBind="Click LoginCommand, Enabled=LoginButtonEnabled" />

</LinearLayout>

V´ypis 3.4: Uk´azka definice UI v jazyce XML v MvvmCross pro platformu Xamarin.Android.

[Activity (Title = "Pˇrihl´aˇsen´ı")]

public class LoginView : MvxActivity{

protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle);

SetContentView(Resource.Layout.login_screen);

} }

V´ypis 3.5: Uk´azka implementace pohledov´e tˇr´ıdy.

View

Pohledem (view) se v Mvx rozum´ı platformnˇe z´avisl´a tˇr´ıda, kter´a reprezentuje grafick´e uˇzi- vatelsk´e rozhran´ı zobrazen´e na obrazovce nebo jej´ı ˇc´asti. Zpravidla vych´az´ı z tˇr´ıd nativn´ıch API, kter´e maj´ı stejn´y ´uˇcel (napˇr. Activity a Fragmentpro platformu Xamarin.Android nebo UIViewController pro Xamarin.iOS) a jsou obohaceny o funkˇcnost potˇrebnou pro MvvmCross, pˇredevˇs´ım podporu pro data binding.

V´ypisy3.4a3.5obsahuj´ı pˇr´ıklad implementace pohledu na platformˇe Xamarin.Android.

Presenter

Jak jiˇz bylo zm´ınˇeno v´yˇse, navigace je v Mvx aplikaci ˇr´ızena z core projektu, zpravidla po- moc´ı vol´an´ı metody VM, ShowViewModel<T>(). T´ım je vytvoˇren poˇzadavek na zobrazen´ı VM, ViewModelRequest, kter´y vˇsak neurˇcuje, jak´ym zp˚usobem budou data VM prezen- tov´ana uˇzivateli. Pro r˚uzn´e platformy existuj´ı r˚uzn´e n´avrhov´e vzory pro zobrazen´ı obsahu aplikace. V MvvmCross je moˇzn´e jejich vyuˇzit´ı pomoc´ı presenter˚u. Jedn´a se tak o dalˇs´ı n´astroj, kter´y pom´ah´a nab´ıdnout uˇzivateli komfort nativn´ı aplikace.

Kaˇzd´y UI projekt Mvx aplikace mus´ı poskytovat platformovˇe z´avisl´y presenter, imple- mentaci rozhran´ıIMvxViewPresenter. Jeho ´ukoly jsou v´ybˇer konkr´etn´ı pohledov´e tˇr´ıdy pro pˇrijat´y poˇzadavek (ViewModelRequest) a zmˇena prezentace (zobrazen´ı pohledu). Podobnˇe

(28)

jako u ostatn´ıch souˇc´ast´ı frameworku, Mvx poskytuje z´akladn´ı implementaci presenteru pro vˇsechny podporovan´e platformy.

(29)

Kapitola 4

N´ avrh

Tato kapitola se zab´yv´a n´avrhem v´ysledn´eho ˇreˇsen´ı dle poˇzadavk˚u specifikovan´ych v kapitole 2. Je rozdˇelena na ˇctyˇri ˇc´asti. Postupnˇe popisuje n´avrh spoleˇcn´ych prvk˚u, mobiln´ı aplikace, webov´e sluˇzby a webov´e aplikace.

Na tomto m´ıstˇe je vhodn´e zopakovat, ˇze v´ysledn´a aplikace m´a slouˇzit jako technologick´y prototyp. Nejedn´a se o plnˇe funkˇcn´ı syst´em, kter´y je pˇripraven ke komerˇcn´ımu vyuˇzit´ı. Z tohoto d˚uvodu jsou nˇekter´e ˇc´asti navrhovan´eho syst´emu zjednoduˇseny. N´avrh se zamˇeˇruje zejm´ena na hlavn´ı oblasti zadan´ı t´eto pr´ace, tj. sbˇer dat v ter´enu a jejich sluˇcovan´ı s hlavn´ı datab´az´ı.

4.1 Dom´ ena syst´ emu

V aplikaˇcn´ı dom´enˇe navrhovan´eho syst´emu se vyskytuje nˇekolik z´akladn´ıch entit, jejichˇz vztah je patrn´y z diagramu dom´enov´ych tˇr´ıd na obr´azku4.1.

Contract – zak´azka. Obsahuje z´akladn´ı data, pˇredevˇs´ım zadavatele, datum dod´an´ı, iden- tifik´ator zak´azky a stav, ve kter´em se zak´azka nach´az´ı (nov´a,pˇred´ana,v reklamaˇcn´ım ˇr´ızen´ıapod.). Zpravidla obsahuje nˇekolik ´ukol˚u, kter´e je pro zhotoven´ı zak´azky nutn´e vykonat.

Task – ´ukol zak´azky. Obsahuje zejm´ena popis pl´anovan´ych prac´ı, jejich typ a pozici. Pro

´

ukol m˚uˇze existovat nˇekolik z´aznam˚u, kter´e dokumentuj´ı pr˚ubˇeh prac´ı.

TaskType – typ ´ukolu. Urˇcuje ˇcinnost, vykon´avanou v r´amci ´ukolu. M˚uˇze b´yt bodov´y nebo ´usekov´y. Typy ´ukolu je moˇzn´e vytv´aˇret a upravovat ve webov´e aplikaci a jsou synchronizov´any pomoc´ı webov´e sluˇzby na jednotliv´e klienty.

Record – z´aznam poˇr´ızen´y v ter´enu. Obsahuje jednu nebo v´ıce fotografi´ı. Pro jeden ´ukol m˚uˇze existovat nˇekolik z´aznam˚u, kter´e zachycuj´ı napˇr´ıklad jednotliv´e f´aze prac´ı. Z´a- znam m˚uˇze b´yt poˇr´ızen i nez´avisle na ´ukolu, m˚uˇze tak napˇr´ıklad slouˇzit k pˇr´ıpravˇe pˇrihl´aˇsky na v´ybˇerov´e ˇr´ızen´ı.

Photo – poˇr´ızen´a fotografie. Entita uchov´av´a mimo jin´e cestu k souboru a ˇcas poˇr´ızen´ı.

Fotografie mus´ı m´ıt vhodnˇe nastavenou kompresi a rozliˇsen´ı tak, aby byla jej´ı kvalita dostateˇcn´a s ohledem na dokumentaci, ale z´aroveˇn aby soubor nebyl pˇr´ıliˇs velk´y s ohledem na pˇrenos pˇres internet a ´uloˇziˇstˇe mobiln´ıho zaˇr´ızeni.

User – uˇzivatel v syst´emu. Jeho autentizace prob´ıh´a pomoc´ı uˇzivatelsk´eho jm´ena a hesla.

Odkazy

Související dokumenty

Uk´ aˇ zeme si, ˇ ze pro odvozen´ı metody sdruˇ zen´ ych gradient˚ u pro ˇ reˇ sen´ı soustavy line´ arn´ıch rovnic se symetrickou pozitivnˇ e-definitn´ı matic´ı A si

Z moˇ zn´ ych poloh paraboly grafu vzhledem k ose x pak snadno odvod´ıme, jak´ e jsou moˇ zn´ e poˇ cty ˇ reˇ sen´ı kvadratick´ e rovnice. Jsou to buˇ d dva koˇ reny,

Spolu´ uˇ cast´ı v´ yˇse zm´ınˇ en´ ych f´ az´ı doch´ az´ı ke vzniku staveb, kter´ e sv´ ym cha- rakterem v jednotliv´ ych ´ urovn´ıch opˇ et umoˇ zˇ nuj´ı

Oproti tomu ˇ reˇ sen´ı s vyuˇ zit´ım standardn´ıho operaˇ cn´ıho syt´ emu nab´ız´ı moˇ znost vyuˇ z´ıt bˇ eˇ zn´ ych program˚ u bez restartu syst´ emu nebo z´

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´ı ˇ

Mobiln´ı verze aplikace FLOWIO nav´ıc nevyuˇ z´ıv´ a ˇ z´ adn´ ych nativn´ıch prvk˚ u mobiln´ıch zaˇ r´ızen´ı jako je GPS, Bluetooth nebo kamera a v kombinaci s

Na z´ akladˇ e zjiˇ stˇ en´ ych uˇ zivatelsk´ ych poˇ zadavk˚ u a detailn´ı anal´ yzy jsem vy- bral jako nejvhodnˇ ejˇ s´ı ˇ reˇ sen´ı jiˇ z existuj´ıc´ı informaˇ

podaˇrilo splnit pomoc´ı t´ emat charakterizuj´ıc´ıch jednotliv´ e uˇ zivatele pomoc´ı dom´ en, pˇriˇ cemˇ z v´ ysledn´ e pojmenov´ an´ı nalezen´ ych t´ emat nebylo