MASARYKOVA UNIVERZITA. Fakulta informatiky DIPLOMOVÁ PRÁCE. Vývoj aplikací pro Windows Phone 8 a portace na Windows 8



Podobné dokumenty
Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

CineStar Černý Most Praha

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Vývoj Internetu značně pokročil a surfování je dnes možné nejen prostřednictvím počítače, ale také prostřednictvím chytrých telefonů, tabletů a

Programové vybavení počítačů operační systémy

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Základní informace. Operační systém (OS)

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Formy komunikace s knihovnami

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

Bc. Martin Majer, AiP Beroun s.r.o.

Procesory nvidia Tegra

ArcGIS Online Subscription

Služby Microsoft Office 365

ELEKTRONICKÉ PODÁNÍ OBČANA

úvod Historie operačních systémů

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

INTERAKTIVNÍ PUBLIKACE pro smartphony a tablety

Seznámení s prostředím dot.net Framework

Elektronické učebnice popis systému, základních funkcí a jejich cena

PDA: PROGRAMOVÁNÍ PRO WINDOWS PHONE 7 JIŘÍ DANIHELKA

Vývoj OS Windows Mobile. Ing. Jiří Šilhán

modrana: flexibilní navigační systém Martin Kolman

Knihovny v mobilních zařízeních. Jan Pokorný Knihovny současnosti 2012

MOBILNÍ TELEFON HUAWEI P9 LITE DUALSIM MOBILNÍ TELEFON, DOTYKOVÝ, 5,2" DISPLEJ, 16 GB, 2 GB RAM, ANDROID 6, ZLATÝ

Mobile application developent

JUMO LOGOSCREEN 600. Dotyková budoucnost záznamu: Obrazovkový zapisovač

MASARYKOVA UNIVERZITA STŘEDISKO PRO POMOC STUDENTŮM SE SPECIFICKÝMI NÁROKY. Polygraf

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Mobilní informační průvodce - RegTim

Autodesk AutoCAD 2018

ArcGIS for Server. V oblasti správy, vizualizace a zpracování prostorových dat nabízí ArcGIS for Server tyto možnosti:

Vzdálený přístup k počítačům

Desigo Control Point řešení pro ovládání a monitorování budov siemens.cz/desigo

SADA VY_32_INOVACE_PP1

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Dílčí část A. Specifikace předmětu plnění. Limitní cena za 1 ks bez DPH: Kč. Cena za 1 ks bez DPH * Cena za 1 ks

Wonderware Information Server 4.0 Co je nového

1 Vytvoření oboustranné informační platformy MČ občan (mobilní aplikace + rozhraní API pro přenos informací do webových stránek městské části)

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Konvertibilní Tablet STRUČNÁ PŘÍRUČKA 8085 LKB001X CJB1FH002ASA

NOTEBOOK DELL INSPIRON 13Z 5000 TOUCH NOTEBOOK, I5-7200U, 4GB, 128GB SSD, 13.3" FHD DOTYKOVÝ, W10, ŠEDÝ, 2YNBD ON-SITE

1.2 Operační systémy, aplikace

NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014

Projekt podnikové mobility

Aplikační programové vybavení

1. Začínáme s FrontPage

Operační systém osobního počítače

Operační systémy: funkce

Vývoj mobilních telefonů. Barbora Bartlíková

Reliance 3 design OBSAH

Počítačové kurzy buildit

Průvodce Mobilní agendou

Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6

Bezpečná autentizace přístupu do firemní sítě

Vzdálená správa v cloudu až pro 250 počítačů

Příloha č. 1 zadávací dokumentace - Specifikace předmětu plnění veřejné zakázky

Motorola Phone Tools. Začínáme

Projekt: Internetové stránky obce Modletice

Chytré telefony pohledem operátora. Petr Dvořáček, Jan Fišer, T-Mobile Czech Republic a.s

Extrémně silné zabezpečení mobilního přístupu do sítě.

gdmss Lite Android DVR Mobile Client Návod k obsluze aplikace

instalace, implementace a integrace se systémem spisové služby (SSL)

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Moderní trendy využívání mobilních (dotykových) zařízení nejen ve výuce. RNDr. Jan Krejčí, PhD.

Příloha č. 1. Systém webových stránek města Česká Lípa. I. Vymezení předmětu VZ

GOOGLE APPS FOR WORK. TCL DigiTrade

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

pouˇzití USB nebo SPI

O projektu Nasazení OpenOffice.org v praxi

Domino 10 nové komponenty a související témata (node.js, ES )

Telekomunikační koncová zařízení

Identifikátor materiálu: ICT-1-17

MOBILNÍ TELEFON SAMSUNG GALAXY S8+ (G955) ŠEDÝ MOBILNÍ TELEFON, OCTA CORE 2,3GHZ, 4GB RAM, 64GB, LTE, 6,2", IP68, ANDROID 7.

CZ.1.07/1.5.00/

Dotykové úlohy PC. Petr Novák (Ing., Ph.D.)

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

KANTOR IDEÁL Vzdělávání a podpora pedagogických pracovníků ZŠ a SŠ při integraci ICT do výuky. registrační číslo: CZ.1.07/1.3.00/51.

Konfigurace zařízení - Střední průmyslová škola Edvarda Beneše a Obchodní akademie Břeclav

Jakub Šesták. ESEJ DO PŘEDMĚTU DIGITÁLNÍ KNIHOVNY

Share online vydání

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

Autodesk AutoCAD LT 2019

Nový design ESO9. E S O 9 i n t e r n a t i o n a l a. s. U M l ý n a , P r a h a. Strana 1 z 9

Obsah. Úvod 9 Komu je kniha určena 11 Konvence použité v knize 11

Příručka ke službě Postup instalace služby SMSender na operačních systémech Windows 98, Windows Millenium, Windows 2000, Windows XP

IS pro podporu BOZP na FIT ČVUT

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Přístup k poště MS Office 365 mají pouze studenti 1. a 2. ročníku EkF prezenčního studia. Přístup k ostatním službám mají všichni studenti.

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

PROFESIONÁLNÍ ODPOSLECH MOBILNÍHO TELEFONU SPYTEL

4 Microsoft Windows XP Jednoduše

Česká zemědělská univerzita v Praze

Transkript:

MASARYKOVA UNIVERZITA Fakulta informatiky DIPLOMOVÁ PRÁCE Vývoj aplikací pro Windows Phone 8 a portace na Windows 8 Brno, 2014 Bc. Václav Holuša

Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Bc. Václav Holuša Poděkování Rád bych poděkoval především vedoucí mé diplomové práce, Ing. RNDr. Barboře Bühnové, Ph.D., za ochotu a spolupráci při vytváření této práce a za zkušenosti, doporučení a rady, které mi předala. Dále bych chtěl poděkovat rodině, přátelům a známým, kteří mi tvořili zázemí v průběhu celého vysokoškolského studia.

Abstrakt Diplomová práce se zabývá vývojem aplikací pro chytré telefony a tablety, především pro zařízení s operačními systémy Windows Phone resp. Windows 8. Jsou diskutovány možností vývoje pro obě tyto platformy zároveň. Důraz je kladen na sdílení kódu mezi oběma aplikacemi, čehož je dosáhnuto vhodným návrhem architektury aplikace a využitím sdílené knihovny Portable Class Library. Jsou popsány možnosti propojení těchto sdílených knihoven s platformně specifickým uživatelským rozhraním implementovaným v jazyce XAML. Součástí práce jsou ukázkové aplikace demonstrující tyto techniky. Abstract Diploma thesis deals with application development for smartphones and tablets, primarily devices running Windows Phone and Windows 8 operating systems. Applications co-development options for both platforms are discussed, with focus on sharing code between these applications, which is attained by using suitable application architecture and Portable Class Libraries. Possibilities of linking shared libraries with platform-specific user interface implemented in XAML are described. Sample application demonstrating these techniques is bundled with the thesis. Klíčová slova Chytrý telefon, tablet, aplikace, vývoj aplikací, Windows Phone, Windows 8, Visual Studio, sdílení kódu, Portable Class Library,.NET, XAML, architektura MVVM, Data Binding, Commanding Keywords Smartphone, tablet, application, application development, Windows Phone, Windows 8, Visual Studio, code sharing, Portable Class Library,.NET, XAML, MVVM architecture, Data Binding, Commanding

Obsah 1 Úvod... 6 2 Mobilní zařízení... 8 2.1 Smartphone... 8 2.2 Tablet... 10 2.3 Phablet... 10 2.4 Hybridní zařízení... 11 3 Aplikace... 12 3.1 Typy aplikací... 12 3.1.1 Graficky náročné aplikace... 12 3.1.2 Aplikace s vysokou mírou integrace do systému... 13 3.1.3 Aplikace náročné na síťové připojení... 14 3.1.4 Aplikace informačního charakteru... 14 3.2 Charakteristiky aplikací... 14 4 Možnosti implementace aplikací... 16 4.1 Nativní aplikace... 16 4.1.1 Výhody a nevýhody... 16 4.1.2 Vhodnost použití... 17 4.2 In-Browser aplikace... 17 4.2.1 Výhody a nevýhody... 18 4.2.2 Vhodnost použití... 18 4.2.3 Standardy... 18 4.3 Kompromisní řešení... 19 4.3.1 Výhody a nevýhody... 19 5 Platforma Windows Phone 8 a Windows 8... 20 5.1 Windows Phone 8... 20 5.1.1 Poskytované funkce... 21 5.1.2 Historie verzí... 22 5.2 Windows 8 a Windows 8 RT... 22 5.3 Modern UI... 23 5.4 Windows Store, Windows Phone Store... 26 6 Charakteristika platforem vzhledem k vývoji aplikací... 28 6.1 Grafické rozhraní... 29

6.2 API... 30 6.2.1 Windows Phone 8... 30 6.2.2 Windows 8... 32 7 Implementace aplikací pro Windows Phone 8 a Windows 8... 34 7.1 Architektura... 34 7.1.1 Model-View-ViewModel... 34 7.1.2 Portable class libraries... 36 7.2 Vývojové nástroje... 36 7.3 Typy projektů... 37 7.4 Typická struktura projektu... 39 7.4.1 Soubor aplikačního manifestu... 40 7.5 Životní cyklus aplikace... 43 7.5.1 Windows Phone 8... 43 7.5.2 Windows 8... 45 7.6 XAML... 46 7.6.1 Data Binding... 46 7.6.2 Příkazy (Commands)... 48 7.7 Publikace na aplikační obchody... 49 7.7.1 Schvalovací proces... 49 7.7.2 Zveřejnění aplikace... 50 8 Ukázková aplikace... 51 8.1 Specifikace... 51 8.2 Implementace... 52 8.2.1 Struktura projektu a architektura aplikace... 52 8.2.2 Uživatelské rozhraní... 53 8.2.3 Třídy ViewModel... 55 8.2.4 Zpracování uživatelských vstupů... 55 8.3 Publikace... 57 8.4 Problémy při vývoji... 58 8.4.1 Hardware a operační systém... 58 8.4.2 Vývojové nástroje... 58 9 Závěr... 59 Slovník pojmů... 61 Literatura... 63 Přílohy... 68

1 Úvod Život v 21. století si již málokdo dokáže představit bez moderní techniky. Během několika desetiletí se stala nejrůznější elektronická zařízení součástí běžného života mnoha lidí. Typickým představitelem takového zařízení je mobilní telefon či tablet. Trendem posledních let je neustálé zvyšování výkonu a obecně možností, které mobilní zařízení nabízí při zachování malé velikosti a nízké spotřeby energie. Spolu se zmenšováním zařízení vznikl další trend, a sice jejich ovládání pomocí dotykových displejů. Dříve se mobilní telefony ovládaly výhradně hardwarovou numerickou klávesnicí, avšak v současné době jsou na vzestupu plně dotyková zařízení s minimem fyzických tlačítek. Dnes se můžeme na trhu setkat s velkým množstvím takových mobilních zařízení. Přístroje určené především k telefonování jsou nazývány smartphony neboli chytré telefony, zařízení určená především pro multimédia a zábavu, prohlížení online obsahu či drobnou práci nazývané tablety. Kombinací těchto dvou zařízení bylo vytvořeno zařízení zvané phablet, neboli tabletofon. Hlavním znakem těchto zařízení je využití pokročilého operačního systému (dále jen OS), který telefonu poskytuje celou škálu možností. Tou nejzásadnější je možnost vývoje a instalace aplikací rozšiřujících funkce zařízení. V současnosti se můžeme setkat s celou řadou OS, z nichž většina má pouze minoritní tržní podíl. Z hlediska komerčního vývoje aplikací pro tyto operační systémy má smysl hovořit pouze o třech nejrozšířenějších, které jsou popořadě Android, ios a Windows Phone 8. První dva jmenované jsou používány jak na chytrých telefonech, tak na tabletech. Windows Phone 8 je používán pouze na chytrých telefonech, pro tablety je využíván operační systém Windows 8. Cílem této práce je seznámení s principy vývoje aplikací právě pro třetí nejrozšířenější mobilní OS, kterým je Windows Phone 8. Dále práce představí způsob, jakým lze takovou aplikaci portovat na Windows 8 vytvořením odlišeného grafického rozhraní s využitím Portable class libraries a nakonec bude ukázáno, jak lze takto vytvořené 6

aplikace publikovat do aplikačního obchodu Windows Phone Store, respektive Windows Store. Tato diplomová práce seznamuje s přehledem mobilních zařízení, definuje pojem aplikace, představuje jejich rozdělení a charakteristiky, a představuje možnosti vývoje aplikací pro mobilní zařízení. Dále představuje platformy Windows Phone 8 a Windows 8 a jejich charakteristiky vzhledem k vývoji aplikací pro tyto platformy. Na relevantních místech jsou diskutovány podobnosti a rozdíly těchto platforem oproti platformám konkurenčním. Součástí práce je také vytvoření ukázkové aplikace pro operační systém Windows Phone 8 a její portace na Windows 8 pomocí vhodných postupů a nástrojů. Jsou diskutovány možnosti publikace této ukázkové aplikace na aplikační obchody Windows Phone Store a Windows Store. V práci je využito mnoha zkratek, jejichž význam je uveden na konci práce v seznamu zkratek a v textu tedy není dále rozváděn. Vzhledem k faktu, že v textu jsou popisovány moderní technologie, je v práci využito především aktuálních online zdrojů. 7

2 Mobilní zařízení Za mobilní zařízení lze obecně chápat přístroj, který lze pohodlně přenášet a používat kdekoliv v terénu bez nutnosti složité montáže či zapojení. Musí tedy mít kompaktní rozměry pro snadné přenášení. K ovládání takových přístrojů je nejčastěji využito dotykového displeje. Mezi nejpoužívanější mobilní zařízení patří smartphone, tablet, phablet a řada hybridních zařízení, jako například notebook s dotykovým displejem. 2.1 Smartphone Smartphone, neboli chytrý telefon, je označení pro mobilní telefon s operačním systémem, jež poskytuje mnoho funkcí nad rámec schopností běžného mobilu především díky možnosti instalovat aplikace [1]. Maximální velikost displeje chytrého telefonu je 5 palců. Současně nejrozšířenější operační systémy v chytrých telefonech jsou Android, ios a Windows Phone [2]. Celosvětový tržní podíl těchto operačních systémů je znázorněn na obrázku 2.1. Procentuální podíl mobilních operačních systémů za 3. kvartál roku 2013 1,0% 0,2% 4,1% 13,4% Android ios Windows Phone BlackBerry Ostatní 81,3% Obrázek 2.1 Graf celosvětového tržního podílu mobilních OS 8

Chytré telefony původně sloužily pro potřeby manažerů, případně počítačovým nadšencům nebo IT technikům. Masové šíření chytrých telefonů mezi běžné uživatele začalo vydáním prvního Apple iphone v roce 2007. Prodeje chytrých telefonů od té doby rostly a v prvním kvartále roku 2013 jejich prodeje poprvé překonaly prodeje klasických mobilních telefonů v počtu prodaných kusů [3]. Růst počtu prodaných chytrých telefonů během posledních tří let je patrný z obrázku 2.2, kde je vidět také tržní podíl jednotlivých výrobců chytrých telefonů [4]. Mezi největší producenty chytrých telefonů tedy patří společnosti Samsung a Apple. Tržní podíly dalších výrobců jsou navzájem srovnatelné. Obrázek 2.2 Vývoj prodeje chytrých telefonů dle jednotlivých výrobců [4] 9

2.2 Tablet Tablet původně sloužil jako periferie k osobnímu počítači sloužící především grafikům k digitalizaci pohybu rukou s perem. Dnes je tablet vnímán širokou veřejností jako samostatné mobilní zařízení s integrovaným dotykovým displejem a operačním systémem. V porovnání s chytrým telefonem najdeme několik zásadních odlišností. Zatímco chytrý telefon je stále primárně zaměřen na poskytování telekomunikačních služeb (což je patrné i z jeho názvu), tablety mnohdy nemají ani instalován GSM modul. Rozdílná je také základní poloha zařízení, kdy v případě tabletu se jedná o polohu na šířku, tzv. landscape režim, v případě chytrého telefonu mluvíme o poloze na výšku neboli portrait. Tablety mívají velikost displeje od 7 palců výš. Maximální rozměr displeje není stanoven. Dosud největší běžně prodejný tablet představila společnosti Panasonic. Její Toughpad má displej o úhlopříčce 20 palců s rozlišením 4K (3840 x 2560) [5]. Tablety jsou tedy oproti chytrým telefonům, především díky velikosti displeje, vhodné více na práci, prohlížení webu a multimédia. Nejrozšířenějšími operačními systémy pro tablety jsou Android, ios a Windows 8. O oblíbenosti tabletů mezi širokou veřejností svědčí především neustále stoupající prodeje, které dle analytické společnosti Canalys překonají v prodejích stolní počítače v průběhu roku 2014 [6]. 2.3 Phablet Phablet je jakýsi kompromis mezi chytrým telefonem a tabletem. Jedná se o přístroj s displejem o velikost 5 až 7 palců kombinující výhody obou zařízení. Svou velikostí se více hodí na práci a multimédia, podobně jako tablet, ale zároveň obsahují také GSM modul pro poskytování hlasových služeb. Tato zařízení jsou populární především v Asii, kde jsou jejich prodeje větší než prodeje tabletů či notebooků [7]. 10

Slovo phablet vzniklo spojením slov phone a tablet a je již oficiálně zařazeno do slovníku Oxford Dictionary [8]. V České republice se můžeme setkat také s přeloženým názvem tabletofon. Phablety používají stejné operační systémy jako chytré telefony, pouze s mírně upraveným uživatelským rozhraním. Není tedy nutné se jimi dále v práci zabývat. 2.4 Hybridní zařízení Na trhu je také velké množství hybridních zařízení v podobě notebooků s dotykovým displejem. Tato zařízení nelze vzhledem k jejich konstrukci řadit mezi tablety. Výkonem a použitým operačním systémem mají blíže ke klasickým stolním počítačům či notebookům. Většina těchto zařízení využívá operační systém Microsoft Windows 8, případně některý z konkurenčních Unixových operačních systémů, který je však shodný s tablety a není tedy nutné se jimi v práci dále zabývat. 11

3 Aplikace Aplikace v kontextu chytrých zařízení znamená instalovatelný software sloužící k rozšíření funkčnosti mobilního zařízení. Aplikací existuje celá řada. Přibližný počet aplikací nabízených v jednotlivých aplikačních obchodech pro nejrozšířenější mobilní platformy je uveden v následující tabulce: platforma aplikační obchod počet aplikací platnost Android Play Store více než 1 000 000 24. 7. 2013 ios App Store více než 1 000 000 22. 11. 2013 Windows Phone Windows Phone Store více než 190 000 20. 11. 2013 Windows 8 Windows Store více než 137 500 16. 12. 2013 Tabulka 3.1 Počet dostupných aplikací v aplikačních obchodech [9] [10] [11] [12] 3.1 Typy aplikací Žádný zdroj neuvádí rozdělení aplikací pro mobilní zařízení dle jejich charakteristik. Často využívané dělení aplikací je dle jejich druhu, jak bude diskutováno v kapitole 4. Z tohoto důvodu je v této práci navrženo vlastní dělení. Každý typ aplikace dle tohoto rozdělení má jiné požadavky na systémové prostředky jako dostupný hardware, případně konektivita nebo návaznost na specifické softwarové vybavení. Rozdělení dle charakteristik aplikací tedy budiž graficky náročné aplikace, aplikace s vysokou mírou integrace do systému, aplikace náročné na síťové připojení a aplikace informačního charakteru. 3.1.1 Graficky náročné aplikace Grafický náročné aplikace využívají ve větší míře grafický procesor (GPU) zařízení pro zpracování a zobrazení výstupu. Mezi graficky náročné aplikace řadíme především hry, kterým nepostačuje základní uživatelské rozhraní použitého zařízení. Dále lze do této kategorie zařadit aplikace zpracovávající větší množství vektorové grafiky, například různé prohlížeče mapových podkladů, případně navigační software. 12

V neposlední řadě zde řadíme také aplikace sloužící k tvorbě a editaci multimediálního obsahu pořízeného například vestavěným fotoaparátem, staženého z internetu nebo získaného jinou cestou. Typickými představiteli jsou aplikace na úpravu pořízených fotografií přidáním např. rámečku kolem obrázku, nebo přidáním nějakého grafického filtru např. převedení barevného obrázku do odstínu šedi. Můžeme se také setkat s digitální softwarovou střižnou umožňující editovat videonahrávky. 3.1.2 Aplikace s vysokou mírou integrace do systému Mnohé aplikace vyžadují ve zvýšené míře přístup k nejrůznějším systémovým prostředkům a to jak hardwarového charakteru, tak i softwarového. Mezí hardwarové prostředky patří především periferie zařízení, senzory a snímače, které lze již dnes považovat za standard. Často instalované senzory a snímače v chytrých telefonech a tabletech: Fotoaparát prakticky všechna chytrá zařízení již dnes obsahují minimálně jeden fotoaparát pro pořizování fotografií a videonahrávek. U levných low-end zařízení se setkáme pouze se základním snímačem s nízkým rozlišením a nepříliš vysokou kvalitou. U mid-end a high-end modelů se kromě primárního fotoaparátu umístěného na zadní straně přístroje setkáme také s přídavným, zpravidla horším fotoaparátem na přední straně zařízení sloužící primárně k pořizování autoportrétů, případně jsou využity při videohovorech, ať už přes GSM síť, či VoIP klienta. GPS přijímač dříve jsme se mohli s vestavěným přijímačem GPS signálu setkat jen velmi zřídka a bylo tedy nutné využít např. externího příjimače propojeného s chytrým telefonem pomocí technologie Bluetooth či sériového portu. Dnes už je tento přijímač standardně zabudován i do mnohých low-end zařízení. Moderní GPS moduly dokáží zpracovat nejen signál systému GPS, ale také signál systému Glonass. Tím je zajištěn jejich bezproblémový provoz kdekoliv na zeměkouli. Gyroskop, akcelerometr, magnetometr další snímače sloužící k určení polohy a náklonu zařízení, v případně magnetometru určení orientace vůči magnetickým pólům (magnetometr = elektronický kompas). V mnohých 13

zařízeních je gyroskop nahrazen dvojicí akcelerometrů, ze kterých je následně rotace zařízení softwarově dopočítávána. Kromě snímačů a senzorů vyžadují aplikace přístup také k softwarovým prostředkům zařízení. Mezi ně patří zejména: telefonní seznam, úložiště multimediálního obsahu obrázků a hudby, textové zprávy, historie hovorů a další. 3.1.3 Aplikace náročné na síťové připojení Mobilní datová síť je neustále vylepšována a rozšiřována, aby bylo možné využít připojení k internetu kdekoliv v terénu bez dostupnosti pevného internetového připojení. Některé aplikace ke svému běhu vyžadují neustálé připojení k internetu a proto je dostupnost mobilních dat velice důležitá. Jedná se zejména o různé komunikační kanály, ať už IM resp. VoIP klienti, či sociální sítě. Dále do této kategorie patří online hry, zpravodajské aplikace a další, které načítají veškerý svůj obsah online. V neposlední řadě zde patří aplikace přenášející multimediální obsah jako například online rádia či přehrávače videí z Youtube a jiných zdrojů. Zde je míra potřeby připojení k internetu zcela zjevná. 3.1.4 Aplikace informačního charakteru Setkáme se také s množstvím aplikací, které nevyžadují žádné, nebo pouze minimum systémových prostředků. Jedná se o například o uživatelské příručky či čtečky elektronických knih, které zobrazují především text, případně jednoduchou nenáročnou grafiku. 3.2 Charakteristiky aplikací V závislosti na typu aplikace lze diskutovat rozdílné potřeby a požadavky aplikací. Zatímco aplikace informačního charakteru jsou poměrně lehce přenositelné na libovolnou platformu, graficky náročné aplikace vyžadující nativní přístup 14

ke grafickým knihovnám, které daná platforma nabízí (DirectX, OpenGL, ) jsou již na platformě silně závislé, a jejich přenositelnost je velice nákladná. Aplikace vyžadující stálé internetové připojení bývají velice náchylné k výpadkům sítě. Při vývoji aplikace musí tedy vývojář zohlednit nestabilitu mobilního připojení a adekvátně uzpůsobit chování aplikace v případě výpadku sítě. Aplikace mohou také být přímo závislé na konkrétním hardwaru, ať už celém zařízení, nebo některé z jeho komponent. Například nelze provozovat aplikaci spravující historii hovorů na tabletu, který není osazen GSM modulem a neumožňuje tedy hlasovou komunikaci prostřednictvím GSM sítě. Může také nastat situace, kdy aplikace vyžaduje vyšší rozlišení obrazovky, než dané zařízení nabízí. Většina vývojářů se snaží cílit své aplikace na co největší počet zařízení, bez nutnosti rozsáhlých změn. To jednak umožňují platformy, které mají shodný operační systém na chytrých telefonech i na tabletech (Android, ios), ale také lze využít nástrojů, které poskytují aplikaci mezivrstvu, která ji zbaví závislosti na konkrétní platformě. Více o tomto tématu pojednává následující kapitola. 15

4 Možnosti implementace aplikací Velkou výhodou při implementaci aplikací pro mobilní zařízení je fakt, že není nutné se omezovat pouze na určitou technologii, případně programovací jazyk. Všechny dominantní mobilní platformy nabízí kromě nativních aplikací, které jsou vždy specifické pro danou platformu, podporu HTML5 + JS, která je definována a interpretována na všech zařízeních stejně. 4.1 Nativní aplikace Nativní aplikace jsou vždy implementovány pro konkrétní platformu a k jejich vývoji jsou využívány primární programovací jazyky a nástroje určené tvůrcem dané platformy. V případě platformy Android se jedná o programovací jazyk Java s využitím Android SDK [13], v případě ios hovoříme o Objective-C, případně Object Pascal s využitím ios SDK [14]. Pro platformy Windows Phone 8 a Windows 8 jsou nativní aplikace vyvíjeny v programovacím jazyce C++, C#, případně VB.NET s využitím Windows Phone SDK [15], respektive Windows SDK [16]. Shrnutí nativních vývojových nástrojů je uvedeno v tabulce 4.1. Android Platforma Programovací jazyk Vývojové prostředí Java (části kódu mohou být v C nebo C++) Eclipse, IntelliJ IDEA, NetBeans ios Objective-C, Object Pascal Xcode, AppCode, Embarcadero Windows Phone 8 C#, Visual Basic, C++ Visual Studio, Visual Studio Express Windows 8 C#, Visual Basic, C++ Visual Studio, Visual Studio Express Tabulka 4.1 Shrnutí vývojových nástrojů pro nativní aplikace pro jednotlivé mobilní OS 4.1.1 Výhody a nevýhody Výhody nativní aplikace jsou především v rychlosti, kdy odpadá nutnost emulace či překladu programových instrukcí speciální vrstvou mezi aplikací a jádrem operačního 16

systému. Díky tomu mají nativní aplikace k dispozici vyšší výkon, zejména v oblasti grafiky a paralelních výpočtů prováděných na GPU zařízení. Další nespornou výhodou jsou možnosti využití systémových prostředků. Aplikace postavené na systémové nástavbě mají přístup pouze k těm prostředkům, které daná nástavba umožňuje. Navíc může být vývojovou politikou stanoveno, že přístup k určitému hardwaru, či zdrojům mohou mít pouze nativní aplikace. Toto platí především pro využití grafických prostředků zařízení. V neposlední řadě je také nutno zmínit, že při programování nativní aplikace odpadá nutnost hledat vhodné vývojové nástroje a jejich možnosti, protože ty nejvhodnější jsou vždy stanoveny tvůrcem dané platformy. Největší nevýhodou nativních aplikaci je právě jejich závislost na dané platformě. Jejich přenos na platformu jinou je netriviální záležitostí a je potřeba velkou část zdrojových kódů přepsat. Spolu s tím souvisí také vyšší požadavky na kvalifikaci vývojářů. Důsledkem jsou větší náklady na vývoj nativních aplikací. 4.1.2 Vhodnost použití Jak už bylo zmíněno, nativní aplikace má k dispozici řádově vyšší výkon zařízení a rozsáhlejší přístup k prostředkům a senzorům. Jsou tedy vhodné pro aplikace náročné na grafiku, jako jsou hry, digitální střižny, editory fotografií apod. Dále jsou vhodné pro aplikace vyžadující vysokou míru integrace do systému a přístup k jeho zdrojům. 4.2 In-Browser aplikace Velká část dostupných aplikací je tvořena v tzv. in-browser režimu, což znamená, že aplikace využívá vestavěného internetového prohlížeče pro zobrazení veškerého svého obsahu. Takové aplikace jsou psány pomocí HTML5 + JavaScriptu. Jedná se o nejrozšířenější způsob vytváření multiplatformních aplikací. Jelikož HTML5 je striktně definováno konsorciem W3C [17], je jeho interpretace na různých platformách stejná. 17

4.2.1 Výhody a nevýhody Hlavní výhoda in-browser aplikace je zřejmá. Celá je vytvořená pro všechny platformy stejně s jediným rozdílem, kterým je komponenta internetového prohlížeče. Ten plní funkci middleware mezi aplikací a operačním systémem. Výhodou vyplývající z možností multiplatformního vývoje je především nižší nákladnost vývoje v porovnání s nativními aplikacemi. Klesají nároky na kvalifikaci programátorů a tím také náklady s tím spojené. Nevýhodou takového řešení je nižší možnost integrace a přístupu k systémovým prostředkům, než je tomu v případě aplikací nativních. 4.2.2 Vhodnost použití Metoda in-browser aplikace je velice vhodná pro nenáročné aplikace, které zobrazují spíše textové informace. Vzhledem ke způsobu implementace zde platí, že to, co může obsahovat běžná webová stránka, může obsahovat také in-browser aplikace plus má navíc možnost přístupu k některým senzorům v mobilním zařízení, například GPS lokátoru a základní možnosti integrace do systému. Z výše uvedeného je patrné, že tato metoda není vhodná pro graficky náročné aplikace a své využití nachází především u aplikací informačního charakteru. 4.2.3 Standardy Jak už bylo zmíněno, pro programování in-browser aplikací se používá jazyk HTML5 s využitím JavaScriptu. Jazyk HTML5 je plně podporován všemi moderními prohlížeči napříč mobilními platformami. Přehled prohlížečů plně podporujících HTML5 je uveden v následující tabulce: Prohlížeč Safari ios Android Browser Internet Explorer Platforma ios Android Windows Phone Windows 8.x Minimální verze prohlížeče 3.2 1.5 9 10 Tabulka 4.2 Shrnutí webových prohlížečů s plnou podporou HTML5 v mobilních OS 18

Pro výměnu dat při využití online obsahu aplikace se nejčastěji využívá datový formát JSON [18]. Jeho výhodou je, že je to obecný formát zpracovatelný prakticky libovolným programovacím jazykem. Oproti datovému formátu XML, který je rovněž hojně využíván, má tu výhodu, že obsahuje jen malé procento znaků navíc oproti přenášeným datům. Je tedy méně náročný na datový přenos, což je zejména při použití nestabilních mobilních dat výhodné. 4.3 Kompromisní řešení Další alternativou v možnostech vývoje mobilních aplikací je podobně jako u in-browser aplikací využití nějaké middleware vrstvy mezi aplikací a systémem. Nejedná se ale o vestavěný webový prohlížeč ale o nástavbu třetí strany, která poskytuje vlastní SDK pro vývoj aplikace. Velká část zdrojového kódu je tedy stejná pro všechny platformy, pouze se tvoří více uživatelských rozhraní pro různé operační systémy, aby byly dodrženy design guidelines dané platformy. 4.3.1 Výhody a nevýhody Toto řešení vývoje aplikací má podobné výhody jako in-browser aplikace, spočívající ve snížení nákladů na vývoj použitím sdíleného kódu napříč platformami. Ve většině případů poskytuje dostatečný výkon i pro náročnější aplikace včetně možností integrace do systému. Jeví se tedy jako ideální volba způsobu vývoje multiplatformní aplikace. Nevýhodou je opět nutnost hledání a instalace vhodného middleware a vývojářských nástrojů. Některé tyto nástroje mají svá vlastní vývojová prostředí, případně se dají nainstalovat jako plug-in do již existujících vývojových prostředí jako Visual Studio, Eclipse či NetBeans. Příkladem takového nástroje budiž Xamarin [19], Marmalade [20] či PhoneGap [21]. 19

5 Platforma Windows Phone 8 a Windows 8 Na rozdíl od dvou dominantních hráčů na trhu mobilních zařízení, společností Google a Apple, které používají své operační systémy Android (Google), respektive ios (Apple) v chytrých telefonech i tabletech, poskytuje společnost Microsoft pro každý z těchto segmentů mobilních zařízení jiný operační systém. Pro chytré telefony a tabletofony se jedná o operační systém Windows Phone 8, pro tablety, stolní počítače, notebooky a hybridní zařízení je využit operační systém Windows 8. Oba tyto systémy jsou založeny na stejném jádru (Kernel base), a to Windows NT. 5.1 Windows Phone 8 Windows Phone je operační systém určen pro chytré telefony a tabletofony. V kontextu této práce bude vždy diskutována aktuálně nejnovější verze 8, pokud nebude explicitně uvedeno jinak. Podporovány jsou displeje o různých velikostech, v současné době od 3.8 do 6. Pro běh Windows Phone 8 jsou stanoveny minimální hardwarové požadavky. Telefon musí mít: Kapacitní dotykový displej systém je založen na ovládání dotyky a gesty. Některá gesta vyžadují multitouch (současný dotyk na více místech displeje) a proto je vyžadován displej kapacitní, který je na rozdíl od starší rezistivní technologie schopen rozpoznat více dotyků najednou. Pro Windows Phone je stanoven minimální počet simultánních dotyků, které displej musí umět zpracovat, na čtyři. Alespoň 2-jádrový procesor jelikož Windows Phone 8 poskytuje plný multitasking, vyžaduje ke svému běhu alespoň dvě výpočetní jádra procesoru, založeného na architektuře ARM. Použitím jádra Windows NT je zajištěna teoretická podpora až 64-jádrových procesorů. Alespoň 512 MB RAM pro plynulý běh systému s WVGA (800x480) rozlišením je nutné alespoň 512 MB RAM, pro vyšší rozlišení je již požadována velikost operační paměti 1024 MB. 20

Alespoň 4 GB vnitřní paměti samotný systém po instalaci zabírá cca 2GB, pro aplikace a uživatelská data je tedy potřeba minimálně další 2 GB paměti. Fotoaparát vždy musí být přítomen fotoaparát minimálně s VGA (640x480) rozlišením na zadní straně přístroje. Přední snímač je volitelný. Povinné senzory GPS přijímač, akcelerometr, světelný senzor (ambient light sensor) a senzor přiblížení (proximity sensor). Magnetometr a gyroskop jsou volitelnými senzory. Hardwarová tlačítka na každém Windows Phone telefonu se musí nacházet minimálně 7 tlačítek. Zapínací tlačítko, spoušť fotoaparátu a volba hlasitosti musí být přítomny v podobě fyzických tlačítek. Tlačítko Start, Zpět a Hledání mohou být řešeny jako dotyková tlačítka. GPU s podporou DirectX Windows Phone 8 poskytuje nativní přístup ke knihovně DirectX a aplikace mohou využívat hardwarové akcelerace Direct3D. Ze seznamu minimálních hardwarových požadavků plyne, že vývojář aplikace pro Windows Phone má jistotu, že uvedené senzory a další hardwarové vybavení mu budou vždy k dispozici. Dominantním producentem chytrých telefonů s operačním systémem Windows Phone je společnost Nokia která dle reklamní společnosti AdDuplex zaujímá 90% trhu s telefony běžícími na platformě Windows Phone [22]. Dalšími výrobci jsou HTC, Samsung a Huawei, které představily jen velmi málo modelů svých chytrých telefonů se systémem Windows Phone 8 a soustředí se na konkurenční platformy. 5.1.1 Poskytované funkce Operační systém Windows Phone poskytuje mimo běžných funkcí mobilního telefonu, jako je telefonování, psaní a správa SMS či správa kontaktů také další funkce, které se již dají považovat za standard. Pro správu a synchronizaci e-mailů, kalendářů a kontaktů poslouží plná integrace s korporátním řešením Microsoft Exchange, kterou využijí nejen firemní zákazníci. Pro uživatele, kteří nepoužívají Exchange je připravena plná integrace služeb 21

Outlook.com (dříve Hotmail) rovněž od Microsoftu, případně služeb Gmail společnosti Google. Specifickou funkčností systému Windows Phone 8 je nativní podpora sociálních sítí Facebook, Twitter, MySpace a dalších. Integrace spočívá především v aktualizaci kontaktních informací, možnosti číst statusy jednotlivých kontaktů či sdílet vlastní, možnost prohlížet veškerá fotoalba svých kontaktů, apod. Pokud některým uživatelům nevystačí interní paměť telefonu, mají v systému zajištěnu plnou podporu cloudového úložiště SkyDrive. Funkce systému lze rozšířit pomocí aplikací třetích stran. Pojem aplikace je definován v kapitole 3. 5.1.2 Historie verzí Ačkoliv může číslování působit zmatečně, první verzí operačního systému Windows Phone byla verze 7. Ta byla poprvé představena na Světovém mobilním kongresu (World Mobile Congress) v Barceloně 15. února 2010 a vydána necelých devět měsíců poté, v listopadu 2010. Systém byl vydán jako nástupce úspěšné platformy Windows Mobile. Běžel na stejné jádru jako jeho předchůdce Windows CE, ale neexistovala žádná zpětná kompatibilita aplikací mezi těmito dvěma systémy. Systém se postupně dočkal řady aktualizací, z nichž podstatné byly aktualizace na verzi 7.5 (Mango) a později 7.8 (Tango). Kvůli rozdílenému jádru a potřebnému hardwaru nebylo možné žádné zařízení s Windows Phone 7 aktualizovat na verzi 8. Jejím vydáním tak došlo v podstatě k restartu platformy, což dle internetových diskuzí vzbudilo velkou vlnu nevole. Tržní podíl Windows Phone 7 klesá ve prospěch osmé verze. V současné době zaujímá již jen necelých 25 % trhu se zařízeními využívajících Windows Phone [22]. 5.2 Windows 8 a Windows 8 RT Windows 8 je přímým následníkem populárního operačního systému pro stolní počítače Windows 7. Zásadní změnou oproti předchůdci je kompletní nahrazení 22

standardní nabídky Start novou celoobrazovkovou nabídkou s využitím Modern UI, viz kapitola 5.3. Tento koncept je zaměřen především na ovládání pomocí dotykového panelu, ale samozřejmě podporuje také standardní myš. Windows 8 je vydáváno ve dvou verzích, a to Windows 8 Pro a Windows 8 RT. Zatímco Windows 8 Pro je určen pro procesory s architekturou x86 (resp. x64), Windows RT je určena pro architekturu ARM [23] používanou především v tabletech, a to především z důvodu úspory energie při zachování dostatečného výpočetního výkonu. Windows 8 Pro stále obsahují klasické desktopové rozhraní známé ze starších verzí tohoto systému a ve většině případů jsou s aplikacemi vyvinutými pro tyto starší verze kompatibilní. Na rozdíl od Windows 8 RT však umožňují neomezenou instalaci aplikací ze kteréhokoliv zdroje. U Windows RT je možnost instalace pouze schválených aplikací a her ze Store, podobně jako je tomu u Windows Phone. Windows 8 tvoří jakýsi pomyslný přechodový můstek mezi standardním desktopovým uživatelským rozhraním optimalizovaným k ovládání myší a moderním rozhraním optimalizovaným pro ovládání pomocí dotykového panelu. Tato verze systému Windows patrně ukazuje směr, kterým se vývoj operačních systémů Windows dále bude ubírat. Princip vývoje aplikací pro oba systémy (Windows 8 Pro i Windows 8 RT) je shodný, proto není dále v práci tento rozdíl zohledňován. 5.3 Modern UI Windows Phone a Windows 8 nabízí zcela nové grafické rozhraní Modern UI známé také pod starším označením Metro UI, které muselo být nahrazeno z důvodu porušení ochranné známky [24]. Modern UI je grafické rozhraní zaměřené především na jednoduchost, přehlednost a obsah. Speciálně pro toto uživatelské rozhraní navrhla společnost Microsoft vlastní moderní bezpatkový font Segoe. Primárním prvkem Modern UI je systém aktivních dlaždic na hlavní ploše, které slouží nejen jako zástupce pro aplikace, ale mohou také obsahovat proměnlivé, pravidelně 23

aktualizované informace a mohou být na hlavní obrazovce libovolně rozmístěny. Ve Windows Phone 7 existovala pouze jediná velikost dlaždice (některé systémové aplikace umožňovaly použití další velikosti), osmá verze již umožňuje vývojářům libovolně implementovat tři velikosti živých dlaždic (tato funkce byla v aktualizaci 7.8 (Tango) přidána také do Windows Phone 7), každou s jiným obsahem. Rozdíl v možnostech hlavní obrazovky mezi oběma verzemi systému Windows Phone je viditelný na obrázku 5.1. Obrázek 5.1 Hlavní pracovní plocha systémů Windows Phone 7 (vlevo) a Windows Phone 8 (vpravo) Microsoft přinesl v Modern UI další novinku, grafický prvek zvaný Hub. Plní funkci jakéhosi rozcestníku v aplikaci. Pro zobrazení je využito tzv. Panorama režimu, který zobrazuje kontinuální plochu s jednotným pozadím a nadpisem, přičemž každá poskytuje samostatný obsah. Princip Panorama režimu je patrný na obrázku 5.2. Vedle režimu Panorama můžeme využít dalšího prvku zvaného Pivot. Ten na rozdíl od režimu Panorama nesdílí nadpis, ani pozadí mezi jednotlivými stránkami. Jak je patrné z obrázku 5.3, v záhlaví prvku lze ale vidět nadpisy dalších stránek dostupných po provedení gesta tahu prstem od pravé strany displeje vlevo. 24

Obrázek 5.2 Panorama režim [25] Obrázek 5.3 prvek Pivot [25] Poprvé bylo toto grafické rozhraní představeno u Windows Phone 7, později vznikla jeho přepracovaná obdoba také pro Windows 8. Pro Windows 8 byly grafické prvky Modern UI přepracovány, protože jednak je primární polohou displeje režim Landscape, a také systém Windows 8 pracuje na zařízeních s displeji o větších úhlopříčkách, než je tomu u chytrých telefonů se systémem Windows Phone. 25

Na první pohled viditelnou změnou je tedy posun dlaždic, které je u Windows Phone směrem dolů, ale u Windows 8 do strany. K dispozici jsou 3 velikosti dlaždic (v systémové aktualizaci na verzi 8.1 rozšířeny o velikost čtvrtou) schopny zobrazit mnohem více informací, než je tomu v případě Windows Phone. Obrázek 5.4 Hlavní pracovní plocha systému Windows 8 [26] Prvky Panorama a Pivot jsou ve Windows 8 nahrazeny jednotným zobrazovacím prvkem zvaným Canvas. Ten zobrazuje neomezeně širokou kontinuální plochu s veškerým obsahem. Tímto způsobem je implementována také hlavní nabídka Start. 5.4 Windows Store, Windows Phone Store Aplikační obchod, neboli Store je oficiální globální zdroj aplikací a her pro zařízení s Windows 8 či Windows Phone. Vzhledem k tomu, že se jedná o dva odlišné operační systémy, jsou i tyto obchody oddělené. Konkurenční platformy Android a ios mají své aplikační obchody sjednoceny a stejnou aplikaci lze tedy instalovat jak na chytrý telefon, tak na tablet. Windows Phone Store, respektive Windows Store obsahují pouze prověřené a schválené aplikace, které odpovídají pravidlům a požadavkům stanoveným Microsoftem. Publikovat aplikace zde mohou pouze registrovaní vývojáři. Podobnou 26

politiku aplikuje na svůj aplikační obchod výrobce operačního systému ios Apple. Nejrozšířenější mobilní operační systém Android vyvíjený společností Google má aplikační obchod zcela otevřený všem vývojářům, bez implicitní kontroly aplikací provozovatelem. To bohužel dává prostor k šíření nejrůznějším škodlivým aplikacím a virům k šíření oficiální cestou. Donedávna museli mít tvůrci aplikací registrován vývojářský účet zvlášť pro Windows Store a zvlášť pro Windows Phone Store. Každá z těchto registrací vyžadovala úhradu ročního vývojářského poplatku. Dne 6. 11. 2013 oznámil Microsoft sjednocení vývojářských účtu pro oba tyto obchody [27] což je prvním krokem k plánovanému sjednocení Windows Store a Windows Phone Store do jednoho celku [28]. Tím Microsoft eliminuje velkou nevýhodu v podobě dvou obchodů oproti konkurenčním platformám a rozšiřuje základnu vývojářů aplikací pro své mobilní platformy. 27

6 Charakteristika platforem vzhledem k vývoji aplikací Systémy Windows 8 a Windows Phone 8 jsou postaveny na stejném jádru - Windows NT. Vývojářská politika stanovená Microsoftem a uzavřenost vlastního systému neumožňuje přístup ke zdrojovým souborům systému, čímž brání v jakékoliv modifikaci samotného jádra. Podobně je tomu i u operačního systému ios. Operační systém Android je založen na open-source unixovém jádře a jakýkoliv vývojář může libovolně provádět modifikace i v samotném jádru systému. To na jednu stranu otevírá široké spektrum možností vlastních úprav systému (výrobci chytrých telefonů hojně využíváno), na druhou stranu ale představuje bezpečnostní riziko. Pro vývoj aplikací na obou diskutovaných platformách je k dispozici řada nástrojů a možností. Jejich přehled je uveden v tabulce 6.1 [29]. Pro srovnání byla do tabulky přidána také předchozí generace operačního systému Windows Phone, verze 7. Windows Phone 7 Windows Phone 8 Windows 8 Rozlišení obrazovky (v px) 800x480 800x480 1366x768 (minimum full) 1280x720 1280x768 1920x1080* Preferovaná orientace Portrait Portrait Landscape Programovací jazyky C#, Visual Basic, F# C#, Visual Basic C# C++/C# 1024x768 (minimum filled) 320x768 (minimum snapped) C++/C# HTML5 + js HTML5 + js HTML5 + js + WinJS API.NET.NET.NET XNA XNA** DirectX WinRT DirectX WinRT * Podpora FullHD rozlišení (1920x1080) byla přidána až v systémové aktualizaci GDR3 ** XNA Framework je ve Windows Phone 8 podporován pouze pro účely zpětné kompatibility aplikací určených pro starší verzi systému. Nelze vytvořit novou XNA aplikaci cílenou na Windows Phone 8. Tabulka 6.1 Srovnání vývojářských nástrojů platforem Windows Phone 7, Windows Phone 8 a Windows 8 [29] 28

6.1 Grafické rozhraní Základním problémem při vyvíjení aplikace pro různé platformy je zobrazení uživatelského rozhraní na různých displejích s různým rozlišením a orientací. Výchozí zobrazení na chytrém telefonu ve Windows Phone je na výšku tzv. Portait režim. Na tabletech a noteboocích je výchozí zobrazení na šířku tzv. Landscape režim. Windows Phone podporuje rozlišení obrazovky s poměrem stran 15:9, vycházející z předchozí generace Windows Phone 7 (800x480 a 1280x720 pixelů) a 16:9 (1280x768 a 1920x1080 pixelů). Všechny aplikace na platformě Windows Phone jsou vždy spuštěny v celoobrazovkovém režimu, proto není nutné zabývat se vzhledem aplikace při jiném poměru stran. Podrobné specifikace včetně galerie aplikačních designů najdeme ve vývojářské příručce Windows Phone Dev Center na MSDN [30]. Naproti tomu Windows 8 poskytuje možnosti multitaskingu, kdy aplikaci lze spustit nejen v celoobrazovkovém režimu, ale také lze poskládat více aplikací vedle sebe najednou. V tomto režimu lze aplikace skládat pouze vedle sebe, odděleny vertikálně. Z tohoto důvodu je stanovena minimální výška aplikace na 768 pixelů. Šířka je velmi variabilní. Původně ve Windows 8 mohly aplikace zabírat buď celou plochu displeje, nebo jeho čtvrtinu, respektive tři čtvrtiny. Od aktualizace Windows 8.1 je už možné aplikaci libovolně roztáhnout. Zde už záleží na vývojářově píli a fantazii, zda vytvoří responsivní design. Detailní pravidla pro vytváření uživatelského rozhraní aplikací pro Windows 8 se dočteme v oficiálních guidelines [31]. Uživatelské rozhraní Modern UI (viz kapitola 5.3) výborně škáluje a proto je velice dobře použitelné i na diametrálně rozdílných rozlišeních (800x480 vs. 1920x1080 obrazových bodů) s minimálním dopadem na vzhled aplikace. Pro co největší univerzálnost je vhodné vyvinout aplikaci pro nejnižší možné rozlišení, které následně při použití většího rozlišení systém automaticky přetransformuje. Pokud bychom však navrhli uživatelské rozhraní pro použití vyššího rozlišení, na nižším již aplikaci nelze použít. Samozřejmě optimálním řešením je navrhnout vzhled aplikace pro různá rozlišení, což ale zbytečně zvyšuje náklady na vývoj. 29

Uživatelské rozhraní nativních aplikací pro Windows 8 i Windows Phone 8 je psáno pomocí deklarativního značkovacího jazyka XAML [32], který je používán napříč všemi technologiemi zahrnutými ve WPF. Jedna se o rozšíření jazyka XML a poskytuje nástroje k popisu veškerých ovládacích prvků, které se v těchto systémech využívají. Podrobněji se jazyku XAML věnuje kapitola 7.6. Další možností je samozřejmě vytvořit in-browser aplikaci a grafické rozhraní definovat pomocí HTML5 + CSS. Tyto nástroje však již neposkytují standardní ovládací prvky systému, ale pouze ty, které podporuje jazyk HTML5. 6.2 API Jak už bylo řečeno, systémy Windows Phone 8 a Windows 8 jsou uzavřené a možnosti integrace aplikací se systémem jsou omezeny pouze na veřejná API systémem poskytovaná. Tento přístup pomáhá udržet vysokou bezpečnost aplikací a stabilitu jádra systému. K tomuto kroku se Microsoft pravděpodobně rozhodl po zkušenostech s předchozí generací mobilního systému Windows Mobile, který umožňoval (stejně jako dnes Android) zásah do systémových souborů, čehož hojně využívali jednotliví výrobci mobilních zařízení k implementaci různých grafických nástaveb, což v řadě případů vedlo k nestabilitě systému a problémům s výkonem. 6.2.1 Windows Phone 8 Celé Windows Phone API sestává ze tří základních bloků, které jsou znázorněny na obrázku 6.1. Jsou jimi Windows Phone.NET API, Windows Phone Runtime API a blok nativních rozhraní Win32, COM a dalších. Windows Phone.NET API.NET Framework [33] je soubor technologií a knihoven poskytující pokročilé vývojové nástroje napříč všemi vývojovými technologiemi vytvořenými společností Microsoft. Windows Phone.NET API je podmnožinou kompletního.net frameworku využívající především jmenné prostory System a Microsoft.Phone. Kompletní.NET API dokumentace je k dispozici na Windows Phone Dev Center [34]. 30

Windows Phone Runtime API Obrázek 6.1 Základní rozdělení Windows Phone API [35] Windows Phone Runtime, který ačkoliv je napsán v C++, umožňuje projekci veškerých tříd také do C# nebo VB.NET [36]. To umožňuje vývojářům využití některých dříve napsaných knihoven v libovolném z výše uvedených programovacích jazyků a jejich využití v jazyce jiném. Windows Runtime a Windows Phone Runtime jsou podobná, z části se také překrývají. Tento překryv je znázorněn na obrázku 6.2. Oblast označená číslicí 1 představuje část Windows Runtime, která není v systému Windows Phone podporována. Přibližně 33% Windows Runtime je společná také s Windows Phone Runtime [36], na obrázku s číslem 2. I ve sdílené části Runtime se můžeme setkat s jistými odlišnostmi, které jsou vždy zdokumentované. Do Windows Phone Runtime byly přidány také další funkce specifické pro chytré telefony, jako služby spojené s VoIP a další, na obrázku označené číslem 3. Tato část zaujímá necelých 20% celého Windows Phone Runtime. Kompletní dokumentace k Windows Phone Runtime API je k dispozici na Windows Phone Dev Center [37]. 31

Win32, COM a další Obrázek 6.2 Prolnutí Windows Runtime a Windows Phone Runtime [35] Poslední součástí celého Windows Phone API jsou systémová API jako Win32, COM, Direct3D a další poskytující nízkoúrovňový (low-level) přístup k systémovým knihovnám a prostředkům jako je grafický procesor, řadič zvuku, kamera, řadič sítě a další. Seznam všech dalších podporovaných Win32 a COM API je k dispozici na Windows Phone Dev Center [38]. 6.2.2 Windows 8 API pro Windows 8 je postaveno jinak, než je tomu v případě Windows Phone 8. Aplikace běží v prostředí Windows Runtime (WinRT), který poskytuje sandbox [39] pro běh aplikací využívajících Modern UI. Vývojářům poskytuje širokou škálu 32

možností ve využití programovacího jazyka. Lze zvolit jeden z programovacích jazyků.net (C#, VB.NET, F#), C++, případně JavaScript. Architektura WinRT, patrná z obrázku 6.3, byla představena členem vývojového týmu Windows Runtime na konferenci Windows BUILD [40]. Za zmínku stojí speciální vrstva označená červeně Language projection, která slouží k již zmíněné projekci knihoven a nástrojů napříč různými programovacími jazyky. Kompletní dokumentace k celému Windows Runtime a přidruženým API je k dispozici na Windows Dev Center [41]. Obrázek 6.3 Architektura WinRT [40] 33

7 Implementace aplikací pro Windows Phone 8 a Windows 8 7.1 Architektura Obecným doporučením při vývoji jakékoliv aplikace je oddělení jednotlivých vrstev aplikace a jejich vzájemná komunikace. Jedním z často používaných návrhových vzorů je MVC (Model-View-Controller). Pro vývoj aplikací pro mobilní zařízení byl samotným Microsoftem vyvinut návrhový vzor MVVM (Model-View-ViewModel), který je na architektuře MVC založen. Samozřejmě není nutné architekturu MVVM použít, jedná se pouze o doporučení pro udržení vysoké kvality a přehlednosti zdrojového kódu. 7.1.1 Model-View-ViewModel MVVM je návrhový vzor založený na principu oddělení aplikační logiky a uživatelského rozhraní. Jeho cílem je redukce množství kódu a zjednodušení úprav. Předlohou této architektuře je MVC. Je založena na konceptu čistoty kódu, který závisí na množství code-behind kódu. Čistý návrh neobsahuje žádný code-behind a mezi View a ViewModelem neexistují žádné přímé reference veškerou komunikaci zajišťuje technologie Data Binding. [42] Jednotlivé vrstvy jsou názorně popsány v knize [42] na straně 81. Ve volném překladu se jedná o: Model Model je, stejně jako v MVC, reprezentace dat získaných z persistentního úložiště (např. databáze). V MVVM je model zodpovědný za notifikace ViewModelu o změnách v datech. 34

View View reprezentuje, stejně jako u MVC, všechny prvky, které jsou součástí uživatelského rozhraní aplikace. Zpracovává uživatelský vstup a předává jej přímo ViewModelu. ViewModel VIewModel je vrstvou mezi View a Modelem a zajišťuje transformaci a přenos dat z Modelu k View a přenos uživatelských vstupů a gest z View k modelu. Výhodou MVVM při použití v multiplatformní aplikaci je možnost sdílet ViewModel mezi více platformně závislými View jeho umístěním do Portable Class Library (viz kapitola 7.1.2). [43] Tento přístup je naznačen na obrázku 7.1. Obrázek 7.1 Schéma MVVM architektury [43] V aplikacích, kterými se zabývá tato diplomová práce, nachází návrhový vzor MVVM uplatnění především díky použití několika technik: Data binding, Command handling, Event routing. Podrobněji se těmto technikám věnuje kapitola 7.6. 35

7.1.2 Portable class libraries Portable class library slouží ke znovupoužití stejného kódu pro multiplatformní aplikace. V případě této diplomové práce se jedná o Windows Phone 8 a Windows 8. Využití však mají také u dalších technologií v rámci Microsoft WPF (SilverLight, Xbox) o kterých tato práce nepojednává. Vzhledem k odlišnostem jednotlivých diskutovaných platforem v přístupu k síťovým prostředkům nebo fyzickému úložišti, nelze vždy aplikační logiku umístit do Portable class library, protože ta je kompilována nezávisle na cílové platformě a je dále používána jako již zkompilovaná knihovna. Řešením je abstrakce kódu, kdy je v rámci Portable class library vytvořeno rozhraní, jehož konkrétní implementace je pro každou platformu zvlášť tak, jak je naznačeno na obrázku 7.2. [29] Obrázek 7.2 Schéma multiplatformní aplikace s využitím Portable class libraries [29] 7.2 Vývojové nástroje Pro vývoj aplikací pro Windows Phone 8 a Windows 8 je zpravidla využito vývojového prostředí Microsoft Visual Studio. Pro studenty je poskytováno zcela 36

zdarma v rámci programu DreamSpark [44]. Pro studenty participujících fakult je navíc k dispozici předplatné MSDN Academic Alliance, kde jsou mimo Visual Studio zdarma ke stažení také operační systémy a další produkty společnosti Microsoft. V základní instalaci nejsou k dispozici nástroje pro vývoj aplikací na diskutované platformy, proto je potřeba doinstalovat doplňky Windows Phone SDK [15] a Windows SDK [16]. Pro vytváření uživatelského rozhraní lze použít buď samotné Visual Studio, které poskytuje základní nástroje a podporu jazyka XAML (více viz kapitola 7.6), v němž je GUI pro tyto platformy vyvíjeno, nebo lze využít samostatného nástroje Expression Blend, který byl vyvinut speciálně pro návrh a vytváření grafické podoby aplikace bez nutnosti znalostí jazyka XAML. V dalších kapitolách bude využito právě Microsoft Visual Studio jako primární vývojový nástroj. Samozřejmě lze využít i jiných nástrojů či textových editorů, ale jejich použití je výrazně méně pohodlné a lze předpokládat, že většina vývojářů Visual Studio použije. 7.3 Typy projektů Po nainstalování Windows Phone SDK a Windows SDK se v průvodci přidáním nového projektu ve Visual Studiu objeví dvě nové skupiny projektů. Skupina Windows Phone nabízí několik výchozích šablon viditelných na obrázku 7.3. V kontextu této diplomové práce je vhodné zmínit následující projekty: Windows Phone App představuje prázdný projekt pro Windows Phone aplikaci bez jakékoliv připravené struktury. Windows Phone Panorama App a Windows Phone Pivot App jsou připravené šablony aplikací s využitím prvků Panorama respektive Pivot a základní MVVM strukturou, včetně testovacích dat. Windows Phone HTML5 App představuje projekt pro in-browser aplikaci. Portable class library je nespustitelnou přenosnou knihovnou pro sdílení kódu mezi různými projekty. 37

Obrázek 7.3 Šablony aplikací ve Visual Studiu ve skupině Windows Phone V případě skupiny projektů Windows Store (označení pro Windows 8 aplikace) je nabídka omezenější, jak lze vidět na obrázku 7.4. Tato skupina obsahuje pouze základní šablony projektů. Další šablony lze doinstalovat pomocí SDK třetích stran. Vybrané typy projektů: Blank App (XAML) představuje prázdný projekt pro Windows 8 aplikaci. Hub App (XAML), Grid App (XAML), Split App (XAML) jsou aplikace využívající prvek Canvas s předpřipraveným rozložením vnořených grafických prvků. Portable Class Library představuje stejnou přenositelnou knihovnu jako v případě Portable Class Library ve skupině Windows Phone. 38

Obrázek 7.4 Šablony aplikací ve Visual Studiu ve skupině Windows Store 7.4 Typická struktura projektu V kontextu této diplomové práce je diskutována aplikace využívající MVVM architekturu a Portable Class Library pro sdílení kódu mezi platformami Windows Phone 8 a Windows 8. Taková aplikace tedy typicky sestává minimálně ze tří samostatných projektů: Portable Class Library, Windows Phone app a Windows 8 app, jak je ukázáno na obrázku 7.5. Roli Portable Class Library zde zastává projekt MyApp.Portable obsahující sdílené View a ViewModely. Projekty MyApp.W8 a MyApp.WP8 jsou spustitelné projekty s View a platformně specifickým kódem pro Windows 8 respektive Windows Phone 8. Oba projekty, MyApp.W8 a MyApp.WP8, jsou napojeny (referencují) na projekt MyApp.Portable, což oběma umožňuje využití sdíleného zdrojového kódu. 39

Obrázek 7.5 Typická struktura aplikace pro Windows Phone 8 a Windows 8 v prostředí Visual Studio 7.4.1 Soubor aplikačního manifestu Každý spustitelný projekt obsahuje manifest soubor, který obsahuje obecná nastavení aplikace, její lokalizaci a přístupy k systémovým prostředkům. Jedná se o XML soubor, který lze ve Visual Studiu pomocí jednoduchého uživatelského rozhraní editovat. 40

Windows Phone 8 V případě aplikace pro Windows Phone 8 se jedná o soubor WMAppManifest.xml umístěný v adresáři Properties. Obsahuje čtyři základní části: Aplikační rozhraní, možnosti integrace, hardwarové požadavky a nastavení distribučního balíku. [45] Aplikační rozhraní Sekce aplikační rozhraní umožňuje zadat název a popis aplikace, stanovit výchozí View (.xaml soubor), zvolit ikonu aplikace a vybrat cílová rozlišení displeje, která budou aplikací podporována. Dále zde lze zvolit typ živé dlaždice. Na výběr je ze tří typů: [46] Flip umožňuje zadat dva obrázky, které se v daném časovém intervalu střídají s efektem převrácení, Cycle lze definovat až 9 obrázků, které budou postupně na dlaždici rotovat, Iconic umožňuje zobrazení jednoduché grafiky bez dalšího vizuálního efektu. Možnosti integrace V možnostech integrace má vývojář na výběr prvky systému, ke kterým požaduje přístup. Vždy by měly být vybrány pouze ty prvky, které jsou skutečně k běhu aplikace potřeba. Požadování nepotřebných komponent může vést k neschválení aplikace při publikaci (viz kapitola 7.7.1). Mezi tyto komponenty patří například přístup k fotoaparátu, přístup ke geografické poloze, přístup ke kontaktům nebo přístup k síťovému připojení. Hardwarové požadavky Některé low-end modely telefonů se systémem Windows Phone 8 nemusí být vybaveny některými senzory a snímači. Pokud vývojář v sekci hardwarové požadavky zaškrtne některý z uvedených senzorů, nebude možné aplikaci nainstalovat na zařízení, jež není daným senzorem vybaveno. Nastavení distribučního balíku Poslední sekce aplikačního manifestu obsahuje informace potřebné především pro zobrazení v aplikačním obchodě Windows Phone Store. Jedná se o autora a vydavatele 41

aplikace, její verzi a jednoznačnou identifikaci a podporované jazyky aplikačního obchodu, kde bude aplikace publikována. Windows 8 Aplikace pro Windows 8 mají bohatší nastavení pomocí souboru manifestu. Ten se nachází v kořenové složce projektu s názvem Package.appxmanifest. Je rozdělen na 6 základních částí: Aplikační rozhraní, vizuální doplňky, možnosti integrace, deklarace, URL s obsahem a nastavení distribučního balíku. [47] Aplikační rozhraní Aplikační rozhraní umožňuje kromě nastavení názvu a popisu aplikace také výchozí jazykovou mutaci a výchozí View (.xaml soubor), který se má použít při spuštění aplikace. Dále zde můžeme stanovit, pro které polohy displeje je aplikace uzpůsobena, jaká je minimální šířka aplikace (pro potřeby běhu více aplikací současně) a možnosti využití aplikačních notifikací. Vizuální doplňky Sekce vizuální doplňky spravuje veškeré obrázky mimo aplikaci jako jsou obrázky na živých dlaždicích pro hlavní nabídku pro všechny dostupné velikosti dlaždic, logo aplikace pro zobrazení ve Windows Store, logo aplikace zobrazené v přehledu aplikací systému Windows 8 a obrázek zobrazený při načítání aplikace Splash screen. Možnosti integrace V možnostech integrace volí vývojář, podobně jako v případě Windows Phone aplikace, požadované systémové prostředky. Jelikož zařízení s Windows 8 nejsou vybavena jiným senzorem, než GPS snímačem, nejsou tyto senzory vůbec nabídnuty. Deklarace Sekce deklarace poskytuje možnost určení jiných, než výchozích aplikací pro obsluhu některých systémových událostí jako dialogová okna pro načtení či uložení souboru, nastavení kamery, vyhledávač, apod. 42

URL s obsahem Každá aplikace může využít vestavěného webového prohlížeče pro zobrazení vzdáleného obsahu. Pokud je adresa tohoto odkazu uvedena v této sekci, získá přístup k systémové schránce a geografické poloze. Nastavení distribučního balíku V nastavení distribučního balíku lze aplikaci pojmenovat a zadat její verzi. Navíc lze aplikaci digitálně podepsat certifikátem. 7.5 Životní cyklus aplikace Životním cyklem aplikace se rozumí stavy aplikace, kterých může během svého běhu nabýt. Při změně stavu je vždy volána v aplikaci příslušná událost, která umožňuje vývojáři přizpůsobit chování aplikace při přechodu mezi těmito stavy. Životní cykly aplikací pro Windows Phone 8 a Windows 8 se liší především z důvodu různých požadavků ze stran uživatelů a také různých možností daných platforem. 7.5.1 Windows Phone 8 Aplikace v operačním systému Windows Phone 8 může nabýt čtyř základních stavů a vyvolat čtyři události. Schéma životního cyklu aplikace pro Windows Phone 8 je znázorněno na obrázku 7.6. Základním stavem aplikace je stav Not running (na obrázku 7.6 není vyobrazen) neboli neběžící. Aplikace v tomto stavu není vůbec načtena v paměti. Při spuštění aplikace je volána událost Application_Launching, ve které je vhodné načítat aplikační data z persistentního úložiště. Tím aplikace přejde do stavu Running, neboli běžící. Při ukončení aplikace je ještě před vypnutím volána událost Application_Closing, která poskytuje vývojáři prostor k uložení dat do persistentního úložiště. Poté dojde k úplnému odstranění aplikace z paměti a její přechod do stavu Not running. [48] [49] Jelikož platforma Windows Phone umožňuje běh pouze jediné aplikace v popředí, z důvodu úspory baterie a správě paměti, je potřeba, aby vývojář ošetřil také další stavy, ve kterých se může aplikace ocitnout. Pokud aplikace běží v popředí a dojde ke spuštění jiné aplikace, je zavolána událost Application_Deactivated a aplikace 43

přejde do stavu Dormant, neboli spící. Do tohoto stavu může aplikaci uvést také vnější vliv, jako je příchozí telefonní hovor, případně automatické zamknutí obrazovky. Ve stavu Dormant jsou zastavena všechna výpočetní vlákna vyhrazena pro aplikaci, ale celá aplikace i její stav jsou nadále drženy v operační paměti. Při obnovení je obnoven stav aplikace ve chvíli, kdy přešla do spícího stavu. Obrázek 7.6 Životní cyklus Windows Phone aplikace [49] Pokud je v systému spuštěna aplikace vyžadující větší množství operační paměti, než je aktuálně dostupné, převede automaticky operační systém nejstarší aplikaci do stavu Tombstoned, neboli pohřbena. V tomto stavu na rozdíl od stavu Dormant je aplikace uvolněna z operační paměti a je uložena pouze stránka, na které se aplikace nacházela. Při obnovení je aplikace načtena znovu do operační paměti a spuštěna na uložené stránce, ale její stav je potřeba znovu načíst. K tomu slouží událost Application_Activated, která je volána při obnovení z obou stavů. Když je aplikace ve stavu Tombstoned nebo Dormant, není žádná záruka, že bude někdy obnovena do stavu Running. Může být kdykoliv operačním systémem ukončena převedena do stavu Not Running bez zavolání jakékoliv události. Je tedy 44

vhodné využít událostí Application_Deactivated a Application_Activated pro uložení, respektive obnovení stavu, pokud je to vzhledem k charakteru aplikace žádoucí. [48] [49] 7.5.2 Windows 8 Životní cyklus Windows 8 aplikace, znázorněný na obrázku 7.7, neobsahuje na rozdíl od Windows Phone aplikace stavy Dormant a Tombstoned, které jsou nahrazeny stavem Suspended. Přechody mezi stavy jsou podobně jako v případě aplikace pro Windows Phone 8 provázeny voláním specifických událostí. Přechod aplikace ze stavu NotRunning do stavu Running je doprovázen voláním události Activated. Během načítání aplikace je implicitně zobrazena Splash screen. Obrázek 7.7 Životní cyklus Windows 8 aplikace [50] Přechod aplikace do pozadí vyvolá událost Suspending. Obslužná procedura této události by měla uložit stav aplikace a uvolnit veškeré alokované prostředky. Pokud není tato procedura během 5 minut dokončena, operační systém automaticky aplikaci ukončí a smaže z paměti, čímž prostředky uvolní. Stejně jako v případě Windows Phone 8 jsou aplikace drženy v paměti, dokud má systém dostatek prostředků. V případě nedostatku operační paměti jsou aplikace automaticky ukončovány. V případě, že dojde k obnovení aplikace ze stavu Suspended, je volána událost Resuming a aplikace přejde zpět do stavu Running. [50] 45