VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE Fakulta informatiky a statistiky Katedra informačních technologií
Studijní program: Aplikovaná informatika Obor: Informatika
Mobilní platforma Windows Phone 8 BAKALÁŘSKÁ PRÁCE
Student :
Jan Ženíšek
Vedoucí :
doc. Ing. Alena Buchalcevová, Ph.D.
Oponent :
Ing. Jan Mittner
2013
Prohlášení
Prohlašuji, že jsem bakalářskou práci zpracoval samostatně a že jsem uvedl všechny použité prameny a literaturu, ze kterých jsem čerpal.
V Praze dne 14. Května 2013
…………………………………………… Jan Ženíšek
Poděkování Rád bych zde poděkoval doc. Ing. Aleně Buchalcevové, Ph.d, za veškeré rady a připomínky, které mi poskytla při zpracovávání této bakalářské práce. Dále bych chtěl poděkovat Štěpánu Bechyňskému, který mi poskytl mnoho cenných rad do začátku této práce.
Abstrakt Tato bakalářská práce se zabývá mobilním operačním systémem Windows Phone 8, který byl uveden v polovině roku 2012. Cílem práce je představit operační systém Windows Phone 8. Tím jsou myšleny všechny jeho parametry, vlastnosti a technologie, které jsou nutné pro následný vývoj aplikací. Dílčím cílem je vysvětlení možností a postupů při vývoji aplikací určených jak pro systém Windows Phone 8, tak zároveň pro Windows 8. Dalším dílčím cílem je názorná ukázka použití nových technologií v aplikacích. Těchto cílů bylo dosaženo kompletací informací převážně ze zahraničních zdrojů, jelikož české zdroje týkající se tohoto systému jsou nedostačující. Tato práce je rozdělena následovně: začíná popisem funkcí a novinek, které jsou dostupné v sytému, následují způsoby a principy designování aplikací, v další části je vysvětlen návrhový vzor a způsoby více platformního vývoje a na závěr je ukázáno, jak lze do aplikací implementovat funkce: hlasových příkazů, geolokalizace, peněženky a bezdrátového přenosu informací. V této práci jsou shrnuty všechny informace, které jsou potřebné pro představení systému Windows Phone 8 začínajícímu i pokročilému vývojáři aplikací. V České republice do této doby nebyla publikována žádná práce, jež by se zaměřovala na mobilní systém Windows Phone 8.
Klíčová slova Windows Phone 8, mobilní operační systém, chytrý telefon, XAML, MVVM, platforma Windows Phone, Data binding
Abstract This bachelor thesis describes to mobile operating system Windows Phone 8. That was introduced in half of the year 2012. The main aim this thesis is to introduce operating system Windows Phone 8. It includes all its parameters, features and technologies, which are necessary for future application development. Partial goal is to explain the possibilities and processes of the development not only for Windows Phone 8 but also for Windows 8. Another crucial goal is the illustrative example of using new technologies in applications. These goals were accomplished by gathering information from foreign sources, because Czech sources concerning this system are not insufficient. This thesis is divided into following parts: firstly describes the functions and news, that are available in the system, manners and principals of designing applications are following, in the next section is explained designing pattern and manners of multi-platform development and in the end is showed, how it is possible to implement functions such as: voice commands, geolocalization, wallet and wireless information transport. In this thesis are summarised all information that are necessary for introducing system Windows Phone 8 beginning and also advanced application developer. In the Czech Republic there has not already been published any publication that would focus on mobile system Windows Phone 8.
Key words Windows Phone 8, mobile operating system, smart phone, XAML, MVVM, Windows Phone platform, Data binding
Obsah 1
2
Úvod ................................................................................................................................................ 1 1.1
Struktura práce........................................................................................................................ 1
1.2
Předpoklady a omezení práce ................................................................................................. 2
1.3
Cílová skupina.......................................................................................................................... 2
1.4
Cíle práce ................................................................................................................................. 3
1.5
Předpokládaný přínos práce ................................................................................................... 3
1.6
Vymezení základních pojmů .................................................................................................... 3
1.7
Rešerše zdrojů ......................................................................................................................... 4
Platforma Windows Phone 8........................................................................................................... 6 2.1
Historie .................................................................................................................................... 6
2.2
Windows Phone 8 ................................................................................................................... 7
2.2.1
Sdílené systémového jádra ............................................................................................. 7
2.2.2
Požadavky platformy Windows Phone 8 ......................................................................... 8
2.2.3
Uživatelské rozhraní Windows Phone 8 .......................................................................... 9
2.2.4
Aplikační vybavení systému Windows Phone 8 ............................................................ 10
2.3
2.3.1
Obecná pravidla, kterými se řídí aplikace v systému Windows Phone 8 ...................... 11
2.3.2
Spouštění a ukončování aplikace .................................................................................. 12
2.3.3
Uspaná aplikace............................................................................................................. 12
2.3.4
Přechod aplikace ze stavu uspáno do pohřbeno........................................................... 13
2.4
3
Životní cyklus aplikací v systému Windows Phone8 ............................................................. 11
Technologie pro zobrazování aplikací WP8........................................................................... 14
2.4.1
Typy aplikací - dělení dle způsobu návrhu uživatelského rozhraní ............................... 14
2.4.2
Windows Presentation Foundation (WPF) .................................................................... 15
2.4.3
Extensible Application Markup Language (XAML) ........................................................ 16
Vývoj aplikací pro Windows Phone 8 ............................................................................................ 18 3.1
Vývojové nástroje pro Windows Phone 8 ............................................................................. 18
3.2
3.2.1
Aplikační stránka a ovládací prvky ................................................................................ 20
3.2.2
Šablona Pivot ................................................................................................................. 24
3.2.3
Šablona Panorama ........................................................................................................ 25
3.2.4
Šablona Portrét ............................................................................................................. 27
3.3 4
Šablony XAML aplikací pro WP8............................................................................................ 20
Rotace zobrazení ................................................................................................................... 27
Vývoj aplikace pro běh na Windows Phone 8 i Windows 8 .......................................................... 30 4.1
Rozdíly systému WP8 a W8 z hlediska uživatelského prožitku ............................................. 30
4.2
Platformově specifické prvky ................................................................................................ 32
4.3
Rozdíly v životním cyklu aplikací v systémech WP8 a W8 ..................................................... 32
4.4
Data binding .......................................................................................................................... 34
4.4.1
Příklad vytvoření XAML elementu a vytvoření datové vazby¨ ...................................... 35
4.5
Návrhový vzor Model-View-ViewModel ............................................................................... 36
4.6
Techniky pro opětovné užití kódu mezi třídami aplikací Windows 8 a Windows Phone 8 za
pomoci Visual Studia 2012 ................................................................................................................ 39 5
Použití nových technologií v aplikacích WP8 ................................................................................ 42 5.1
NFC ........................................................................................................................................ 42
5.1.1 5.2
Hlasové ovládání ................................................................................................................... 46
5.2.1 5.3
Aplikace používající hlasové příkazy.............................................................................. 47
Mapy a geolokalizace ............................................................................................................ 50
5.3.1 5.4
Aplikace používající NFC ................................................................................................ 43
Aplikace používající mapu a geolokalizaci ..................................................................... 51
Peněženka ............................................................................................................................. 55
5.4.1
Aplikace používající peněženku ..................................................................................... 56
6
Závěr .............................................................................................................................................. 59
7
Terminologický slovník .................................................................................................................. 60
8
Použitá literatura ........................................................................................................................... 62
9
Seznamy ........................................................................................................................................ 67 9.1
Seznam obrázků .................................................................................................................... 67
9.2
Seznam tabulek ..................................................................................................................... 68
9.3
Seznam zdrojových kódů....................................................................................................... 68
9.4
Seznam diagramů .................................................................................................................. 69
10
Rejstřík....................................................................................................................................... 70
1 Úvod
Strana | 1
1 Úvod V současnosti jsou lidské životy úzce spojeny s použitím elektronických zařízení. Z velké části je to způsobeno příchodem a rozvojem připojení k internetu. V roce 2010 bylo k internetu připojeno okolo dvou milionů uživatelů (22% populace Země) [1].Synonymem pro připojení k internetu vždy býval počítač, ať už stolní nebo přenosný. V současnosti toto dogma již neplatí, jelikož poslední studie prokázaly, že uživatelé používají k připojení k internetu stále ve větší míře mobilní zařízení. V České republice se v roce 2010 pomocí mobilních zařízení připojovalo okolo 38% obyvatel [2]. Stoupající obliba mobilních zařízení není patrná pouze v Čechách, ale celosvětově. Za poslední rok vzrostl celkový počet připojení na internet pomocí mobilních zařízení o téměř 10% [3].Mobilní telefony najdou v současnosti využití jak v osobní, tak i v profesní sféře. Manažeři mají na pracovních cestách stále přístup k firemním aplikacím, emailům či jsou schopni se zúčastnit konferenčních hovorů. Tímto výčtem zvyšující se popularity a schopnosti mobilních zařízení jsem chtěl přiblížit fakt, proč jsem si zvolil téma týkající se vývoje mobilních platforem. Mobilních operačních systémů existuje v současnosti celá řada. Nyní z 65% celý trh pokrývají dvě konkurenční platformy: iOS (27%) a Android (38%) [4]. Zvyšující se preference těchto mobilních platforem, které ovládly téměř tři čtvrtiny trhu, a razantně snižující se oblíbenost systémů BlackBerry OS (pokles o 10% od roku 2011) a Symbian (pokles o 25% od začátku roku 2012), vytvořila na trhu s mobilními operačními systémy mezeru. 25. října 2012 přichází na svět systém Windows Phone 8 (dále WP8), pomocí kterého se společnost Microsoft snaží tuto mezeru vyplnit. Důvodů pro volbu bakalářské práce na téma Windows Phone 8je několik. Tento systém je, na rozdíl od systému iOS a Android, úplně nový. S tím je spojen i fakt, že neexistuje mnoho knih, respektive studií, které by komplexně sumarizovaly parametry systému, případně vývoj aplikací. Dalším důvodem je, že za použití správné metodiky vývoje lze aplikace vytvořené pro WP8 velice snadno přenášet na desktopové Windows 8, což přináší velké usnadnění pro vývojáře.
1.1 Struktura práce Tato práce je rozdělena do několika částí. V první části je představen operační systém Windows Phone 8 jako celek. Úvodní část je zaměřena na historický vývoj celé platformy. Následovat bude obecné seznámení s uživatelského rozhraní systému a aplikací. Dále budou definovány minimální požadavky na mobilní telefon, aby na něj mohl být použit systém Windows Phone 8. Nakonec bude zmíněno, jaké aplikace jsou dodávány jako součást tohoto systému.
1 Úvod
Strana | 2
Druhá část bude zaměřena na teoretické znalosti, které jsou nutné, aby vývojáři byli schopni vyvíjet aplikace pro Windows Phone 8. V úvodu je objasněn životní cyklus aplikace na této mobilní platformě. Dále bude vysvětleno, jakým způsobem se deklaruje uživatelské rozhraní a jak vypadají, respektive se definují grafické struktury, které jsou použity v aplikacích. V další části bude představen návrhový vzor MVVM1,pomocí kterého lze efektivně vyvíjet aplikace pro systémy Windows Phone 8 a Windows 8. Zároveň bude zmíněno, jaké jsou rozdíly při vývoji aplikací pro oba tyto systémy a na jaká úskalí si při daném vývoji dát pozor. Nakonec se tato práce zaměří na možnosti získání potřebného softwaru či jiných náležitostí pro vývoj aplikací. Také bude v této části zmíněno, jak probíhá akceptace a nasazení aplikací na Windows nebo firemní obchod s aplikacemi. Poslední část se bude zaměřovat na praktickou implementaci kódu, a jak se na této platformě používají pokročilé funkce (například geolokalizace, hlasové příkazy, využití senzorů, použití služby „Peněženka“ a jiné). V každé podkapitole bude vysvětleno, k čemu se daná funkce používá a jak se tato funkce implementuje. Nakonec budou shrnuty všechny znalosti, které byly prezentovány v této bakalářské práci.
1.2 Předpoklady a omezení práce U čtenářů se předpokládaná minimálně základní znalost syntaxe jazyků C# a XML. Tato práce se zaměřuje na představení mobilního systému Windows Phone 8 a způsobu jakým jsou pro tento systém vyvíjeny aplikace. To znamená, že po přečtení této práce bude čtenář znát hlavní parametry a specifika systému a bude schopen navrhnout aplikaci využívající prvky, které jsou pro tuto verzi systému nové. Díky rozsahu práce nelze dopodrobna popsat všechny technologie, které jsou při vývoji použity (XAML, Databinding aj.) natož obsáhnout veškerou funkcionalitu systému.
1.3 Cílová skupina Teoretická část bakalářské práce je sestavena tak, aby jí porozuměl běžný uživatel, který se proaktivně zajímá o mobilní zařízení (respektive mobilní operační systémy), ale zároveň aby oslovila i zkušeného profesionála. Profesionálové mohou ocenit, že informace, které jsou sice pro mnohé z nich dostupné, jsou zde prezentovány jako ucelený blok a přeloženy do češtiny. První kniha týkající se kompletně této problematiky bude vydána v polovině května tohoto roku (2013) v USA. Profesionály jsou zde míněni, jak odborníci vyvíjejí aplikace, tak i například manažeři IT oddělení. Manažeři mohou čerpat z teoretické části a díky tomu cílit vývoj aplikací pro firemní nebo byznys účely. Vývojáři mohou použít znalosti jak z teoretické tak i z praktické části této práce. 1
MVVM je zkratka pro Model-View-ViewModel. Do češtiny se tento návrhový vzor dá přeložit jako ModelPohled-Pohled modelu. Více bude představen v kapitole
1 Úvod
Strana | 3
1.4 Cíle práce Cílem této bakalářské práce je poskytnout vývojářům mobilních aplikací nejen teoretické, ale zejména praktické informace a příklady pro vytváření aplikací v systému Windows Phone 8. Do tohoto cíle patří uceleně prezentovat informace, které jsou potřebné pro návrh a vývoj aplikací v systému Windows Phone 8. Pro splnění tohoto cíle jsou vysvětleny následující technologie a funkcionality tohoto systému:
Parametry mobilních zařízení, na kterých lze systém použít
Využití deklarativního jazyka XAML
Data binding
Návrhový vzor MVVM
Použití funkcionalit systému (geolokalizace, použití NFC, hlasové ovládání a Peněženky)
1.5 Předpokládaný přínos práce Tato práce je první (v České republice) ucelenou publikací informací týkající se systému Windows Phone 8 a vývoje aplikací pro něj určených. Čtenářům shrnuje a popisuje potřebné informace pro návrh, vývoj a nasazení aplikace.
1.6 Vymezení základních pojmů V této části práce je nutno definovat ústřední pojem „operační systém“ (či pouze systém nebo zkráceně OS). Ačkoliv za poslední desetiletí tento pojem příliš zevšedněl mezi laickou veřejností, tak jeho definice se mezi odborníky úplně neustálila. Proto je v následujících řádcích přehled několika definic, které jsou mezi sebou porovnány. První definice pochází z internetové encyklopedie Merriam-Webster: „software that controls the operation of a computer and directs the processing of programs (as by assigning storage space in memory and controlling input and output functions” [5]). To lze přeložit: „OS je software, který kontroluje operace v počítači a řídí zpracování programů (přiřazováním místa v paměti a kontrolováním vstupních a výstupních funkcí).“ Tato definice téměř kompletně popisuje, jak operační systém funguje. Mně osobně zde objasňuje dvě informace: vztah mezi aplikacemi a operačním systémem, fakt, že operační systém může fungovat i na jiných přístrojích než je počítač. Na webu PCMag.com popisují operační systém v několika částech. Zde budou uvedeny pouze první dvě (v dalších částech jsou popisovány ostatní komponenty OS) První část zní takto: „The computer's master control program. When the computer is turned on, a small "boot program" loads the operating system. Although additional system modules may be loaded as needed, the main part,
1 Úvod
Strana | 4
known as the "kernel" resides in memory at all times. [6]“ Což lze přeložit jako „Operační systém je hlavní kontrolní systém počítače. Když je počítat zapnut zaváděcí program, načte operační systém. Ačkoliv můžou být načteny dodatečné moduly, pokud jsou potřebné, tak hlavní část známá jako jádro je načtena po celou dobu v paměti.“ Druhá část definice je popsána následovně: „The operating system (OS) sets the standards for all application programs that run in the computer. Applications "talk to" the operating system for all user interface and file management operations. [6]“ přeloženo: „Operační systém je množina standardů pro všechny aplikace, které běží na daném počítači. Aplikace komunikují s operačním systémem za účelem zobrazení uživatelského rozhraní a práci se správcem souborů“. První část této definice dle mého úsudku zasahuje až příliš do zbytečných podrobností jelikož popisuje start a běh operačního systému samotného. Druhá část se velice podobá definici z encyklopedie Merrian-Webster, ale navíc popisuje vztah mezi OS a aplikacemi. Znovu mně osobně v definici chybí, že operační systém může být použit i na jiných zařízeních. Poslední definice operačního sytému je z internetového deníku Mobileburn.com: “An Operating System, or OS, is the master software that is run on a computer or smartphone that allows it to run other applications developer for that platform. [7]„ tedy v překladu: „ Operační systém neboli OS je hlavní software který běží na počítači nebo chytrém telefonu a umožnuje běh dalších aplikací vyvinutých pro danou platformu.“ Tato definice je velice jednoduchá a nezasahuje příliš do podrobností a navíc jako jediná připouští možnost běhu operačního systému na jiném zařízení. Tuto definici považuji vhodnou pro úplné laiky. Jako bezchybnou definice bych považoval takovou jenž skloubí první dvě a přidá možnosti existence operačního sytému i na jiných zařízeních nežli je PC. Přestavoval bych si ji následovně: „OS je hlavní software, který kontroluje operace v počítači či jiném mobilním zařízení a řídí zpracování programů (přiřazováním místa v paměti a kontrolování vstupních a výstupních funkcí). Aplikace komunikují s operačním systémem za účelem zobrazení uživatelského rozhraní a prací se správcem souborů.“
1.7 Rešerše zdrojů V poslední době získávají mobilní zařízení a technologie s nimi spjaté stále více na popularitě. Díky tomu i velice rychle vzrůstá počet prací publikovaných na tato témata. Přínosný zdroj informací vidím v bakalářské práci Lucie Třískové vypracované na téma „Přehled platforem pro vývoj mobilních aplikací“. Tato práce je zaměřena na porovnání mobilních platforem a volbu nejvhodnější platformy pro začínající vývojáře. Informace o mobilních platformách jsou spíše obecného charakteru, naopak způsob porovnání jednotlivých platforem je podložen statistikami z odborných médií a je zpracován velice důkladně.
1 Úvod
Strana | 5
Druhou studentskou prací, která přispívá již blíže k tématu mého zadání, je bakalářská práce studenta Fakulty elektrotechnické ČVUT Tomáše Kápla: „Vývoj mobilních aplikací pro OS Windows Phone“. Práce se zaměřuje na historii, vývoj a popis komponent OS Windows Phone 7. Celou problematiku autor popisuje z pohledu vývojáře a v jednotlivých kapitolách ji popisuje velice dopodrobna. Ačkoliv je toto téma velice podrobně a pečlivě zpracováno, tak není možno ho použít ve všech ohledech při řešení dané problematiky, protože se zabývá předchozí verzí systému. Poslední studentská práce přispívající částečně k tomuto tématu je bakalářská práce Lukáše Vaise na téma „Framework WPF“. Autor se v této práci snaží stručně popsat funkcionalitu frameworku. Spolu s Frameworkem WPF popisuje i XAML, Data binding a použití triggerů. Podrobné informace týkající se přímo operačního systému WP8 se v současnosti nacházejí na zahraničních webových serverech. Hlavním zdrojem informací je vývojářský web společnosti Microsoft MSDN2. Informace na ní obsažené jsou ve formě tutoriálů, blogů či video návodů. Tyto informace jsou v mnoha případech velice roztříštěné. Některá problematika se vyskytuje duplicitně na několika místech a jiná je téměř vynechána. Knižní cizojazyčné (i české) zdroje téměř neexistují. Jediná kniha pojednávající podrobně o této problematice se nazývá „Windows Phone 8 development internals“. Tato kniha je v této době (duben, 2013) dostupná pouze v elektronické formě „preview 2“. Tímto je myšleno, že jsou prozatím napsány pouze 2/3 knihy, které jsou dostupné pro veřejnost3. Kniha velice dopodrobna popisuje z pohledu vývojáře všechny části systému Windows Phone 8 a zdůrazňuje, co vše se změnilo oproti předchozí verzi. V současnosti jsou velice důležitým zdrojem prezentace, které se promítají na přednáškách Microsoftu určených pro vývojáře. Prezentace jsou koncipovány tak, aby oslovily jak začínající tak i pokročilé vývojáře aplikací. Každá se zaměřuje na určitou problematiku a dopodrobna ji rozebírá. Prvními prezentace se nazývá „Built for both“ (Stavějte pro oboje) byla prezentována tento únor v české pobočce Microsoftu Štěpánem Bechyňským. Zaměřuje se na problematiku návrhu a vývoje aplikací pro WP8 a zároveň pro W8. Druhý je cyklus prezentací s názvem „Building apps for Windows Phone 8“ zaměřený na novinky (respektive změny) v systému WP8. Tyto prezentace byly prezentovány (jako součást online konference „Jump to start“) na konci roku 2012 Andym Wigleym a Robem Tiffanym.
2 3
MSDN je zkratkou anglických slov Microsoft-Developer-Network (Vývojářská sít Microsoftu) Zbytek knihy bude vydán až 15. Května 2013.
2 Platforma Windows Phone 8
Strana | 6
2 Platforma Windows Phone 8 V této kapitole je představen historický vývoj systému Windows mobile a jeho přerod na Windows Phone. Následovat bude kompletní seznámení se systémem Windows Phone 8. Tím jsou myšleny nejen změny oproti předchozí verzi systému Windows Phone 7. X., ale i nové minimální hardwarové požadavky, změny v uživatelském rozhraní, přechod na nové jádro systému a s tím spojené následky při psaní aplikací.
2.1 Historie Počátky systému Windows Phone lze nalézt již 6. Ledna 2000, kdy společnost Microsoft na veletrhu CES představila nový operační systém Windows CE (s jádrem CE 3.0). Spolu s tímto systémem představila i dvě aplikace: přehrávač Windows media player a čtečku elektronických knih Ms Ebook reader. Představení tohoto systému vedlo ke vzniku platformy Pocket PC4 [8]. Zprvu tento systém obsahoval velice strohé uživatelské rozhraní měl velice omezenou funkcionalitu. V následujících sedmi letech Microsoft vydal pět velkých verzí, které postupně přinášeli novou funkce: internetový prohlížeč, prohlížeč obrázků, sadu MS Office a jiné. V průběhu vývoje se systém přejmenoval z Pocket PC na Windows Phone. Zároveň s každou velkou verzí vyšlo několik menších verzí, které systém dělil podle použití: pro chytré telefony (WM Smartphone), počet PC pro telefony (WM Pocket PC Phone) a počet PC (WM Pocket PC). Vytvoření těchto „podverzí“ vedlo k tomu, že systém Windows Mobile mohl běžet na velkém počtu zařízení, které se diametrálně lišily. To mělo za následek velkou roztříštěnost systému a velice obtížnou tvorbu aplikací, jež by mohly být spuštěny na všech zařízeních. [8] Na konci roku 2005 Windows mobile ovládal celkem 17 % trhu s mobilními operačními systémy [9]. Během tří následujících let systém Windows mobile postupně ztrácel popularitu, až se zastavil okolo 2% v Prosinci roku 2008. Tento výrazný pokles pravděpodobně způsobil příchod systému iOS v červnu 2007. V tu dobu již vládnoucí systém Symbian a pomalu nastupující systém Android [4]. Na to zareagovala společnost Microsoft vydáním operačního systému Windows Phone 7 v dubnu roku 2010 [10]. WP7 přinesly kompletně nové uživatelské rozhraní, které Microsoft nazval Metro. Tento systém trpěl mnoha vadami, například neuměl multitasking, výrobci mohli použít pouze jedno jádrové procesory, nemohly být implementovány sloty na SD karty a stále byl systém postaven na velice starém jádře CE. Obecně se tento systém nesetkal s velkou oblibou u veřejnosti ani u výrobců. Z části je to způsobeno výše zmíněnými nedostatky a také velké popularitě nepomohla zpráva od 4
Operační prostředí pro ruční přístroje od Microsoftu, založené na operačním systému Windows CE[33]
2 Platforma Windows Phone 8
Strana | 7
Microsoftu, že se verze WP7 nebude moci aktualizovat na novou verzi Windows Phone 8 a zároveň i aplikace vytvořené pro novou verzi nebude možné spustit na starší verzi.
2.2 Windows Phone 8 Dva roky po uvedení WP7 přichází na trh nová verze označená Windows Phone 8 (29. Října 2012) [11]. Systém byl kompletně předělán, ačkoliv z pohledu uživatelského rozhraní je systém velice podobný předchůdci. Do tohoto systému vkládá velké naděje nejen Microsoft, ale i specialisté z odborných medií [12]. Následující podkapitoly se věnují novému jádru systému Windows Phone 8 dále požadavkům musejí být splněny zařízeními, která podporují tento systém. Další podkapitola se zabývá uživatelským rozhraním systému a poslední část je věnována softwarovému vybavení, které je dodáváno spolu se systémem. 2.2.1
Sdílené systémového jádra
Největší změnou systému WP8 je přechod na NT kernel. Toto jádro bylo vydáno roku 1993 ve verzi 3.1 a od té doby se používá jako základ všech desktopových systémů Windows. V současné době je vydána verze NT 6.2, která je použita ve Windows 8, Windows Server 2012 a samozřejmě i WP8. Jádro NT použité ve WP8 je podmnožinou desktopové verze. Tím se rozumí, že všechny funkce jádra, které jsou dostupné na WP8 lze zakomponovat do W8, ale naopak tomu již není (na tuto problematiku bude více zaměřena kapitola o vývoji). Zároveň NT kernel přináší pro WP8 zrychlení systému a zpracování aplikací. Sdílením systémového jádra znamená, že systémy W8 a WP8 sdílejí nejenom NT kernel, ale i souborový systém NTFC, systém Networking a systém Security. Tyto čtyři části se dohromady nazývají Systémy jádra Windows (Windows Core Systems). Dále spolu sdílejí Mobilní jádro (Mobile Core) do kterého patří: vykreslovací jádro IE Trident, jádro pro multimédia, bezpečnostní jádro CoreCLR a nakonec jádro pro zpracování grafiky DirectX. Na obrázku 1 je graficky znázorněno, které části Systémového jádra jsou sdíleny u těchto dvou systémů.
2 Platforma Windows Phone 8
Strana | 8
Obrázek 1: Sdílené jádro Windows [13]
Na obrázku č. 1 je názorně vidět, které části systémů jsou sdíleny a které již nikoliv. Je nutno podotknout, že ačkoliv jsou jádra sdílena, tak desktopová verze obsahuje navíc dodatečné funkcionality, které jsou pro ní specifické. Toto všechno napomáhá budoucím či stávajícím vývojářům aplikací k mnohem snadnější tvorbě aplikací, jež budou porovnatelné na oba dva systémy. 2.2.2
Požadavky platformy Windows Phone 8
Stejně jako v případě předchozí verze Microsoft vydal seznam minimálních respektive doporučených požadavků [14]. Tato informace je důležitá pro vývojáře jelikož si mohou být vždy jistí, že všechna zařízení s tímto systémem mají zaručená minimální hardwarové vybavení. Toto přináší zároveň velké usnadnění vývoje, kdy není zapotřebí na úrovni kódu kontrolovat, zda zařízení je dostatečně výkonné nebo má zabudovanou určitou technologii. Seznam minimálních požadavků [14]:
Osazení procesory Qualcom Snapdragon S4 dvou-jádrový.
Minimum 512 MB RAM pro telefony WVGA a 1 GB pro telefony s rozlišením WXGA.
Minimum 4 GB flash paměti.
2 Platforma Windows Phone 8
Strana | 9
Použití GPS a A-GNSS; Navigační systém GLONASS je podporován na úrovni systému. Implementace modulu je na volbě výrobců.
Port pro micro-USB 2.0.
3,5 mm stereo headphone jack s podporou tří ovládacích tlačítek.
Fotoaparát v zadní části se zaostřováním a LED nebo Xenonovým bleskem. Volitelná kamera v přední části telefonu. V obou případech musí být rozlišení fotoaparátu minimálně VGA. Zároveň musí být dedikováno hardwarové tlačítko pro spoušť fotoaparátu.
Musí být použitý akcelometr, senzor přiblížení a senzor světla. Zároveň telefon musí mít vibrační motor. Použití magnetometru a gyroskopu je volitelné.
Přístroj musí obsahovat WiFi 802.11b/g (volitelně 802.11n) a Bluetooth.
DirectX grafický hardware, který podporuje hardwarovou akceleraci aplikací používajících Direct3D.
Multi-dotyková obrazovka podporující minimálně čtyři simultánní dotyky.
Mobilní přístroj musí obsahovat tři ovládací tlačítka: Zpět, Start a Lupa.
2.2.3
Uživatelské rozhraní Windows Phone 8
Uživatelské rozhraní použité v systému WP8 (resp. i v W8) se dříve nazývalo Metro uživatelské rozhraní (Metro UI) nyní Microsoft používá pojmenování Nové Windows uživatelské rozhraní (New Windows UI) nebo prostě Windows uživatelské rozhraní (Windows UI). Uživatelské rozhraní je složeno z takzvaných živých dlaždic (Live tiles), které mohou mít tři různé velikosti. Živé dlaždice mají tvar: malého čtverce, velkého čtverce a obdélníku. Dlaždice jsou poskládány v mřížce na hlavní obrazovce systému. V případě, že se dlaždice nevejdou na plochu obrazovky, začnou se řadit pod sebe a uživatel si je může zobrazit vertikálním srolováním. Každá dlaždice znázorňuje odkaz na aplikaci v systému. V případě, kdy je dlaždice stisknuta, otevírá se aplikace, kterou reprezentuje. Každá dlaždice může být zvláště animována, je pouze na vývojářích, co bude zobrazovat a jak. Například: aktuální stav počasí, počet nově přijatých volání, sms či emailů (viz. Obrázek 2: Hlavní obrazovka s živými dlaždicemi). V případě, kdy se uživatel přesune z hlavní obrazovky na vedlejší obrazovku (rychlým přejetím prstu z pravé strany obrazovky na levou), zobrazí se seznam aplikací (zobrazen na obrázku 3), které jsou v mobilním telefonu nainstalovány. Pokud počet aplikací přesáhne 40, v seznamu se objeví položky písmen, pomocí kterých se lze navigovat. Všechny aplikace, které jsou zobrazeny v seznamu, si může uživatel připnout na hlavní obrazovku jako živou dlaždici.
2 Platforma Windows Phone 8
Strana | 10
Obrázek 2: Hlavní obrazovka s živými dlaždicemi
2.2.4
Obrázek 3: Menu s aplikacemi
Aplikační vybavení systému Windows Phone 8
Systém WP8 je dodáván s určitým množstvím předinstalovaných aplikací, které jsou pro tuto platformu unikátní. Zde následuje výběr nejpodstatnějších:
Office - Mobilní verze kancelářského balíku MS Office ve verzi 15 (číslování verzí je rozdílné od desktopové verze MS Office). Je možno otevírat, upravovat či vytvářet dokumenty typu Word a Excel. Zároveň je možné prohlížet prezentace typu PowerPoint. Možnosti upravování dokumentů jsou pouze na základní úrovni: Změna velikosti, barvy, podbarvení písma.
HERE Maps - Off-line mapy s podklady pro 94 zemí světa. Mapy jsou ke stažení do mobilního přístroje
pro
každou
jak pěší, tak i automobily.
zemi
zdarma.
Tato
aplikace
je
schopna
navigovat
2 Platforma Windows Phone 8
Strana | 11
2.3 Životní cyklus aplikací v systému Windows Phone8 Nejprve je nutno vysvětlit termín životní cyklus aplikace. Tento pojem definuje, jak se aplikace chová v různých stavech, respektive při přechodu z jednoho do druhého. Těmito stavy jsou: spuštěná (Running), uspaná (Dormant), pohřbená (Tombstoned5) a vypnutá (Not running) aplikace. Přechody mezi jednotlivými stavy vysvětluje následující diagram a následující podkapitoly (diagram i kapitola čerpají ze zdroje [15]).
Obrázek 4: Životní cyklus aplikace [15]
2.3.1
Obecná pravidla, kterými se řídí aplikace v systému Windows Phone 8
Aplikace v systému WP8 podléhají jistým omezením, která byla vytvořena tak, aby se prodloužila výdrž baterie a byl vždy dosažen optimální uživatelský prožitek6 (User Experience dále UX). Nejpodstatnějším omezením je, že v popředí může být spuštěna pouze jedna aplikace, ostatní aplikace jsou deaktivovány. Pro aplikace, respektive pro toho, kdo píše její kód, vyplývá, že musí při deaktivování a reaktivování ošetřit ukládání (resp. načítat) dat, aby nebyla ztracena. Dále platí následující pravidla [13]: 5
Toto slovo se dá přeložit do češtiny jako „pod náhrobním kamenem“, proto v tomto případě budu preferovat slovo pohřbená (proces přechodu do stavu pohřbená aplikace – pohřbívání). 6 Uživatelský prožitek lze definovat takto: „Jedná se o pocity a emoce, které jsou subjektivní pro každého člověka a vystávají mimo jiné také při používání určitého produktu či služby“ [53].
2 Platforma Windows Phone 8
Strana | 12
pouze aktivní aplikace nebo uživatel může spouštět jiné aplikace.
uživatel se může kdykoliv pomocí hardwarového tlačítka „start“ vrátit na hlavní obrazovku a tím pádem uspí aktivní aplikaci.
uživatel se může kdykoliv pomocí hardwarového tlačítka „zpět“ navigovat na předchozí obrazovku nebo aplikaci.
aplikace se uspí také v případě, kdy mobilní telefon začne zpracovávat příchozí hovor nebo pokud uživatel po určitou dobu se zařízením nepracuje a ono se automaticky uzamkne (vypne display).
2.3.2
Spouštění a ukončování aplikace
Aplikace může být spuštěna buď pomocí živé dlaždice z hlavní obrazovky, ikony aplikace v seznamu aplikací nebo pomocí vnořeného odkazu7 (deep link). Prostředí systému WP8 upozorní aplikace o změně jejich stavu v rámci životního cyklu pomocí ovladačů událostí (event. handler). V momentu, kdy se spouští aplikace (Launching), se zavolá ovladač událostí Application_Launching, pomocí kterého je doporučeno načíst obsah ze záložní paměti (backing store). Při ukončování aplikace (Closing) se volá ovladač událostí Application_Closing ,pomocí kterého je doporučeno ukládat obsah do záložní paměti. 2.3.3
Uspaná aplikace
V odstavci 3.1.1. jsou vyjmenovány všechny případy, ve kterých se aplikace uspí. V každém z těchto případů je zavolán ovladač událostí Application_Deactivated. Z pohledu systému stav aplikace uspáno a vypnuto jsou totožné, pokud je aplikace deaktivována a uživatel se k ní již nevrátí zpátky. Proto je nutno vždy převést všechna data při přechodu aplikace do stavu uspání na data perzistentní. Na tento proces převedení dat má aplikace přesně 5 sekund, po této době jsou data odstraněna z paměti. V případě, kdy je aplikace obnovena ze stavu uspáno, načte se automaticky na stránce i s daty, které obsahovala před uspáním. Tuto funkcionalitu automatiky zabezpečuje operační systém. Všechny objekty jsou stále uloženy v paměti systému, přesně v takové podobě, než byla aplikace přerušena. Na následujícím obrázku (Obrázek 5: Uspání a probuzení aplikace) je názorně ukázáno, jak probíhá uspání aplikace při spuštění jiné aplikace a následné obnovení této aplikace ze spánku. Aplikace je obnovena ve stejné podobě přesně tam, kde byla před uspáním.
7
Vnořený odkaz je hyperlink s absolutní adresou URL .
2 Platforma Windows Phone 8
Strana | 13
Obrázek 5: Uspání a probuzení aplikace [15]
2.3.4
Přechod aplikace ze stavu uspáno do pohřbeno
Aplikace ve stavu pohřbená je držena v paměti vedle ostatních aplikací, ale pokud systému začnou docházet systémové zdroje (paměť nebo v některých případech baterie8), tak systém začne vyřazovat uspané aplikace od nejstarších. Tento proces se jmenuje „pohřbívání“. Pohřbené aplikace jsou zpravovány pomocí historie otevřených stránek aplikací a cache nazvané adresář stavu (state dictionaries). Rozdíl mezi aplikací uspanou a pohřbenou je následující. Uspaná aplikace se po svém obnovení vrátí do přesně stejného stavu, v jakém byla, než ji uživatel uspal. Naopak pohřbená aplikace po svém obnovení zobrazí pouze poslední otevřenou „stránku“ aplikace a zbytek dat se musí znovu načíst z perzistentní paměti. Aplikace dokáže zjistit z jakého stavu je obnovována a je pouze na programátorovi, aby ošetřil opětovné načtení potřebných dat.
8
Pokud mobilnímu telefonu dochází baterie, může uživatel přepnout systém na úsporný režim, ve
kterém se neaktivní aplikace automaticky ukončují, aby se ušetřila baterie.
2 Platforma Windows Phone 8
Strana | 14
2.4 Technologie pro zobrazování aplikací WP8 Tato část je zaměřena na způsoby a principy návrhu grafického uživatelského rozhraní v aplikacích pro WP8. Nejprve je zobrazeno rozdělení typů aplikací. Další část se věnuje představení frameworku Windows Presentation Foundation (dále WPF), která se následně zabývá deklarativním jazykem XAML, vytváření vazeb mezi elementy jazyka XAML a daty. Celá tato část bude zakončena ukázkou tvorby elementu a jeho provázaní s proměnou. 2.4.1
Typy aplikací - dělení dle způsobu návrhu uživatelského rozhraní
Pro systém Windows Phone 8 lze vyvíjet aplikace třech typů (dělené dle způsobu návrhu uživatelského rozhraní): XAML, Smíšený mód (Mixed mode) a Direct3D. Důvodem tohoto rozdělení je, že pro každý druh aplikací (z hlediska uživatelského rozhraní) se vyvíjí jiným způsobem. Jsou podporovány jiné druhy programovacích jazyků, API a frameworků pro definování uživatelského rozhraní. Ve sloupci „Popis“ je vysvětleno kdy a za jakých podmínek je vhodné daný typ aplikace použít. Popis jednotlivých typů je v tabulce 1. Typ
Popis
Podporovaný
UI
jazyk
Framework
aplikace XAML
Nejvíce používaný typ aplikací pro Windows Phone 8. Tyto aplikace
C#
XAML
Podporované API
Microsoft .NET Windows Phone API
Visual Basic
jsou napsány pouze za pomoci
WinPRT API
XAML a řízeného kódu. Smíšený
Tyto aplikace vycházejí ze struktury
mód
XAML aplikací, ale dovolují
C#
XAML
Visual Basic
Direct3D
začlenění nativního kódu zabaleného v WinPRT komponentě. Tyto aplikace se velice hodí, pokud vývojář chce opětovně využít nativní knihovny, nežli přepisovat nativní kód. Tento typ aplikace je velice vhodný v případech, ve kterých vývojář chce psát většinu aplikace v nativním kódu (včetně Direct3D), ale také potřebuje přístup k XAML
C/C++
(skrze Drawing Surface)
Microsoft .NET Windows Phone API WinPRT API Win 32/COM API (s komponentami WinPRT)
2 Platforma Windows Phone 8
Strana | 15
UI kvůli prvkům, které jsou dostupné pouze za pomoci XAML(tím je například animace živé dlaždice na hlavní obrazovce) Direct3D
Tento typ aplikací se nejlépe hodí
C/C++
Direct3D
pro tvorbu her. Využití Direct3D
WinPRT API Win32/COM API
nabízí největší možnost vytěžovaní hardwaru telefonu. Jelikož jsou tyto aplikace založeny na Windows app modelu, tak nabízejí největší stupeň sdílení kódu mezi Windows a Windows Phone Tabulka 1: Typy aplikací [13]
Následující kapitoly se věnují návrhu aplikací typu XAML. Je to z několika důvodů:
XAML druh je nejvíce používaný při vývoji aplikací určených pro WP8
Pro ostatní druhy aplikací je nutné znát velké množství dodatečných informací, které svým rozsahem překračují možnosti této práce.
V XAML aplikacích lze použít další technologie, které napomáhají sdílení kódu při vývoji aplikací pro více platforem (těmto technologiím se podrobněji věnuje kapitola 4).
2.4.2
Aplikace lze velice jednoduše lokalizovat do různých jazyků Windows Presentation Foundation (WPF)
Windows Presentation Foundation je prezentační systém pro tvorbu Windows, Windows Phone nebo webových aplikací zaměřených na velký uživatelský prožitek [16]. WPF je podmnožinou frameworku9 .NET od verze 3.0. Technologie WPF je implementována do systémů Windows (Xp SP2, Vista, 7, 8), Windows Server (2003 R2, 2008, 2012) a Windows Phone (7 a 8). Cílem bylo sjednotit uživatelské rozhraní, 2D a 3D grafiku, vektorovou a rastrovou grafiku, animace, audio a video [17].WPF dává přednost používání vektorové grafiky, tím pádem jsou objekty vykreslovány stejně ostře při zobrazení na malých přenosných zařízeních, jako i na velkých obrazovkách či promítacích plátnech.
9
„Framework je softwarová struktura, která slouží jako podpora při programování a vývoji a organizaci jiných softwarových projektů. Může obsahovat podpůrné programy, knihovny API, podporu pro návrhové vzory nebo doporučené postupy při vývoji.“ [30]
2 Platforma Windows Phone 8
Strana | 16
Technologie WPF je postavena nad Direct3D10API. To znamená, že obsah (může to být jak 2D tak 3D) v aplikacích napsaných pomocí WPF se konvertuje do 3D trojúhelníků, textur a jiných Direct3D objektů, které jsou následně vykresleny hardwarem. WPF aplikace získávají díky hardwarové akceleraci velkou výhodu v rychlejším zpracování a jemnějším grafickém výstupu. Toto je dosáhnuto tím, že je vytěžována GPU11namísto CPU12. Zároveň je WPF připraveno fungovat i bez grafické karty, tedy vykreslovat grafiku softwarově (pomocí CPU). V případě, kdy je grafická karta zastaralá nebo pokud jí dojdou volné zdroje, automaticky se spustí záložní mechanismus, který přepne na softwarové vykreslování. 2.4.3
Extensible Application Markup Language13 (XAML)
Extensible Application Markup Language (XAML) je jádrem definice uživatelského rozhraní pro aplikace napsané v jazycích založených na frameworku .NET.XAML popisuje UI jako stromovou strukturu souvisejících prvků. Data v jazyku XAML jsou perzistentní. Za převádění zápisu ve formátu stromu XAML elementů do instancí NET tříd se stará XAML Parser. V deklaraci můžeme zapsat kterýkoliv platný objekt patřící do frameworku .NET [18]. XAML v současnosti existuje ve čtyřech verzích (čerpáno ze zdroje [18]):
WPF – Windows Presentation foundation
XPS – používaný v produktech MS Office
Silverlight – aplikace běžící v rámci webového prohlížeče
WF (Windows workflow foundation) – tvorba aplikací založených na workflow
2.4.3.1 Struktura XAML Jakým způsobem probíhá zápis jazyka XAML bude znázorněno na následujícím příkladu, který je zobrazen v obrázku 6. Zároveň je zde zobrazen zápis identického prvku pomocí jazyka C#.
10
Je součástí DirectX API. Je dostupný pro systémy Windows 95 a novější a jiné platformy prostřednictvím open source softwaru Wine[32]. 11 Grafická karta (Graphic processing unit) 12 Procesor (Central processing unit) 13 Tento termín se používá převážné ve formě zkratky XAML. Do češtiny ho lze přeložit jako „Rozšiřitelný značkovací jazyk pro aplikace“.
2 Platforma Windows Phone 8
Strana | 17
Obrázek 6: Deklarace UI XAML a C# [19]
V obou případech je vytvořen objekt typu tlačítko (button), který má barvu světle šedou, nápis „I am a Button“ a šířku 100px. Z tohoto příkladu lze vidět, že XAML je postaven na bázi jazyka XML14 [20]. Dokumenty, ve kterých je XAML kód, jsou ukládány ve formátu jméno_souboru.xaml. Za běhu je renderován strom objektů z XAML souboru, který následně vytváří uživatelské rozhraní. XAML sám o sobě pouze abstraktně popisuje objekty. To umožňuje popisovat uživatelské rozhraní v různých jazycích založených na frameworku .NET. Zároveň XAML odděluje vytváření uživatelského rozhraní od tvorby business logiky aplikace [19]. Hlavním rozdílem a výhodou použití XAML, oproti deklarování uživatelského rozhraní v kódu aplikace je rozdíl v procesu vytváření uživatelského rozhraní. V případě, kdy je uživatelské rozhraní definováno přímo v kódu, je vykreslování prováděno až za běhu. Naopak při definování UI v XAML je již za běhu kód načtený, tím pádem se pouze zobrazí [19]. Aby bylo možné definovat XAML prvky určené pro Windows Phone 8, je nutno namapovat XML jmenný prostor. Pro systém WP8 je možno použít jmenné prostory [21]:
14
Microsoft.Phone.Controls – obsahuje ovládací prvky pro WP8
Microsoft.Phone.Shell – obsahuje ovládací prvky pro WP8
System.Windows.Control – obsahuje ovládací prvky pro Windows 8 a sdílené prvky pro WP8
Je zkratka pro rozšiřitelný značkovací jazyk Extensible markup language
3 Vývoj aplikací pro Windows Phone 8
Strana | 18
3 Vývoj aplikací pro Windows Phone 8 V této kapitole je popsáno, jak se navrhuje a tvoří uživatelské rozhraní v XAML aplikacích pro Windows Phone 8. Nejprve je popsáno, jaké nástroje jsou k navrhování zapotřebí, jaké minimální požadavky tyto nástroje potřebují, a kde se dají získat. Další část se zabývá hlavními ovládacími prvky, které jsou v aplikacích dostupné a šablonami rozložení WP8 aplikací. V dalších částech je popsáno, jak se v aplikacích zajišťuje zobrazení: pro různé rozlišení displejů, orientaci displeje nebo rozložení ovládacích prvků.
3.1 Vývojové nástroje pro Windows Phone 8 Veškeré vývojové nástroje je možné stáhnout na stránkách Windows phone developer center nacházející se na http://dev.windowsphone.com. Zde je možné zdarma stáhnout Windows Phone SDK15, které obsahuje prostředí pro vývoj WP8 a WP7.5 aplikací. Součástí SDK je samostatná instalace Visual Studio Express 2012 edice pro Windows Phone, která zároveň funguje jako doplněk (pokud uživatel již má nainstalovanou některou z následující verzi) pro Visual Studio 2012 Profesional, Premium nebo Ultimate. Windows Phone 8 aplikace lze vyvíjet pouze v prostředí Visual Studio 2012 [22]. Hardwarové a softwarové požadavky pro Visual Studio 2012 jsou zobrazeny v tabulce Kategorie Operační systém Hardware Windows Phone emulátor16
Požadavky - Windows 8 64-bit - 8 GB volného místa na disku - 4 GB RAM - doporučeny - Windows 8 v edici Professional a vyšší (tyto verze obsahují klienta pro Hyper-V17) - Procesor musí podporovat technologii SLAT18 a virtualizace Tabulka 2: Požadavky pro Virtual Studio 2012 [23]
V případě, že počítač vývojáře splní první dvě kategorie požadavků, může na něj být nainstalováno Visual Studio 2012. Tím pádem je vývojář schopný i vyvíjet aplikace. Windows Phone emulátor virtualizuje systém WP8 ve Visual Studiu. Díky tomu je možné každý pokrok v aplikaci vyzkoušet aniž by se musela aplikace nahrávat do mobilního zařízení. To se 15
SDK je zkratkou pro software development kit (sada nástrojů pro vývoj) Emulátor 17 Hyper-V je virtualizační platforma 18 SLAT je zkratkou pro Second Leve lAddress Translation (překlad adres druhé úrovně) 16
3 Vývoj aplikací pro Windows Phone 8
Strana | 19
převážně vyplatí v raných fázích vývoje aplikací, kdy se píše respektive testuje hlavní funkcionalita aplikace. Virtualizované prostředí systému WP8 poskytuje vývojáři téměř plnou funkcionalitu při testování jako v systému WP8 přímo na mobilním telefonu. Proto je velice přínosné, aby WP emulátor byl ve Visual Studio funkční. Funkce virtualizace se u procesoru zapíná přímo v nastavení BIOS. Velký problém je s technologií SLAT. Pokud jí procesor nepodporuje nelze to nijak obejít. Tuto technologii podporuje většina produktové řady Core i procesorů od společnosti Intel. Procesory od společnosti AMD ji podporují (ne všechny)od třetí generace procesorů Opteron. Existuje velice jednoduchý způsob jak zjistit, zda procesor tuto technologii podporuje. Je zapotřebí si pouze
stáhnout
program
CoreInfo
na
adrese
http://technet.microsoft.com/en-
us/sysinternals/cc835722. Poté stačí zadat v příkazovém řádku příkaz coreinfo –v. Pokud je v následujícím výpisu vedle hodnoty EPT znak „*“, tak procesor technologii SLAT podporuje a v případě kdy je zobrazen znak „-“, tak je technologie nepodporována [23]. Zde je seznam všech možností a omezení emulátoru WP8, na které jsem přišel při používání emulátoru:
Nemohou se nasimulovat příchozí či odchozí hovory a SMS zprávy
Jsou dostupné všechny aplikace
Aplikace mapy má podklad z Bing Maps nikoliv z Nokia HERE Map
Je možné používat připojení k internetu, pokud je k němu připojen i počítač, na kterém je WP8 virtualizováno
Je možno nasimulovat natočení stroje pomocí akcelometru
Je možno nasimulovat geolokalizaci
Nelze reálně nasimulovat focení. Na obrazovce se pouze zobrazí pohybující barevný čtverec, který mění barvy. Avšak tento čtverec lze „vyfotit“ a uložit.
V případě, kdy vývojář nemůže testovat aplikace v emulátoru nebo potřebuje vyzkoušet reálnou funkčnost v zařízení na kterém je WP8, musí použít pouze zařízení (mobilní telefon s WP8), která jsou odemčená. Pro odemknutí zařízení potřebuje mít vývojář vývojářský účet (Developer Account). Tento účet může získat pokud:
Je předplatitel služby MSDN
Je předplatitel služby Dreamspark. Do této služby se může přihlásit jakýkoliv student pomocí karty ISIC nebo pomocí školního předplatného (pokud má škola smlouvu s Microsoftem)
Nebo zaplacení ročního poplatku pro samostatné vývojáře ve výši 99$.
3 Vývoj aplikací pro Windows Phone 8
Strana | 20
Registrace vývojářského účtu se provádí skrze stránky Windows Phone developer center nebo přes stránky Dreamspark na www.dreamspark.com. Pro každý vývojářský účet mohou být otevřeny maximálně tři zařízení. Na obrázku je zobrazen emulátor prostředí WP8 s otevřeným internetovým prohlížečem a nástroj pro simulaci geolokalizace.
Obrázek 7: Emulátor Windows Phone
3.2 Šablony XAML aplikací pro WP8 XAML aplikace v systému WP8 mohou být zobrazeny pomocí tří šablon19: Panorama, Pivot nebo Portrét. Každá z těchto šablon má své specifické vlastnosti zobrazení i způsob definování). Před tím než jsou vysvětleny rozdíly (ve způsobu zobrazení nebo definování) mezi jednotlivými šablonami, je popsáno, jak se definuje aplikační stránka a její ovládací prvky. 3.2.1
Aplikační stránka20 a ovládací prvky
V této části jsou popsány XAML prvky, které se vyskytují pouze při vývoji aplikací pro WP8. Nebude zde popsáno jak vytvořit obecné ovládací prvky jako je: tlačítko, výběrové tlačítko, textová pole a jiná. Pro podrobnější informace týkající se tvorby v XAML doporučuji bakalářskou práci Lukáše Vaise na téma „Framework WPF“.
19
Pojem šablona jsem převzal z Visual Studia 2012, kdy při vytváření nového projektu/řešení si WP8 vývojář může vybrat z několika „template“- tedy šablon. 20 Překlad pojmu ApplicationPage
3 Vývoj aplikací pro Windows Phone 8
Strana | 21
Každá aplikace musí mít definovaný kořenový element PhoneApplicationPage. V tomto elementu se pomocí atributů definují následující vlastnosti:
jmenné prostory
rodina fontů použitých v aplikaci - atribut FontFamily
velikost fontů - atribut FontSize
pozadí aplikace - atribut Foreground
podporovaná orientace obrazu - atribut SupportedOrientations
zobrazení systémové lišty - atribut SystemTray.IsVisible
definice cesty ke třídě a jejího názvu za účelem propojení XAML třídy a kódu v pozadí21 atribut Class
a jiné například definování cesty k datům určeným pro cvičné pouze pro designování22
Do atributu PhoneApplicationPage je vždy vnořen element Grid s atributem Name=“LayoutRoot“. Pojmenování LayoutRoot označuje, že všechen obsah stránky je vložen do tohoto elementu. Dalším atributem, který se velice často používá v aplikacích je LongListSelector. To jest dlouhý výběrový
seznam,
který
obsahuje
jednotlivé
položky
tvořené
atributem
LongListSelector.ItemTemplate. Dlouhý výběrový seznam je zmíněn v této části, jelikož je používán velice často pro zobrazení obsahu či další navigaci v rámci aplikace. Posledním důležitým atributem je ApplicationBar. Tento element definuje aplikační menu, do kterého se vkládají elementy ApplicationBarIconButton, které definují jednotlivá ovládací tlačítka. Ovládací tlačítka v aplikační liště mohou být maximálně čtyři. Na obrázku „Obrázek 8: Ovládací prvky“ je zobrazen design aplikace s právě popsanými prvky: PhoneApplicationPage(se
zobrazenou
systémovou
lištou
SystemTray),
LongListSelectora
ApplicationBar.
21
Kódem v pozadí je myšlen obslužný kód psaný v C#, který se vytváří pro každý XAML dokument. V angličtině je používán termín „code-behind“. 22 Tím jsou na mysli data, která se používají pro cvičné vyplňování: názvů, textů, odkazů, obrázků, aj. při vývoji aplikací. V angličtině se používá pojem „design time data“.
3 Vývoj aplikací pro Windows Phone 8
Strana | 22
Obrázek 8: Ovládací prvky
Design aplikace z obrázku „Obrázek 8: Ovládací prvky“ je definován pomocí XAML kódů ve výpisu kódu 1. Všechny jmenné prostory, které jsou definovány v elementu PhoneApplicationPage jsou vytvářeny standardně při vytvoření každé nové šablony. Atribut Class určuje umístění v hierarchii projektu a text za poslední tečkou určuje jméno třídy s kódem XAML (V tomto případě se stránka jmenuje MainPage a je uložena přímo v kořenu projektu). Atribut DataContext určuje cestu k datům, která jsou určená pro vývoj (design-time data) v tomto případě jsou uložena ve složce SampleData v dokumentu MainViewModelSampleData.xaml. Atributy FontFamily, FontSize a Foreground jsou nastaveny na statické zdroje23.
23
StaticResource definuje, že hodnoty písma nebo popředí jsou spojeny s nastavením systému. Tím pádem pokud uživatel změní v systému velikost nebo barvu písma, tak se při použití StatiResource změní hodnoty použití ve vyvíjené aplikaci. Stejné pravidlo platí i pro popředí.
3 Vývoj aplikací pro Windows Phone 8
Strana | 23
XAML
Výpis kódu 1: Definování aplikační stránky s hlavními prvky
Atribut SupportedOrientations určuje, že podporované zobrazení je výšku (Portrait24). Atribut Orientation určuje jak je aplikace zobrazena po spuštění v případě kdy je podporováno dvojí zobrazení (zde znovu na výšku). Posledním elementem SystemTray je nastaven (True), tím pádem se zobrazí systémová lišta. V dalším elementu PhoneApplicationPage.ApplicationBar, jenž definuje aplikační menu, jsou vloženy tři elementy ApplicationBarIconButton. Pomocí kterých jsou zobrazena tři tlačítka v aplikačním menu. Pomocí atributů u elementu ApplicationBarIconButton se definuje cesta k ikoně (IconUri), zda je tlačítko možno zmáčknout (IsEnabled) a název tlačítka (Text). 24
Element SupportedOrientation může nabývat ještě hodnot Landscape (na šířku) nebo PortraitOrLandscape (možné aplikaci zobrazit jak na výšku, tak na šířku)
3 Vývoj aplikací pro Windows Phone 8
Strana | 24
Dále je již definováno přímo zobrazování obsahu aplikace pomocí elementů, které jsou vnořeny do elementu Grid (s atributem Name rovným LayoutRoot jinak by to byl pouze element pro definování tabulky). Dále všechna data jsou „obaleny“ do elementu LongListSelector. Zdroj dat pro položky v dlouhém seznamu je určen pomocí atributu ItemSource={”Binding Items”}. Díky tomuto atributu jsou
jednotlivé
položky
svázány
s elementy
Items
které
se
nachází
v dokumentu
MainViewModelSampleData.xaml. Pomocí atributu SelectionChanged je možno provést akci při změně položky v dlouhém výběrovém seznamu. Každá položka (LongListSelector.ItemTemplate) v dlouhém výběrovém seznamu je složena ze dvou textových polí (TextBlock). Tyto textová pole jsou svázána s prvky LineOne respektive LineTwo jenž jsou atributy elementu Items. 3.2.2
Šablona Pivot
Dle mé osobní zkušenosti s aplikacemi pro WP8 je okolo poloviny XAML aplikací vyvinuto za použití šablony pivot. Tato šablona zobrazuje aplikace jako oddělené stránky mezi, kterými je možno přesouvat pohybem do stran. Tyto stránky se za sebou řadí dokola. Z poslední stránky je možno se přesunout na první a naopak. Šablona pivot se deklaruje pomocí elementu Pivot. Do tohoto elementu se vkládá atribut Title, kterým se definuje nadpis aplikace. Do elementu Pivot se vkládají elementy PivotItem pomocí kterých se definují jednotlivé stránky v aplikaci. Elementy PivotItem mají atribut Header jenž definuje nadpis jednotlivé stránky. Příklad aplikace se dvěma stránkami je na obrázku 9 a zdrojový kód k této aplikaci zúžený pouze na obsah elementu Grid, tedy na samotnou definici pivot šablony je zobrazen ve výpisu kódu 2.
3 Vývoj aplikací pro Windows Phone 8
Strana | 25 XAML
Obrázek 9: Pivot aplikace
3.2.3
Výpis kódu 2: Pivot šablona
Šablona Panorama
Tento druh šablony je vzdáleně podobný pivot šabloně. Stejně jako v minulém případě je aplikace rozdělena na několik stránek, mezi kterými je možno cyklicky listovat. Změnou je, že pozadí aplikace je jeden obdélníkový (panorama) obrázek, který se při listování stránkami posouvá. Další změnou je, že ovládací prvky mohou zasahovat do více „stránek“ na jednou. U Pivot aplikací je jedna stránka aplikace velká, tak aby vyplnila displej. U panorama aplikací se mohou prvky v rámci jedné stránky naskládat tak vedle sebe, že přesahují displejem zobrazovanou plochu. Uživatel si zobrazuje prvky, které nejsou aktuálně zobrazené pomocí horizontálního posunutí obrazovky. Ukázka panorama aplikace je na obrázku 10. Tato šablona se definuje pomocí elementu Panorama. V tomto elementu se pomocí atributu Title, definuje název aplikace. Do atributu Panorama jsou vnořeny elementy Panorama.Background a PanoramaItem. Pomocí elementu Panorama.Background se definuje v aplikaci pozadí. Elementy PanoramaItem vytvářejí v aplikaci jednotlivé stránky. Tento element zároveň obsahuje atribut Header, kterým se definuje název jednotlivé stránky. Příklad definování panorama šablony pomocí XAML je zobrazen ve výpisu kódu 3. Z důvodů zkrácení zápisu XAML výpisů je znovu uváděn zápis kódu pouze pro jednu stránku a od elementu Grid (s atributem LayoutRoot).
3 Vývoj aplikací pro Windows Phone 8
Obrázek 10: Panorama šablona [24]
XAML
Výpis kódu 3: Panorama šablona
Strana | 26
3 Vývoj aplikací pro Windows Phone 8 3.2.4
Strana | 27
Šablona Portrét
Tento druh šablony je z výše zmíněných nejjednodušší. Zobrazuje se pouze jedna stránka, na kterou je možno vkládat přímo prvky. Tedy veškeré ovládací prvky (z pohledu jazyka XAML elementy) jsou vkládány přímo do elementu Grid (s atributem LayoutRoot). Vzhledem k předchozímu definování způsobu zápisu aplikační stránky a ostatních šablon, považuji ukázku XAML kódu pro šablonu Portrét za zbytečnou.
3.3 Rotace zobrazení V případě, kdy je možno aplikaci zobrazit jak na výšku, tak na šířku, nastává problém s rozložením prvků na aplikační stránce. Jelikož nastavení, které se zdá esteticky a účelově dobré pro zobrazení na výšku, nemusí být vždy ideální pro zobrazení na šířku. Praktický příklad optimalizovaného zobrazení je na obrázku 11. V tomto obrázku lze na první pohled poznat, že zobrazení aplikace na výšku a na šířku nejsou identická. Zobrazení aplikace na šířku je upraveno tak, aby lépe využívalo celý prostor aplikační stránky. Toto automatické přeskupení zobrazení lze snadno dosáhnout malými úpravami XAML a připsáním odpovídajícího obslužného kódu v C#. Aby bylo možno prvky takto „přesouvat“ musejí být všechny vloženy do tabulky (respektive do některého řádku a sloupce v ní).
Obrázek 11: Optimalizace zobrazení
3 Vývoj aplikací pro Windows Phone 8
Strana | 28
Jak již bylo řečeno v kapitole 3.2.1 „Aplikační stránka a ovládací prvky“, tabulka se definuje za pomocí elementu Grid. Do tabulky se vkládají řádky a sloupce za pomocí elementů Grid.RowDefinition a Grid.ColumnDefinition. Do těchto elementů se vkládají přímo již jednotlivé sloupce či řádky prostřednictvím elementů RowDefinition nebo CulumnDefinition. Sloupce i řádky jsou v XAML jsou číslovány od nuly. Pokud se například nadefinují tři elementy RowDefinition, budou jednotlivé řady číslovány 0,1,2. Elementům řádku a sloupce je nutno nastavit velikost. V případě RowDefinition existuje atribut Height a pro atribut ColumnDefinition existuje atribut Width. U těchto atributů je možno udávat velikost v absolutních hodnotách (pixelech) nebo za použití hodnot: auto nebo * (v angličtině se používá pojem „aterisk“). Díky hodnotám auto a * je možno upravovat velikost (zobrazení) tabulky tak, aby byla aplikace optimalizovaná pro obě zobrazení. Hodnota auto „roztáhne“ sloupec či řádek podle velikosti obsahu, který je vložen do aktuální buňky v tabulce. Pokud v daném sloupci (řádku) není nic vloženo, tak je hodnota nastavena na nulovou velikost. Hodnota * v definici velikosti určuje sloupci (řádku), aby se „roztáhl“ do maximální velikosti volného prostoru. Ve výpisech kódu 4 a 5 je zobrazen kód pomocí, kterého se zajistí změna zobrazení aplikace uvedené v obrázku 11. XAML
Výpis kódu 4: XAML definice pro optimalizaci rozložení
Ve Výpisu kódu 4 je příklad toho jak se vytvoří tabulka se dvěma řádky a sloupci. Dále je vytvořen obrázek (element Image) a panel (element StackPanel), který obsahuje čtyři tlačítka (element Button). Pro změnu rozložení prvků je nutné u elementů Image a StackPanel definovat jejich název (atribut Name), aby se na ně bylo možné odkazovat z obslužného kódu a zároveň definovat jejich
3 Vývoj aplikací pro Windows Phone 8
Strana | 29
standartní pozici v tabulce za pomocí atributů Grid.Row (nastavení řádků v tabulce) a Grid.Column (nastavení sloupce v tabulce). C#
Výpis kódu 5: C# kód v pozadí pro optimalizaci obsahu
Výpis kódu 5 zobrazuje, jakým způsobem se zajistí změna rozložení pomocí C# kódů. Při každé změně orientace displeje se zavolá metoda PhoneApplicationPage_OrientationChanged, která následně zavolá metodu ZmenaPozice(), jenž zjistí, zda je orientace displeje horizontálně. Pokud ano, tak XAML element pojmenovaný buttomList (v tomto případě je to panel s tlačítky) změní pozici na řadu 0 a sloupec 1. Pokud je displej vertikálně, tak se bottomList vrátí na standartní pozici, tedy řádek 1 a sloupec 0.
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 30
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8 Jak již bylo zmíněno v předchozích kapitolách, aplikace, které jsou vyvíjeny pro WP8, lze velice snadno předělat, tak aby byly spustitelné i na Windows 8. Tato kapitola je nejprve zaměřena na rozdíly mezi oběma systémy. Následují podobnosti mezi těmito systémy. V poslední části je vysvětleno, za pomocí jakých technik lze efektivně navrhovat aplikace pro oba systémy. Nejprve je nutno vysvětlit, pro jaký druh aplikací je tento společný vývoj možný. Jsou jimi pouze takzvané Windows Store aplikace (v případě Windows 8) či Windows Phone Store aplikace (v případě Windows Phone 8). Tento druh aplikací není možno získat jiným způsobem nežli přes digitální distribuční platformu Window Store (nebo Windows Phone Store).
4.1 Rozdíly systému WP8 a W8 z hlediska uživatelského prožitku Před tím než bude možno začít vytvářet aplikace, je nutné si uvědomit rozdíly mezi jednotlivými systémy. Zařízení s WP8 aW8 jsou stavěny s jinými profilovými faktory (form factors25). V tabulce 3 je znázorněno, jaké jsou rozdíly mezi profilovými faktory.
Rozlišení displeje
Windows 8
Windows Phone 8
1024x768 a více
800x480, 1280x720, 1280x768
Druhy zobrazení aplikací
Na výšku, na šířku (standartní),
Na výšku (standartní), na šířku
Přichycený, Vyplněný Velikost displeje
10 palců a více
Menší než 5 palců
Hlavní obrazovka
Tabulka 3: Rozdíly dle profilových faktorů mezi W8 a WP8 [25]
25
Profilový faktor (form faktor) vyjadřuje tvar, velikost a fyzické uspořádání zařízení. Do profilového faktoru se síle řadí vlastnosti jako pozice, ve které se standardně zařízení drží (používá), uspořádání klávesnice a jiné.
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 31
Zároveň je nutno vzít v potaz, že oba dva systémy mají rozdílný uživatelský prožitek (UX) daný již z podstaty systému. Tento rozdíl je zapříčiněn faktem, že systém Windows 8 nemá úzce specifikovány parametry (oproti systému Windows Phone 8) na zařízení, které ho používají. Výrobci zařízení s Windows 8 tak získávají velký prostor pro různé modifikace a úpravy. Další velký rozdíl v uživatelském prožitku plyne z velikosti displeje na zařízeních s Windows 8 může být zobrazeno najednou mnohem více informací než v případě Windows Phone 8. Všechny rozdíly mezi oběma systémy z hlediska uživatelského prožitku jsou sepsány v tabulce 4. Windows 8
Windows Phone 8
Zařízení mohou mít rozdílné tvary i ovládání. Zařízení je možno ovládat pouze pomocí dotyků. Mohou se ovládat: dotykem, klávesnicí, myší či Zpravidla ho uživatel ovládá jednou rukou. kombinací těchto metod. Ve většině případů se zařízení ovládají oběma rukama. U těchto zařízení není zajištěna minimální Je zaručeno, že bude vždy určitá hardwarová hardwarová výbava.
výbava.
Aplikace mohou obsahovat více sloupců na Prvky na jedné stránce aplikace jsou ve formě jedné stránce.
jednoho dlouhého výběrového seznamu.
V aplikační liště může být téměř neomezený Systémová lišta může obsahovat pouze čtyři počet prvků.
prvky.
Neexistuje hardwarové tlačítko „zpět“
Je vždy dostupné hardwarové tlačítko zpět
Tabulka 4: Rozdělení systémů W8 a WP8 dle UX
Vzhledem k rozdílům v uživatelském prožitku, které vycházejí z jiných profilových faktorů systémů Windows 8 a Windows Phone 8 není doporučeno, aby se při vývoji aplikací určených pro oba dva systémy používal jeden dokument (XAML) pro definování uživatelského rozhraní obou systémů. Z tohoto vyplívá, že při tvorbě aplikace cílené jak na Windows 8 tak na Windows Phone 8 je nutno vytvořit dva XAML dokumenty zvlášť pro každý systém. Další faktory, díky kterým není doporučováno opětovné použití XAML, jsou [25]:
rozdíly ve jmenných prostorech
rozdílné ovládací prvky
rozdílné šablony aplikací
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 32
4.2 Platformově specifické prvky Rozdíly mezi systémy existují nejenom z hlediska uživatelského prožitku (UX) a uživatelského rozhraní (UI), ale existují takzvaně platformově specifické (platform specific) prvky. Těmito prvky jsou myšleny funkce systémů, které na obou systémech provádějí podobnou či identickou činnost, ale pro jejich použití je nutno použít jiné API a způsob zápisu popřípadě definování. V systému Windows 8 a Windows Phone 8 jsou jinak definovány následující funkce [25]:
Živé dlaždice
Notifikace
Ukládání nastavení aplikace
Síťové připojení
Práce na pozadí aplikace
Záznam médií
Funkce, které jsou vypsány v předchozím seznamu, je tedy nutno vždy definovat pro každý systém (W8 a WP8) zvlášť. Není možné v žádném případě použít stejný kód pro obsluhu stejné události na obou systémech. Při návrhu aplikací je tedy nutno vzít v potaz tyto platformově specifické prvky a napsat kód zvlášť pro každý systém za pomocí technik, které jsou vysvětleny dále v této kapitole. Dodatečné informace týkající se změn v jednotlivých částech kódu lze nalézt na stránkách Microsoft developer network. Zde je konkrétní odkaz: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714071(v=vs.105).aspx
4.3 Rozdíly v životním cyklu aplikací v systémech WP8 a W8 V kapitole 2.3 „Životní cyklus aplikací v systému Windows Phone 8“ je vysvětleno, jak probíhá životní cyklus aplikace v WP8. Pro obě dvě platformy platí, že pouze aktivní aplikace může zpracovávat kód. Podle stavu aplikace (myšleno v rámci životního cyklu) systém určuje, zda je možné aplikaci odebrat systémové prostředky (operační paměť), pokud docházejí [25].Na obrázku 12. je zobrazen rozdíl mezi životními cykly aplikací na systémech WP8 a W8.
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 33
Obrázek 12: Porovnání životních cyklů na WP8 a W8 [25]
Obrázek 12 zobrazuje, že aplikace v systému W8 nemají stav pohřbeno (Tombstoned). Dále stav uspaná (Dormant) je v systému W8 přejmenován na pozastaveno (Suspended). Stejně tak jsou změněny názvy procesů, které mění stav aplikace. Z rozdílného životního cyklu aplikací na platformách Windows 8 a Windows Phone 8 plyne, že se vývojáři aplikací musí vypořádat s událostmi, které nastávají na obou systémech. Kdyby tak neučinili, tak by například nebyla, při změně stavu aplikace načtena respektive uložena data do perzistentní paměti. Což by vedlo ke špatné využitelnosti aplikace. Události, které je nutno ošetřit, jsou v následujícím seznamu:
Windows Phone 8 (události se nachází v balíčku System.Windows.Application): o
Application_Launching – při spuštění aplikace
o
Application_Activated – při aktivování aplikace ze stavu uspaná a pohřbeno
o
Application_Deactivated – při deaktivování aplikace ze stavu běžící
o
Application_Closing – při ukončování aplikace ze stavu pohřbeno
Windows 8 (události se nacházejí v balíčku Windows.UI.Xaml.Application) o
OnLaunched – při spouštění aplikace
o
Resuming – při přechodu ze stavu pozastaveno do stavu běžící
o
Suspending – při přechodu ze stavu běžící do stavu pozastaveno
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 34
4.4 Data binding Při tvorbě aplikací určených pro systém Windows Phone 8 a zároveň Windows 8 je nutno se vyhnout psaní obslužného kódu, který synchronizuje datový model přímo se specifickým XAML dokumentem. Lze vytvořit platformově (zde myšleny W8 a WP8) nezávislý proces, který propojuje datový model26 přímo s prezentací dat. Tento proces se nazývá Data binding. Pojem Data binding lze do češtiny přeložit jako datová vazba [20]. Datová vazba je proces, ve kterém aplikace vytváří propojení mezi elementy uživatelského rozhraní a daty. Používání datových vazeb odděluje zobrazování dat od manipulace s nimi. Proces datového vázání udržuje spojení tak, aby byl dopad do kódu aplikace minimální. Zároveň zajišťuje automatické aktualizace odpovídajících hodnot, pokud se změní data, ať to je v UI nebo kdekoliv jinde. Tuto technologii podporuje většina Jazyků z frameworku .NET (Windows Forms, ASP.NET), ale pro jazyk XAML to je klíčová funkcionalita, díky které zajišťuje zvládání operací v aplikacích [19]. Pro vytvoření datové vazby je nutno určit nejprve zdroj vazby, tím může být .NET element, XML soubor, databáze nebo data z webové služby. Zdroj datové vazby musí mít implementované rozhraní INotifyPropertyChanged. Dále je nutné vytvořit spojení mezi business logikou a UI aplikace. Datová vazba je tímto spojením. Cílový element datové vazby zobrazuje a zároveň umožňuje měnit data (zdroj datové vazby). Cílovým elementem může být: Textbox, Listbox, Radiobutton, Checkbox, aj. Prvky cíle datové vazby musejí mít definován, při použití v rámci vývoje pro Windows Phone 8, jeden ze tří módů - více v tabulce 5. Mód OneWay
Popis Tento mód způsobí, že se v případě změny zdroje datové vazby automaticky aktualizuje i cíl datové vazby. Opačným směrem to, ale nefunguje.
TwoWay
V tomto případě se jakákoliv změna jak v cíli či zdroji datové vazby, promítne i na druhé straně
OneTime
Tento mód nechá jedinkrát aktualizovat cílový prvek při změně zdrojového prvku. Všechny následné změny zdrojového prvku nebudou mít žádný efekt. Tabulka 5: Módy datových vazeb [19]
26
V datovém modelu aplikací jsou uložena perzistentní data.
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8 4.4.1
Strana | 35
Příklad vytvoření XAML elementu a vytvoření datové vazby¨
V této části je názorný příklad toho, jak lze pomocí jazyka XAML vytvořit textové pole, které bude svázáno s proměnou Název typu String. Ve výpisu kódu 6 je vidět zápis, který vytvoří textové pole o výšce 483 px, šířce 420, zarovnané vlevonahoru a vytvoří vazbu s cílovým prvkem Nazev. XAML element se datově sváže s proměnou pomocí atributu Binding, který následuje název proměnné (v tomto případě je pojmenována „Název“). XAML
Výpis kódu 6: XAML vytvoření textového pole
Ve výpisu kódu 7 je vidět způsob zápisu, kterým se vytvoří datová vazba mezi zdrojovým a cílovým prvkem. Tato verze obslužného kódu je drobně změněna oproti verzi, která se používala pro WP 7.x. V předchozí verzi se nepoužíval atribut CallerMemberName, díky kterému není tento kód náchylný na chyby, jenž vznikají při refraktoringu názvů proměnných. Jak je vidět z výpisu kódu 7, tvorba pro jednu proměnnou je velice komplikovaná. Velké výhody začnou vznikat až při vytváření vazeb většího počtu proměnných, kdy se pouze deklarují proměnné a dopíšou se metody get a set. Zároveň je doporučováno brát tento zápis jako standardizovaný [26]. Pro vytvoření datových vazeb je nutno vytvořit obsluhu pro událost PopertyChangedEventHandler. Dále je nutné vytvořit metodu, která kontroluje, zda uvedená vlastnost UI prvků odpovídá dané hodnotě. Hodnoty se mění a cílové prvky se upozorňují pouze, když je potřeba.
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 36
C#
Výpis kódu 7:Vytváření datové vazby [26]
4.5 Návrhový vzor Model-View-ViewModel Návrhový vzor identifikuje součásti programů (aplikací) jako jsou třídy, instance, jejich role a spolupráce i rozdělení odpovědnosti. Každý návrhový vzor se zaměřuje a identifikuje jinou problematiku v objektově orientovaném návrhu. Návrhový vzor je vždy popisován spolu s jeho návrhovými omezeními, důsledky a faktory jeho použití. Návrhové vzory tvoří užitečný nástroj k vytváření znovupoužitelného objektově orientovaného návrhu [27]. Návrhový vzor Model-View-ViewModel (dále MVVM) se používá při vývoji aplikací, které jsou určeny pro více platforem. Díky tomuto návrhovému vzoru je možné velice efektivně zpravovat vývoj a při tom se vyhnout chybám, které mohou vzniknout při multiplatformním vývoji. Návrhový vzor MVVM nebyl původně navržen pro využití při návrhu aplikací určených pouze pro Windows 8 nebo Windows Phone 8. Dříve se používal tento návrhový vzor při vytváření Silverlight aplikací. Až s postupem času se začal ujímat u ostatních technologií, které využívají WPF. Pro MVVM
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 37
je WPF klíčovou technologií, jelikož podstatou MVVM je oddělení prezentační vrstvy od zpracování business logiky a datové modelu. Toho je docíleno pomocí XAML a datových vazeb a ty jsou použitelné pouze u aplikací používajících framework WPF. Oddělení těchto vrstev od sebe přináší větší přehlednost a jasné vymezení pravomocí jednotlivých částí aplikace. Vzhledem k tomu, že je v tomto návrhovém vzoru oddělena prezentační vrstva od business logiky, je možno ji využít efektivně při návrhu aplikací určeným pro Windows 8 a Windows Phone 8. To vyplývá z doporučení, které je uvedeno v kapitole 4.1 konkrétně, že by se neměla mezi těmito systémy přenášet prezentační vrstva (XAML), jelikož v ní se nacházejí největší rozdíly. Naopak v datovém modelu a business logice mohou aplikace v mnohem větší míře sdílet kód, který díky tomuto návrhovému vzoru není nutno znovu psát. Z mé vlastní zkušenosti vím, že tento návrhový vzor používají velice často vývojáři pro rozsáhlé aplikace určené pouze pro jeden systém. I při velkém rozsahu aplikace dokáže totiž MVVM udržet kód aplikace čitelný a snadněji upravitelný. Tento návrhový vzor rozděluje aplikace na tři části. Aby nedošlo k nedorozumění, jednotlivé části modelu jsou vždy napsány s velkým písmenem na začátku slova [28]:
Model (Model) – ukládá a spravuje data aplikací.
Pohled (View) – definuje a zobrazuje uživatele rozhraní. Pohled nezpracovává uživatelské akce v aplikacích. Aplikace používající návrhový vzor MVVM mohou mít více Pohledů.
Model pohledu (ViewModel) – Nebo také prezentační model (Presentation model). V této části běží veškerá business logika celé aplikace oddělená od prezentační vrstvy (Pohled). V MVVM může mít aplikace více Modelů pohledu. Ve většině případů každý Pohled má svůj vlastní Model pohledu (nemusí platit vždy).
Každá na sebe navazující část (Model –Model pohledu a Pohled – Model pohledu) jsou spolu pevně propojeny. Přenositelné mezi jednotlivými systémy jsou pouze části: Model a Model pohledu. Část Pohled je reprezentována XAML dokumenty, které nejsou doporučeny používat skrze obě dvě platformy. Na obrázku 13 je zobrazeno, jakým způsobem probíhá komunikace mezi jednotlivými částmi v rámci návrhového vzoru MVVM. Model je část, která je kompletně spravována. Sama neprovádí žádnou akci vůči jiným částem MVVM. Nejvíce vytěžovanou částí MVVM je Model pohledu, který čerpá či ukládá data z Modelu. Zároveň pomocí datových vazeb (Data Binding) udržuje aktualizovaná data mezi Pohledem a načtenými daty, která si drží. Pokud v Modelu pohledu nastanou určité události (events), lze poslat z Modelu pohledu do Pohledu určitá data či zprávy. V případě, kdy uživatel provede nějakou akci v Pohledu (uživatelském rozhraní), tak pohled posílá příkaz
(Commands) do Modelu pohledu [28].
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 38
Obrázek 13: Architektura MVVM [28]
Pro návrhový vzor MVVM je technologie datových vazeb (Data Binding) velice důležitou. Díky ní je možno [28]:
ušetřit psaní opakujícího se kódu
jednodušší použití unit testů
Pohled a Model pohledu nezasahují do svých definic, což zabraňuje častějším pádům aplikací
Příkazy v Modelu pohledu nahrazují proces zaregistrování se k určitým událostem, které se udávají v Pohledu. K tomu, aby bylo možné předávat příkazy, musí třídy Modelu pohledu implementovat rozhraní System.Windows.Input.ICommand. V Pohledu (tedy v XAML dokumentu) je nutno přidat k elementu, ke kterému se příkaz váže atribut Command [28]. Pomocí zpráv (Messages) lze posílat informace mezi objekty. Zprávy je vhodné posílat mezi Modely pohledu. Výše zmiňovaná situace nastává, když více Modelů pohledu řídí jeden Pohled. (respektive jeho část) [28]. Pro samotný návrhový vzor MVVM není vytvořena žádná nativní API, ale je možno si stáhnout mnoho open-source frameworků, které usnadňují vývoj. Nejznámější představitel MVVM LightToolkit je dostupný na stránkách http://mvvmlight.codeplex.com/ [28]. Seznam výhod a nevýhod návrhového vzoru MVVM při reálném použití [28]:
Výhody o
Lze znovu využít Model a Model pohledu mezi více systémů
o
Kód má jasně definovanou strukturu
o
Lze testovat Model pohledu pomocí unit testů
o
Kód lze lehce udržovat
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 39
Nevýhody o
Je nutno napsat mnoho předdefinovaného kódu
o
V určitých aplikacích (spíše menších typů) je použití MVVM obtížnější, než přepsání aplikace pro jinou platformu.
4.6 Techniky pro opětovné užití kódu mezi třídami aplikací Windows 8 a Windows Phone 8 za pomoci Visual Studia 2012 Za pomocí Visual Studia 2012 lze využít několik technik, které pomáhají oddělit kód, který je pro každý systém specifický nebo naopak opětovně užít kód, který je pro oba systémy stejný. Pomocí těchto technik se pracuje s kódem na úrovni business logiky a datového modelu. První technikou pro opětovné užití kódu jsou Přenositelné knihovny (portable class library). Přenositelná knihovna se vytváří za pomocí šablony (templates) projektu ve Visual Studiu 2012 [29]. Tato šablona je dostupná pouze ve verzích Visual Studia, které nejsou volně stažitelné (tedy ve všech verzích kromě „express“). Při vytváření Přenositelné knihovny se určují frameworky, pro které má být knihovna určena. Proces výběru frameforku při vytváření přenositelné knihovny je zobrazen na obrázku 14.
Obrázek 14: Výběr frameworku při vytváření přenositelné knihovny
Vývěr frameworků omezí dostupné API v Přenositelné knihovně pouze na taková, která jsou použitelná na všech frameworcích, které byly vybrány. Čím více frameworků je vybráno, tím menší se
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 40
stává průnik API, které lze použít. Přenositelné knihovny lze vytvořit pro následující platformy: Windows, Silverlight, Windows Phone 7.x, 8 a Xbox. Ve sdílených knihovnách lze používat pouze jazyky C#, Visual Basic nebo F#. V Přenositelných knihovnách se vytváří business logika, která je na platformě nezávislá. Přenositelné knihovny je možno využívat po jejich vytvoření ve všech třídách aplikací, které používají některý z frameworků, který byl vybrán při vytváření Přenositelné knihovny. Další technikou je sdílení kódu (shared code). Tento název představuje vytvoření jednoduchého odkazu třídy, která je vytvořena v jednom z projektu a nakopírována do projektu jiného. Po vytvoření odkazu lze třídu využít ve všech projektech a zároveň při změně kódu třídy v jednom projektu se změny projeví okamžitě v ostatních projektech. Na techniku sdílení kódu navazuje technika podmíněných bloků (Conditional Blocks). Tato technika ve třídě povoluje či zamezuje zpracování určité části kódu pomocí podmíněných bloků. Tyto bloky rozlišují kód pomocí cílové platformy, pro kterou je kód určen. Podmíněný blok se vytvoří pomocí zápisu #if a konstanty, která definuje cílovou platformu. Použití podmíněného bloku v C# je zobrazeno ve výpisu kódu 8 a 9. Ve výpisu kódu 8 se v případě kompilace pro Windows 8 použije kód, který je obsažen v bloku #if a při kompilaci pro zbylé systémy se použije část v bloku #else. Ve výpisu kódu 9 je případ opačného použití, kdy je veškerý kód, který nepatří systému Windows 8 kompilován v bloku #if a kód pro systém Windows 8 je kompilován v bloku #else [30]. Zde jsou názvy konstant při použití podmíněných bloků:
NETFX_CORE pro Windows 8
WINDOWS_PHONE pro Windows Phone 8
XAML
C#
Výpis kódu 8: Podmíněný blok XAML [30]
Výpis kódu 9: Podmíněný blok C# [30]
Použití sdílených bloků je nutno používat s rozmyslem. Pokud se to s použitím přežene, kód se začne stávat nečitelným. Tím pádem se stává následná úprava kódu velice náročnou a složitou. Poslední možností jak sdílet kód mezi více platformami je použití dědičnosti (Inheritance). Pro použití této techniky není zapotřebí používat přímo Visual Studio 2012, jelikož dědičnost je vlastnost jazyka C#. V této technice se platformě nespecifický kód implementuje do „Nadtříd“. Platformě specifický kód se může implementovat dvěma způsoby [30]:
4 Vývoj aplikace pro běh na Windows Phone 8 i Windows 8
Strana | 41
Potomek nadtřídy implementuje platformě specifický kód
Potomek nadtřídy implementuje abstraktní třídy, které poskytují platformě specifický kód
Tato čtveřice technik vývojářům umožňuje na úrovni business logiky sloučit (oddělit) kód, který je platformě nezávislý (závislý). Techniky Přenositelných knihoven a Sdílení kódu umožní vytvářet kód, který se sdílí mezi třídami aplikací určených pro rozdílná zařízení, v tomto případě pro Windows 8 a Windows Phone 8. Techniky Podmíněných bloků a Dědičnosti naopak vývojářům umožňují ve třídách oddělit kód, který nelze sdílet od toho, který sdílet lze.
5 Použití nových technologií v aplikacích WP8
Strana | 42
5 Použití nových technologií v aplikacích WP8 Tato kapitola se zabývá praktickými příklady, jak lze v aplikacích použít nové technologie, kterými jsou:
NFC27
Hlasové ovládání
Mapy a geolokalizace
Peněženka
Vybral jsem čtveřici technologií, které jsou buď velice progresivní anebo je neposkytují všichni konkurenti na poli mobilních operačních systémů. Pro každou z těchto technologií je vytvořena vlastní aplikace, která danou technologii používá. Tyto aplikace jsou vytvořeny tak, aby vystihovaly jednoduchost, s jakou je lze vyvíjet pro systém Windows Phone 8. Nejsou cíleny pro reálné nasazení. Aby bylo možné spustit tyto aplikace na počítači, je nutné mít nainstalovaný program Visual Studio 2012 a splňovat veškeré požadavky, které jsou sepsány v kapitole 3.1. Všechny aplikace jsou přiloženy v elektronické příloze. V tištěné verzi této práce je elektronickou přílohou myšleno přiložené CD, v elektronické verzi práce jsou aplikace uloženy společně s touto prací v informačním systému.
5.1 NFC Nejprve je nutno technologii NFC představit. NFC je množina standardů pro chytré telefony, či jiná zařízení, která po přiblížení k sobě (zpravidla ne více než pár centimetrů) naváží rádiovou komunikaci. Tato komunikace slouží k bezkontaktnímu placení, výměně dat nebo k zahájení jiného druhu komunikace [31]. Díky této technologii můžou komunikovat nejenom mobilní telefony mezi sebou, ale může mobilní telefon komunikovat s nenapájenými NFC čipy, kterým se říká tagy. Přenos dat pomocí technologie NFC je omezen na 424 Kbitů za sekundu. Z důvodu, že přenos dat je ovlivněn velkou blízkostí zařízení není standardně nutná žádná autentifikace [32]. Využití NFC může být například následující [32]:
27
Zahájení Bluetooth nebo WiFi spojení s jiným zařízením
Čtení „chytrých“ plakátů, které obsahují digitální obsah. Obsah plakátů je uložen v tagu.
NFC je zkratka pro Near Field Communication v překladu tato zkratka znamená komunikování s blízkým okolím.
5 Použití nových technologií v aplikacích WP8
Strana | 43
Vyměňování elektronických vizitek
Před začátkem praktické ukázky je nutno podotknout, že použití této technologie nelze nasimulovat pomocí WP8 emulátoru ve Visual Studiu 2012. 5.1.1
Aplikace používající NFC
Cílem je vytvořit jednoduchou ukázkovou aplikaci nazvanou „NFC komunikátor“, která mezi dvěma zařízeními vyměňuje krátké textové zprávy pomocí technologie NFC. Aplikace bude obsahovat textové pole, do kterého se napíše zpráva. Zároveň aplikace bude obsahovat čtyři tlačítka:
Odebírat zprávy
Zastavení odebírání zpráv
Odesílání zpráv
Zastavení odesílání zpráv
Projekt s touto aplikací je dostupný v elektronické příloze ve složce „NFC komunikátor“. Aplikace NFC komunikátor obsahuje28 jednu třídu a jedem XAML dokument:
HlavniStranka.xaml – v tomto dokumentu je definováno uživatelské rozhraní (zobrazené na obrázku 15) aplikace, ze kterého se provádí veškerá funkcionalita
HlavniStranka.xaml.cs – v této třídě je definován kód pro obsluhu dokumentu HlavniStranka.xaml (respektive je v ní definován kód celé aplikace).
V diagramu 1 je zobrazen diagram tříd aplikace „NFC komunikátor“.
Diagram 1: diagram tříd aplikace NFC komunikátor
28
Visual Studia 2012 vytváří u všech Windows Phone aplikací pomocné balíčky: Properites (nastavení), References (reference), Assets (přílohy) a Resources (zdroje). Zároveň je u každé aplikace automaticky vytvořen dokument App.xaml a třída App.xaml.cs, pomocí kterých se odchytávají události v životním cyklu aplikace.
5 Použití nových technologií v aplikacích WP8
Strana | 44
Obrázek 15 zobrazuje, jak je definována hlavní stránka aplikace, která slouží k psaní, odesílání a přijímaní zpráv pomocí NFC.
Obrázek 15: Ukázka hlavní stránky v aplikaci NFC komunikátor
Pokaždé, když aplikace příjme či odešle zprávu, zobrazí se nové okno s potvrzením nebo příchozí zprávou. Při použití některých technologií nebo vlastností systému je nutno v souboru WPAppManifest.xml (soubor tzv. aplikačního manifestu) nastavit takzvané schopnosti (Capabilities) aplikace. Pokud se tyto schopnosti nenastaví, tak není možné použít API, které je definované danou schopností. V případě použití NFC je nutno zvolit ID_CAP_PROXIMITY. Pro odesílání zpráv je nutno vytvořit instanci třídy ProximityDevice, která je v balíčku Windows.Networking.Proximity.
Pomocí
metody
ProximityDevice.GetDefault()
se
aktivuje
standartdní NFC zařízení [33]. Dále je nutné vytvořit proměnnou datového typu long, do které se bude ukládat identifikační číslo zprávy. Nakonec se tato zpráva pošle pomocí metody PublishMessage() ze třídy ProximityDevice. Tato metoda má dva atributy typu String. První je typ zprávy a druhý je přímo její text. Typ zprávy se vytváří pro každou aplikaci, aby se mohly aplikace identifikovat, že jím byla určena. Typ zprávy musí vždy začínat identifikátorem „Windows.“, dále již může mít libovolnou strukturu (v této aplikaci má zpráva tvar „Windows.NFCTyp“). Tento kód je zobrazen ve výpisu kódu 10.
5 Použití nových technologií v aplikacích WP8
Strana | 45
C#
Výpis kódu 10: NFC - odesílání zpráv
Jelikož zpráva, která je nastavena při zmáčknutí tlačítka „Odesílání zpráv“ se odesílá po celou dobu od spuštění,
je
nutno
umožnit
i
vypnutí
odesílání.
Toho
se
docílí
zavoláním
metody
StopPublishingMessage() ze třídy ProximityDevice. Této metodě je nutné předat jako parametr id odesílané zprávy. Tento kód je zobrazen ve výpisu kódu 11. C#
Výpis kódu 11: NFC - zastavení odesílání
Pro přijímání zpráv je nutné provézt stejné kroky jako při jejich odesílání. Jediná změna nastává v případě volání metody pro přijmutí. Metoda SubscribeForMessage() třídy ProximityDevice přijímá zprávy pouze určitého typu, stejně jako v případě odesílání. Typ zprávy se znovu nadefinuje ve tvaru „Windows.“ a zbytek typu (stejně jako v případě odesílání typ zprávy je „Windows.NFCTyp“). Přijatá zpráva se skládá ze dvou atributů: zařízení, které zprávu odeslalo a samotné zprávy. Tento kód je zobrazen ve výpisu kódu 12.
5 Použití nových technologií v aplikacích WP8
Strana | 46
C#
Výpis kódu 12: NFC - přijímání zpráv
Nakonec je nutné stejně jako v případě odesílání, ukončit přijímání zpráv pomocí metody StopSubscribtingForMessage() s parametrem ID zprávy. Tento kód je zobrazen ve výpisu kódu 13. C#
Výpis kódu 13: NFC - zastavit přijímání zpráv
5.2 Hlasové ovládání Hlasové ovládání bylo již dostupné v systému Windows Phone 7.x., ve kterém bylo možno: pomocí hlasových příkazů spouštět aplikace, volat či psát kontaktům ze seznamu, hledat dotazy na internetu či diktovat SMS zprávy. Nově v systému Windows Phone 8 můžou hlasové ovládání používat i aplikace. Nyní je možné pomocí hlasových příkazů:
29
uživateli předávat instrukce týkající se dalšího ovládání v aplikaci
ovládat aplikaci hlasovými příkazy (spuštění určité části aplikace nebo funkcí)
„čtení textu29“, který je v aplikaci
Funkci čtení textu Microsoft pojmenoval Speech Synthesis. V textu bude nadále používáno čtení textu.
5 Použití nových technologií v aplikacích WP8
Strana | 47
Funkce čtení textu, na rozdíl od rozpoznávání hlasových příkazů nepotřebuje připojení k internetu. Pokud se aplikace vyvíjí (směřují) pouze na český trh, tak se hlasové ovládání nedá uživatelsky komfortně využít. Tím je myšleno, že čeština nepatří mezi podporované jazyky s hlasovými funkcemi. Naopak pokud se vývoj směřuje do zemí, které mají jazykovou podporu, aplikace získávají velkou konkurenční výhodu. Podporovanými jazyky jsou: angličtina (britská, americká, indická), němčina, francouzština, ruština, španělština, portugalština a další (celkový počet je patnáct). 5.2.1
Aplikace používající hlasové příkazy
Cílem je vytvořit aplikaci nazvanou „Hlasový ovladač“, která bude spouštěna pomocí hlasu. Hlasový ovladač bude obsahovat tři stránky. Na první stránce se nachází textové pole, do kterého bude možné vepsat text. Druhá stránka obsahuje statický text. V třetí stránce je vykreslen obrázek. Více stránek je vytvořeno z důvodu, aby bylo možné vyzkoušet se navigovat pomocí hlasových příkazů na určitou stránku. Z důvodu zachování funkčnosti příkazů bude aplikace lokalizována v angličtině. Stránky s textem obsahují tlačítko, které spustí funkci čtení textu. Projekt s touto aplikací je dostupný v elektronické příloze ve složce „Hlasový ovladač“. Aplikace Hlasový ovladač obsahuje následující dokumenty a třídy:
HlasovePrikazy.xml – v tomto dokumentu jsou definovány hlasové příkazy pro spuštění aplikace
VkladaniTextu.xaml – definuje úvodní obrazovka aplikace, která se zobrazí po spuštění. Na této stránce se nachází textové pole, do kterého je možno napsat libovolný text, který lze následovně přečíst (pomocí tlačítka „Speak“). Na každé stránce aplikace se nacházejí tři tlačítka „1“, „2“ a „3“, pomocí kterých je možno se navigovat mezi jednotlivými stránkami
VkladaniTextu.xaml.cs – v této třídě je definován kód pro obsluhu dokumentu VkladaniTextu.xaml
SamotnyText.xaml – definuje stránku se statickým text, který je možno přečíst. Tato stránka obsahuje taktéž navigační tlačítka
SamotnyText.xaml – v této třídě je definován kód pro obsluhu dokumentu SamotnyText.xaml
Obrazek.xaml – definuje stránku, která zobrazuje pouze obrázek a navigační tlačítka
Obrazek.xaml.cz – v této třídě je definován kód pro obsluhu dokumentu Obrazek.xaml
CteniTextu.cz – tato třída zpracovává text a následně ho nechá přečíst nahlas
5 Použití nových technologií v aplikacích WP8
Strana | 48
V diagramu 2 je zobrazen diagram tříd aplikace „Hlasový ovladač“.
Diagram 2: diagram tříd aplikace Hlasový ovladač
Obrázek 16 zobrazuje stránku, která se načte po otevření aplikace (VkladaniTextu.xaml). Do této stránky aplikace je možno vložit vlastní text, který lze přečíst nahlas. Na tuto stránku se dá navigovat pomocí tlačítka „1“. Obrázek 17 zobrazuje stránku definovanou dokumentem SamotnyText.xaml. V této stránce je vložen statický text, který lze přečíst stejně jako v předchozím případě. Na tuto stránku je možno se navigovat pomocí tlačítka „2“. Obrázek 18 zobrazuje stánku s obrázkem (Obrazek.xaml). Na tuto stránku je možno se navigovat pomocí tlačítka „3“.
Obrázek 16: Stránka aplikace definovaná dokumentem VkladaniTextu.xaml
Obrázek 17: Stránka aplikace definovaná dokumentem SamotnyText.xaml
Obrázek 18: Stránka aplikace definovaná dokumentem Obrazek.xaml
Pokud je v aplikaci využita funkce rozpoznávání hlasu, je nutno v dokumentu WPAppManifest.xml vybrat schopnost ID_CAP_SPEECH_RECOGNITION.
5 Použití nových technologií v aplikacích WP8
Strana | 49
Využití funkce čtení textu v aplikacích je velice jednoduché. Je zapotřebí vytvořit instanci třídy SpeechSynthesizer, která se nachází v balíčku Windows.Phone.Speech.Synthesis. U třídy SpeechSyntesizer stačí zavolat metodu SpeachTextAsync(), které se předá jako atribut text, který se má přečíst. Metoda SpeachTextAsync() je asynchronní, což je nutno při definování vzít v úvahu. Tento kód je zobrazen ve výpisu kódu 14. C#
Výpis kódu 14: Čtení textu
Pro spouštění určité části nebo nějaké specifické funkce aplikace se musí vytvořit VCD30 dokument. Tento dokument je ve formě XML souboru. Aby se mohlo používat hlasové ovládání z VCD dokumentu, musí se v mobilním zařízení daná aplikace alespoň jednou spustit. VCD dokument (HlasovéPrikazy.xml) má kořenový element VoiceCommands, ve kterém se definuje jmenný prostor. Dále následuje element CommandSet ,ve kterém se za pomocí atributu xml:lang definuje jazyk hlasových příkazů. Element CommandPrefix určuje slovo či slova, která spouští danou aplikaci. Do elementu Example se vkládá text, který se zobrazuje vždy při hlasovém ovládání jako nápověda. Díky elementu Feedback je možno uživateli aplikace říkat, co má dělat dále, či co se právě děje. Element Navigete po rozpoznání příkazu naviguje uživatele na určitou stránku v aplikaci. Na stránku se odkazuje pomocí atributu Target. Do elementu ListenFor se zapisují slova, pro která je příkaz určen. Hvězdička ve složených závorkách znamená, že může před či popřípadě za hledaným slovem být jakékoliv jiné. Do hranatých závorek se vkládají hledaná slova. Poslední možností je do složených závorek vložit slovo, na které je následně odkazováno v elementu PhraseList (v tomto elementu pomocí atributu Label). Díky tomuto se může hledaný výraz rozšířit o seznam slov, která 30
Zkratka pro Voice Command Definition neboli definice hlasových příkazů.
5 Použití nových technologií v aplikacích WP8
Strana | 50
jsou v elementech Item vložených do elementu PhaseList. Výše uvedený postup je nezbytný pro vytvoření hlasového ovládání spouštění aplikace. XAML
Výpis kódu 15:VLC soubor - hlasové ovládání
5.3 Mapy a geolokalizace Technologie geolokalizace byla již dostupná v systému WP7.x, kde se používala za pomoci třídy GeoCoordinateWatcher, jenž se nacházela v balíčku System.Device.Location. V systému WP8 je třída GeoCoordinateWatcher stále podporována, ale je doporučeno při vývoji WP8 aplikací používat nové geolokalizační API, které je dostupné spolu se systémem WP8 [34]. Nové geolokalizační API přináší následující výhody [34]:
Je dostupné jak z ovládaného kódu tak i z nativního
Vylepšené jednorázové vyhledání pozice mobilního telefonu
Vylepšená schopnost průběžného sledování pozice
5 Použití nových technologií v aplikacích WP8
Strana | 51
Velkou změnou zároveň je, že mapové podklady nejsou čerpány z Bing Mapy (mapová služba Microsoftu), ale z mapových podkladů společnosti Nokia. Tyto mapové podklady se stahují přímo do mobilního telefonu pro každou podporovanou zemi zvlášť [34]. Před zahájením návrhu aplikace je důležité ještě vysvětlit, jakým způsobem mobilní zařízení získávají informace o své pozici. Zdroje geolokalizace jsou následující tři [34]:
GPS – Tato je standartní technologie pro zjišťování polohy. Ze všech podporovaných technologií je nejpřesnější. Zároveň ale je nejvíce náročná na baterii, dlouho trvá prvotní zjištění aktuální polohy a uvnitř objektů se stává nepoužitelnou (není dostupný signál z družic).
BTS31 - Je systém telefonních věží, které přijímají a odesílají telefonní hovory. Mobilní telefony získávají informace o své poloze pomocí zaměření polohy pomocí několika BTS (této technologii se říká triangulace) [35]. Tato technologie není energeticky tolik náročná jako GPS a prvotní lokalizace probíhá velice rychle. Nevýhodami této technologie je malá přesnost a v případě, že je slabý telefonní signál, tak je lokalizace téměř nemožná.
WiFi – Geolokalizace pomocí WiFi funguje na podobném principu jako u telefonních věží. Využití této technologie pro lokalizaci je vhodné pouze v místech s velkým počtem WiFi vysílačů (tedy ve městech). Rychlost a přesnost připojení se odvíjí přímo od počtu WiFi vysílačů.
Přímé ovládání technologií, které mají být použity k geolokalizaci není možné. Lze však nastavit požadovanou přesnost za pomocí metody DesiredAccuracy() ze třídy Geolocator v balíčku Windows.Devices.Geolocaton. Požadovaná přesnost nastavena na vysokou (High) tak bude s velkou pravděpodobností použita GPS. Naopak pokud je přesnost nastavena na hodnotu automatickou (Default), tak je geolokalizace optimalizována pro úsporu baterie. Ve třídě Geolocator je zároveň možné nastavit přesností geolokalizace na daný počet metrů. Toto nastavení se provede přidáním hodnoty do parametru DesiredAccurancyInMeters. 5.3.1
Aplikace používající mapu a geolokalizaci
Cílem je vytvořit aplikaci pojmenovanou „Kde jsem“, která bude vypisovat aktuální polohu přístroje. Tato poloha se vždy automaticky zanese do mapy, která je zobrazena v aplikaci. Uživatel bude moci změnit typ kartografického módu32. Zároveň bude implementováno tlačítko pro resetování, které
31
Je zkratka pro Base transceiver station ,v českém překladu se používá základní převodní stanice [35]. Kartografickým typem je myšlen způsob zobrazení mapy. Ve WP8 jsou dostupné typy: Silniční (Road), Hybridní (Hybrid), Letecký (Aerial) a Terénní (Terrain). 32
5 Použití nových technologií v aplikacích WP8
Strana | 52
vrátí mapu do pohledu na celý svět a zruší vyhledávání pozice. Projekt s touto aplikací je dostupný v elektronické příloze ve složce „Kde jsem“. Aplikace „Kde jsem“ obsahuje tyto třídy a dokumenty:
HlavniStranka.xaml – tento dokument definuje hlavní stránku aplikace, která používá šablonu Pivot (více v kapitole 3.2.2). Pivot obsahuje dvě „podstránky“ pojmenované „Mapa“ a „Poloha“. V podstránce Mapa je zobrazena mapa světa (pokud není vyhledána aktuální pozice) nebo je zobrazena mapa aktuální pozice (v případě, kdy je zapnuto vyhledávání). V podstránce poloha je vypsána aktuální zeměpisná šířka a délka. Zároveň je možné v této podstránce změnit nastavení mapy pomocí šesti tlačítek: „Denní mód“, „Noční mód“, „Silniční mód“, „Hybridní mód“, „Letecký mód“, „Terénní mód“. V obou podstránkách jsou zobrazena tlačítka „lupa“ a „křížek“. Pomocí tlačítka „lupa“ se zahájí vyhledání aktuální pozice. Tlačítkem „křížek“ se zruší vyhledávání.
HlavniStranka.xaml.cs - v této třídě je definován kód pro obsluhu dokumentu HlavniStranka.xaml
Na obrázku 19 je zobrazena mapa v pohledu na celý svět. Takto je zobrazena pokaždé, když není zapnuto vyhledávání pozice. Na obrázku 20 je zobrazena mapa při vyhledání aktuální pozice. Obrázek 21 zobrazuje podstránku Poloha s tlačítky pro změnu módu mapy a s vypsanými aktuálními gelokalizačními souřadnicemi. V diagramu 3 je zobrazen diagram tříd aplikace „Kde jsem“.
Diagram 3: diagram tříd aplikace Kde jsem
5 Použití nových technologií v aplikacích WP8
Obrázek 19: Zobrazení mapy při vypnuté geolokalizaci
Strana | 53
Obrázek 20: Zobrazení mapy při zapnutém vyhledávání
Obrázek 21: Zobrazení podstránky Poloha
Jako v předchozích aplikacích je nutno v souboru WMAppManifest.xml v záložce schopnosti (Capabilities) vybrat odpovídající schopnost aplikace. V tomto případě to je ID_CAP_LOCATION a ID_CAP_MAP. Pro zobrazení mapy v aplikaci je nutné vložit do kódu v XAML element Map. To je veškerá úprava, která je nutná pro zobrazení mapy v aplikaci. U elementu Map je potřebné definovat atribut Name, aby bylo možné se v obslužném kódu na element Map odkazovat. Pro zjištění aktuálního umístění je nutno vytvořit instanci třídy Geolocator, která je v balíčku Windows.Devices.Geolocation. Pozice se zjistí pomocí asynchronní metody GetGeopositionAsync(). Tato metoda obsahuje dva atributy maximumAge a timeout. MaximuAge representuje délku platnosti dat, respektive po kolika minutách se mají obnovit. Atribut timeout určuje, jak dlouho se bude čekat na odezvu v případě, kdy jsou potřebná nová data. Metoda GetGeoposition vrací hodnotu
instance
třídy
Geoposition
(tato
třída
je
rovněž
uložena
v balíčku
Windows.Devices.Geolocation). V případě, kdy je geolokalizování v mobilním zařízení manuálně vypnuto, metoda GetGeopositionAsync() vyhodí výjimku, kterou je nutno ošetřit. Přesunutí mapy na aktuální pozici se provede vložením hodnoty (typu GeoCoordinate) do parametru Center, jenž obsahuje element Map. Geolokalizační pozice se vytvoří pomocí instance třídy GeoCoordinate, která má dva parametry: zeměpisnou šířku (Latitude) a zeměpisnou délku (Longitude). Pomocí parametru ZoomLevel lze nastavit atribut zoom v elementu Map (1 je nemenší přiblížení; 20 největší). Tento kód je zobrazen ve výpisu kódu 16.
5 Použití nových technologií v aplikacích WP8
Strana | 54
C#
Výpis kódu 16: Geolokalizace
Změna kartografického typu mapy se provádí za pomocí atributu CartographicMode elementu Map. Do tohoto atributu se vkládá hodnota z výčtového typu MapCartographicMode, jenž je uložen v balíčku Microsoft.Phone.Maps.Controls. Zároveň je možno změnit barevné schéma (Color mode) zobrazení33. Změna barevného schéma je docílena pomocí atributu ColorMode elementu Map. Do atributu ColorMode se vkládá hodnota výčtového typu MapColorMode. Tento kód je zobrazen ve výpisu kódu 17.
33
Barevné schéma může nabývat hodnot: světlé (Light), tmavé (Dark). To se využívá u geolokalizačních aplikací, u kterých se předpokládá, že je uživatel využívá jak ve dne, tak i v noci.
5 Použití nových technologií v aplikacích WP8
Strana | 55
C#
Výpis kódu 17: Změna kartografického módu a barevného schéma
5.4 Peněženka Služba peněženka (Wallet) poskytuje uživatelům systému WP8 následující možnosti [36]:
Jednotnou správu kreditních, členských či věrnostních karet, kupónů a jiných druhů „karet“
Řízení platebních instrumentů při nákupech v aplikacích nebo v internetových obchodech
Propojení prvků z peněženky s instalovanými aplikacemi
Provádění bezdotykových plateb pomocí NFC
Za pomoci „Wallet“ API mohou aplikace vytvářet, číst, přepisovat nebo mazat položky v peněžence. Položky v peněžence mohou odkazovat na vnořený odkaz přímo v aplikaci. Uživatel může přidávat položky do peněženky manuálně. Tak se například děje u kreditní karty, pomocí které uživatelé nakupují aplikace. Všechny „karty“, které se v peněžence vytvoří, jsou propojeny s určitou aplikací. U této technologie nastává změna při definování „schopností“ aplikace v WMAppManifest.xml. Jakýkoliv vývojář může ve své aplikaci využít schopnost ID_CAP_WALLET. V případě, kdy bude aplikace používat schopnosti: ID_CAP_WALLET_PAYMENTINSTRUMENTS (potřebné pro platby
5 Použití nových technologií v aplikacích WP8 kreditními či debetními kartami) nebo ID_CAP_WALLET_SECUREELEMENT
Strana | 56 (potřebné pro
bezkontaktní platby prostřednictvím NFC) musí mít vývojář dodatečné oprávnění34. 5.4.1
Aplikace používající peněženku
Cílem je vytvořit aplikaci pojmenovanou „Ekniha“, která bude vytvářet uživatelské respektive věrnostní karty pro imaginární elektronický obchod (www.ekniha.cz) s knihami. Z důvodu zjednodušení kódu se budou nový uživatelé vytvářet (ukládat) pouze v rámci aplikace. Nebudou se tedy informace odesílat na server, který by nové uživatele vytvořil ve své databázi (v reálném použití by se velice pravděpodobně podobné informace odesílali). Projekt s touto aplikací je dostupný v elektronické příloze ve složce „Ekniha“. Aplikace Ekniha obsahuje následující třídy a dokumenty:
HlavniStranka.xaml – tento dokument definuje hlavní stránku aplikace, která se zobrazí po spuštění aplikace. Jsou v ní zobrazena tři textová pole pro vyplnění: jméno zákazníka, telefonní číslo a identifikační číslo. Na této stránce je zobrazeno zároveň tlačítko pro přidání nové karty do peněženky pojmenované „Přidání karty“
HlavniStranka.xaml.cs - v této třídě je definován kód pro obsluhu dokumentu HlavniStranka.xaml
Spolecnost.cs – tato třída definuje společnost Ekniha. Pomocí atributů: název a webová stránka
Uzivatel.cs – tato třída definuje jednotlivé zákazníky, kteří si chtějí vytvořit novou zákaznickou kartu. Zákazník je definován pomocí atributů: jméno zákazníka, telefonní číslo zákazníka a identifikační číslo zákazníka
V diagramu 4 je zobrazen diagram tříd aplikace „Ekniha“.
34
Toto oprávnění je možné získat prostřednictvím stránek http://dev.windowsphone.com/en-us.
5 Použití nových technologií v aplikacích WP8
Strana | 57
Diagram 4: diagram tříd aplikace Ekniha
Na obrázku 22 je zobrazena hlavní stránka aplikace „Ekniha“. Na této stránce jsou zobrazena jednotlivá textová pole pro vložení informací o zákazníkovi a tlačítko pro přidání karty do peněženky pojmenované „Přidání karty“.
Obrázek 22: Hlavní stránka aplikace Ekniha
5 Použití nových technologií v aplikacích WP8
Strana | 58
Položka karty se vytváří pomocí instance třídy WalletTransactionItem. V této třídě se pomocí mnoha metod nastavují informace o nové kartě. Informace jsou tří typů:
Týkající se zákazníka – sem patří jméno, telefonní číslo, platební adresa, id. V případě platebních karet se zde uvádí použitelný zůstatek, limit pro platby atd.
Týkající se vydavatele karty – jméno vydavatele, jeho webová adresa, telefonní číslo atd.
Obecné informace – logo karty, datum začátku a konce platnosti atd.
Vložení položky do peněženky obstarává úloha AddWalletItemTask.Item ,které se předá instance třídy WalletTransactionItem. Před vytvořením nové karty je uživatel vždy upozorněn, aby se zabránilo neadekvátnímu přidávání karet. Tento kód je zobrazen ve výpisu kódu 18.
Výpis kódu 18: Přidaní nové karty do peněženky
6 Závěr
Strana | 59
6 Závěr Jedním z cílů této bakalářské práce bylo čtenářům představit nový mobilní operační systém Windows Phone 8. První kapitoly se zabývaly obecným popisem, který je pochopitelný jak pro laiky, tak i pro odborníky na poli mobilních operačních systémů. Odborníkům zároveň přináší cenné informace týkající se vývoje aplikací. Podle mého názoru tento systém přebírá přednosti předchozí verze systému (7. x), tím je především myšleno jednoduché a uživatelsky přívětivé prostředí, které je navíc oproti předchozí verzi vylepšeno. Přechodem na nové jádro NT získává systém zároveň větší rychlost a prostor pro další rozvoj. V další části byly představeny technologie, které jsou při vývoji aplikací pro WP8 nutné znát. Důraz byl kladen vždy na jednoduché vysvětlení a znázornění praktického použití. V některých případech po praktické ukázce následují odkazy na podrobnější zdroje. Na mě nejvíce zapůsobil značkovací jazyk XAML, díky kterému je možné velice jednoduché a rychlé vytvoření uživatelského rozhraní aplikací. Spolu s Visual Studiem 2012 tvoří silnou dvojici, která vývojářům pomáhá při práci. Navíc je možno si tento vývojový nástroj, ačkoliv v omezené verzi, obstarat zcela zdarma. Tato skutečnost je velkou výhodou pro začínající vývojáře. Předposlední část je zaměřena na techniky vývoje aplikací určené pro více platforem. V tomto případě pro Windows 8 a Windows Phone 8. Uvedené informace z této části, stejně tak jako návrhový vzor MVVM, je možné prakticky využít i v jiných případech. Závěrečná část prakticky vysvětluje nové funkce systému, např. možnosti tvorby aplikace obsluhující nějakou z nových funkcí systému WP8. V této části jsem se snažil poukázat na to, že vývoj aplikací používající nové a komplexní technologie, zůstává stále velice jednoduchý a rychlý. Přínosy mé práce jsou následující: jednotné zpracování ohromného množství informací, které je možné získat ohledně sytému WP8. Bohužel vzhledem jejich množství není možné všechny probrat je všechny do podrobností a některé musely být dokonce i vynechány. Další přínos vidím v jednoduchém vysvětlení všech technologií, které jsou spojeny s vývojem aplikací pro WP8. Zároveň v době publikování je tato práce jedinou česky psanou publikací, která se věnuje systému WP8. Věřím, že v této práci najdou podnětné informace jak začínající, tak pokročilí vývojáři.
7 Terminologický slovník
Strana | 60
7 Terminologický slovník
Technický pojem Uniform Resource Identifier
Zkratka URI
Popis pojmu Do češtiny lze tento pojem přeložit jako Jednotný identifikátor zdroje. Je to textový řetězec s přesně definovanou strukturou, který slouží k přesné identifikaci zdroje informací [37].
Hyperlink
Elektronické spojení, které poskytuje přímý přístup z jednoho dokumentu do jiného dokumentu, či jinou pozici v původním dokumentu [38].
Handler
Handler přestavuje reakci na událost, která vznikla v kódu. (vlastní definice)
NT File system
NTFS
Souborový systém pro NT. Jeden z dokumentových systémů určených pro operační systémy založené na jádře NT [39].
Active Server Page
ASP
ASP je webový Framework, který umožňuje tvořit webové stránky a webové aplikace pomocí HTML, CSS a JavaScriptu [40].
Multitasking
Možnost běhu více než jedné aplikace v jednu chvíli na jednom jádře počítače [41].
Cache
Paměť počítače s velice, krátkou přístupovou dobou. Používá se pro uložení často nebo nedávno použitých instrukcí či dat [42].
Random access memory
RAM
Paměť s libovolným přístupem. Přístup k jakékoliv části v paměti trvá vždy stejnou dobu [43].
Software developmentkit
SDK
Sada nástrojů pro vývoj. Pomocí této sady je možno
7 Terminologický slovník
Strana | 61 vyvíjet aplikace pro určitou platformu [44].
Silverlight
Microsoft Silveright je technologie pro moderní prohlížeče. Platforma určená pro tvorbu dynamického online obsahu a interaktivní práce s ním [45].
Nativní kód
Nativní kód (Native code) je určený pro běh na určitém typu procesoru využívajíce instrukční sady procesoru [46].
Řízený kód
Termín používaný společností Microsoft pro zdrojový kód, který je zpracováván pod kontrolu Common Language Runtime Virtual Machine [47].
Pixel
px
Malý samostatný element, který ve spojení s ostatními vytváří obraz na displejích či vytisknutých obrázcích (vlastní definice)
User interface
UI
Aspekty počítačových systémů nebo programů, které mohou být viděny, slyšeny nebo jinak vnímány lidmi [48].
8 Použitá literatura
Strana | 62
8 Použitá literatura [1] Wikipedia, „Internet,“ 7 Březen 2013. [Online]. Available: http://en.wikipedia.org/wiki/Internet. [Přístup získán 17 Březen 2013]. [2] J. Matura, „Už třetina Čechů používá mobil k přístupu na internet,“ 8 Únor 2012. [Online]. Available:
http://mobil.idnes.cz/uz-tretina-cechu-pouziva-mobil-k-pristupu-na-internet-ppf-
/mob_tech.aspx?c=A120208_025711_mob_tech_jm. [Přístup získán 16 Březen 2013]. [3] StatCounter,
„Mobile
vs.
Desktop,“
StatCounter.com,
[Online].
Available:
http://gs.statcounter.com/#mobile_vs_desktop-ww-monthly-200812-201302. [Přístup získán 17 Březen 2013]. [4] Statcounter, „Top 8 mobile operating systems,“ Statcounter.com, [Online]. Available: http://gs.statcounter.com/#mobile_os-ww-monthly-200812-201302. [Přístup získán 17 Březen 2013]. [5] Merrian-Webster,
„Operating
system,“
Merrian-Webster,
[Online].
Available:
http://www.merriam-webster.com/dictionary/operating%20system. [Přístup získán 21 Duben 2013]. [6] PCMag.com,
„Definition:
of
Operaring
system,“
PCMag.com,
[Online].
Available:
http://www.pcmag.com/encyclopedia/term/48510/operating-system. [Přístup získán 21 Duben 2013]. [7] mobileburnurn.com, „What is "Operating system",“ Mobilebutn.com, [Online]. Available: http://www.mobileburn.com/definition.jsp?term=OS. [Přístup získán 21 Duben 2013]. [8] R. Mikudík, „Z pravěku do přítomnosti: historie systému Windows Mobile,“ Mafra, 14 Prosince 2007. [Online]. Available: http://mobil.idnes.cz/z-praveku-do-pritomnosti-historie-systemuwindows-mobile-pn9-/mob_tech.aspx?c=A071126_121747_tech-a-trendy_ram. [Přístup získán 19 Březen 2013]. [9] ZDnet, „Mobile OS market shares in 2005,“ Zdnet.com, 11 Únor 2006. [Online]. Available: http://www.zdnet.com/blog/itfacts/mobile-os-market-shares-in-2005-symbian-51-linux-23-
8 Použitá literatura
Strana | 63
windows-17/10153. [Přístup získán 19 Březen 2013]. [10] K. Tomáš, Vývoj mobilních aplikací pro OS Windows Phone 7, Praha: Bakalářská práce na ČVUT FEL. Vedoucí práce STANISLAV VÍTEK, 2012. [11] M. J. Foley, „Microsoft's Windows Phone 8: What's new for business users,“ zdnet.com, 30 Říjen 2012. [Online]. Available: http://www.zdnet.com/microsofts-windows-phone-8-whats-new-forbusiness-users-7000006605/. [Přístup získán 17 Březen 2013]. [12] D. Bohn a C. Ziegler, „Windows Phone 8 review,“ The Verge, 2012 Října 29. [Online]. Available: http://www.theverge.com/2012/10/29/3570494/windows-phone-8-review. [Přístup získán 20 Březen 2013]. [13] A. Whitechapel a S. McKenna, Windows phone 8 developers internals, Microsoft, 2013. [14] B. Molen, „Windows Phone 8 review,“ Engadget, 29 Říjen 2012. [Online]. Available: http://www.engadget.com/2012/10/29/windows-phone-8-review/. [Přístup získán 21 Březen 2013]. [15] A. Wigley a R. Tiffany, „M5: Windows Phone 8 Application Lifecycle,“ 2012. [Online]. Available: http://download.microsoft.com/download/8/8/E/88E56A15-50E6-42D0-A71ACCD5673425C4/S5%20WP8%20Application%20Lifecycle.pdf. [Přístup získán Dubna 6 2013]. [16] Microsoft corporation, „Introduction to WPF,“ Microsoft corporation, 2013. [Online]. Available: http://msdn.microsoft.com/cs-cz/library/aa970268.aspx. [Přístup získán 6 Květen 2013]. [17] „Windows Presentation foundation,“ Wikipedia, 20 Březen 2013. [Online]. Available: http://cs.wikipedia.org/wiki/Windows_Presentation_Foundation. [Přístup získán 7 Duben 2013]. [18] J. Jirava, „XAML jako deklarativní jazyk,“ XAML.cz, 2010 Leden 13. [Online]. Available: xaml.cz/wpf/xaml-jako-deklarativní-jazyk/. [Přístup získán 7 Duben 2013]. [19] M. Dalal a A. Ghoda, „XAML—A Declarative Language for .NET Applications,“ v XAML Developer Reference, Sebastopol, O'Rwilly Media, Inc., 2011, pp. 5 - 10. [20] L. Vais, „Framework WPF,“ Praha, 2011.
8 Použitá literatura
Strana | 64
[21] Microsoft corporation, „Build for both - comparing W8 and WP8,“ Microsoft corporation, 2012. [22] Microsoft corporation, „Windows Phone SDK 8.0,“ Microsoft Corporation, 30 Říjen 2012. [Online]. Available: http://www.microsoft.com/en-us/download/details.aspx?id=35471. [Přístup získán 21 Duben 2013]. [23] A.
Wigley
a
R.
Tiffany,
„Channel
9,“
04
Prosinec
2012.
[Online].
Available:
http://download.microsoft.com/download/E/9/F/E9F6AFA5-3308-4E0F-97E4C28CBE13C9FE/S1%20Introducing%20WP8%20Development.pdf.. [Přístup získán 21 Duben 2013]. [24] Microsoft corporation, „Panorama control design guidelines for Windows Phone,“ Microsoft corporation,
6
Březen
2013.
[Online].
Available:
http://msdn.microsoft.com/en-
us/library/windowsphone/design/hh202912(v=vs.105).aspx. [Přístup získán 27 Duben 2013]. [25] B. Riga, „Build for Both Windows 8 and Windows Phone8 Jump Start,“ Jump Start, 2012. [26] A. Wigley a R. Tiffany, „M2: Designing Windows Phone Apllications,“ Microsoft Corporation, 2012. [27] E. Gama, R. Helm a J. V. Ralph Johnson, Návrh Programů pomocí vzorů; Stavební kameny objektově orientovaných programů, Praha: Grada, 2003. [28] B. Riga, „Model-View-ViewModel,“ Microsoft Corporation, 2012. [29] Microsoft,
„Portable
Class
Libraries,“
Microsoft,
[Online].
Available:
http://msdn.microsoft.com/en-us/library/vstudio/gg597391(v=vs.100).aspx. [Přístup získán 11 Květen 2013]. [30] B. Riga, „Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio,“ 2012. [31] Wikipedia, „Near field communication,“ Wikipedia, 2013 Duben 30. [Online]. Available: http://en.wikipedia.org/wiki/Near_field_communication. [Přístup získán 2013 Května 3]. [32] A. Wigley a R. Tiffany, „M12: Near Field Communications and Bluetooth,“ Microsoft corporation, 2012.
8 Použitá literatura
Strana | 65
[33] Microsoft corporation, „ProximityDevice class,“ Microsoft corporation, 25 Únor 2013. [Online]. Available:
http://msdn.microsoft.com/cs-
cz/library/windows/apps/windows.networking.proximity.proximitydevice. [Přístup získán 2 Květen 2013]. [34] A. Wigley a R. Tiffany, „M14: Location and Maps,“ Microsoft Corporation, 2012. [35] M. Snozová, „BTS,“ Kabinet informačních studii a knihovnictví, 25 Listopad 2011. [Online]. Available: http://kisk.phil.muni.cz/wiki/BTS. [Přístup získán 4 Květen 2013]. [36] Microsoft Corporation, „Wallet for Windows Phone 8,“ Microsoft Corporation, 22 Duben 2013. [Online].
Available:
http://msdn.microsoft.com/en-
us/library/windowsphone/develop/jj207032(v=vs.105).aspx. [Přístup získán 04 Květen 2013]. [37] „Uniform
Resource
Identifier,“
Wikipedia,
10
Březen
2013.
[Online].
Available:
http://cs.wikipedia.org/wiki/Uniform_Resource_Identifier. [Přístup získán 2013 Duben 6]. [38] Merriam-Webster, „Hyperlink,“ An Encyclopedia Britannica company, [Online]. Available: http://www.merriam-webster.com/dictionary/hyperlink. [Přístup získán 7 Květen 2013]. [39] Webopedia,
„NTFS,“
Webopedia,
[Online].
Available:
http://www.webopedia.com/TERM/N/NTFS.html. [Přístup získán 7 Květen 2013]. [40] Microsoft, „Get Started with ASP.NET @ ASP.NET MVC,“ Microsoft, [Online]. Available: http://www.asp.net/get-started. [Přístup získán 7 Květen 2013]. [41] BusinessDictionary.com,
„Multitasking,“
BusinessDictionary.com,
[Online].
Available:
http://www.businessdictionary.com/definition/multitasking.html. [Přístup získán 7 Květen 2013]. [42] Merriam-Webster, „Cache,“ An Encyklopedia Britannica Company, [Online]. Available: http://www.merriam-webster.com/dictionary/cache. [Přístup získán 7 Květen 2013]. [43] Wikipedia,
„RAM,“
Wikipedia,
4
Duben
2013.
http://cs.wikipedia.org/wiki/RAM. [Přístup získán 7 Květen 2013].
[Online].
Available:
8 Použitá literatura
Strana | 66
[44] Webopedia,
„SDK,“
Webopedia,
[Online].
Available:
http://www.webopedia.com/TERM/S/SDK.html. [Přístup získán 7 Květen 2013]. [45] Microsoft,
„Microsoft
Silverlight,“
Microsoft,
[Online].
Available:
http://www.microsoft.com/cze/web/silverlight/. [Přístup získán 7 Květen 2013]. [46] Webopedia,
„Nativ
code,“
Webopedia,
[Online].
Available:
http://www.webopedia.com/TERM/N/native_code.html. [Přístup získán 7 Květen 2013]. [47] Wikipedia,
„Managed
code,“
Wikipedia,
26
Únor
26.
[Online].
Available:
http://en.wikipedia.org/wiki/Managed_code. [Přístup získán 26 Květen 2013]. [48] Dictionary.com,
„User
interface,“
Dictionary.com,
[Online].
Available:
http://dictionary.reference.com/browse/user%20interface. [Přístup získán 7 Květen 2013]. [49] „Fremework,“
Wikipedia,
16
Březen
2013.
[Online].
Available:
http://cs.wikipedia.org/wiki/Framework. [Přístup získán 7 Duben 2013]. [50] „Microsoft
Direct3D,“
Wikipedia,
31
Březen
2013.
[Online].
Available:
http://en.wikipedia.org/wiki/Microsoft_Direct3D. [Přístup získán 7 Duben 2013]. [51] PCMag,
„Definition
of:
Pocket
PC,“
PCMag.com,
[Online].
Available:
http://www.pcmag.com/encyclopedia/term/49428/pocket-pc. [Přístup získán 19 Březen 2013]. [52] Wikipedia, „Systém základnových stanic,“ Wikipedia, 8 Březen 2013. [Online]. Available: http://cs.wikipedia.org/wiki/Syst%C3%A9m_z%C3%A1kladnov%C3%BDch_stanic. [Přístup získán 4 Květen 2013]. [53] F. Knopp, Bakalářská práce: Tvorba uživatelsky přívětivého webu UX, Praha: VŠE, 2012.
9 Seznamy
Strana | 67
9 Seznamy 9.1 Seznam obrázků Obrázek 1: Sdílené jádro Windows [13] .................................................................................................. 8 Obrázek 2: Hlavní obrazovka s živými dlaždicemi ................................................................................. 10 Obrázek 3: Menu s aplikacemi .............................................................................................................. 10 Obrázek 4: Životní cyklus aplikace [15] ................................................................................................. 11 Obrázek 5: Uspání a probuzení aplikace [15] ........................................................................................ 13 Obrázek 6: Deklarace UI XAML a C# [19] .............................................................................................. 17 Obrázek 7: Emulátor Windows Phone .................................................................................................. 20 Obrázek 8: Ovládací prvky ..................................................................................................................... 22 Obrázek 9: Pivot aplikace ...................................................................................................................... 25 Obrázek 10: Panorama šablona [24] ..................................................................................................... 26 Obrázek 11: Optimalizace zobrazení ..................................................................................................... 27 Obrázek 12: Porovnání životních cyklů na WP8 a W8 [25] ................................................................... 33 Obrázek 13: Architektura MVVM [28] .................................................................................................. 38 Obrázek 14: Výběr frameworku při vytváření přenositelné knihovny .................................................. 39 Obrázek 15: Ukázka hlavní stránky v aplikaci NFC komunikátor........................................................... 44 Obrázek 16: Stránka aplikace definovaná dokumentem VkladaniTextu.xaml...................................... 48 Obrázek 17: Stránka aplikace definovaná dokumentem SamotnyText.xaml ....................................... 48 Obrázek 18: Stránka aplikace definovaná dokumentem Obrazek.xaml ............................................... 48 Obrázek 19: Zobrazení mapy při vypnuté geolokalizaci........................................................................ 53 Obrázek 20: Zobrazení mapy při zapnutém vyhledávání ...................................................................... 53 Obrázek 21: Zobrazení podstránky Poloha ........................................................................................... 53 Obrázek 22: Hlavní stránka aplikace Ekniha.......................................................................................... 57
9 Seznamy
Strana | 68
9.2 Seznam tabulek Tabulka 1: Typy aplikací [13] ................................................................................................................. 15 Tabulka 2: Požadavky pro Virtual Studio 2012 [23] .............................................................................. 18 Tabulka 3: Rozdíly dle profilových faktorů mezi W8 a WP8 [25] .......................................................... 30 Tabulka 4: Rozdělení systémů W8 a WP8 dle UX .................................................................................. 31 Tabulka 5: Módy datových vazeb [19] .................................................................................................. 34
9.3 Seznam zdrojových kódů Výpis kódu 1: Definování aplikační stránky s hlavními prvky ................................................................ 23 Výpis kódu 2: Pivot šablona .................................................................................................................. 25 Výpis kódu 3: Panorama šablona .......................................................................................................... 26 Výpis kódu 4: XAML definice pro optimalizaci rozložení....................................................................... 28 Výpis kódu 5: C# kód v pozadí pro optimalizaci obsahu ....................................................................... 29 Výpis kódu 6: XAML vytvoření textového pole ..................................................................................... 35 Výpis kódu 7:Vytváření datové vazby [26] ............................................................................................ 36 Výpis kódu 8: Podmíněný blok XAML [30] ............................................................................................ 40 Výpis kódu 9: Podmíněný blok C# [30].................................................................................................. 40 Výpis kódu 10: NFC - odesílání zpráv .................................................................................................... 45 Výpis kódu 11: NFC - zastavení odesílání .............................................................................................. 45 Výpis kódu 12: NFC - přijímání zpráv..................................................................................................... 46 Výpis kódu 13: NFC - zastavit přijímání zpráv ....................................................................................... 46 Výpis kódu 14: Čtení textu .................................................................................................................... 49 Výpis kódu 15:VLC soubor - hlasové ovládání ....................................................................................... 50 Výpis kódu 16: Geolokalizace ................................................................................................................ 54 Výpis kódu 17: Změna kartografického módu a barevného schéma .................................................... 55 Výpis kódu 18: Přidaní nové karty do peněženky ................................................................................. 58
9 Seznamy
Strana | 69
9.4 Seznam diagramů Diagram 1: diagram tříd aplikace NFC komunikátor ............................................................................. 43 Diagram 2: diagram tříd aplikace Hlasový ovladač ............................................................................... 48 Diagram 3: diagram tříd aplikace Kde jsem........................................................................................... 52 Diagram 4: diagram tříd aplikace Ekniha .............................................................................................. 57
10 Rejstřík
Strana | 70
10 Rejstřík
A Aplikační manifest, 44, 48
Peněženka, 55 Pivot, 24 Podmíněných bloky, 40 Pohřbená aplikace, 11
D Data binding, 34
Přenositelné knihovny, 39
S
Direct3D, 14 Sdílený kód, 40
G Geolokalizace, 50
H HERE Maps, 10
M
Spuštěná aplikace, 11
U Uspaná aplikace, 11
V VCD, 49 Virtualizace, 19
Mapy, 50
Visual Studio, 18
Metro, 9
Vypnutá aplikace, 11
Model-View-ViewModel, 36 MSDN, 19
N
W Windows CE, 6 Windows Phone 7, 6
NFC, 42
Windows Phone Store, 30
Nové Windows uživatelské rozhraní, 9
Windows Presentation Foundation, 14
O Office, 10
P Panorama, 25
Windows Store, 30
X XAML, 14, 16