Sledujte nás na YouTube

Vyvíjíme aplikace pro Windows Phone: Jak začít a co budeme potřebovat?

Přáli jste si někdy nahlédnout pod pokličku vývoje her a aplikací pro operační systém Windows Phone 7? Tento článek by měl být prvním z krátké série o vývoji aplikací pro novou mobilní platformu Microsoftu. Půjde vlastně rozcestník pro začínající programátory, kteří by zde měli nalézt odpovědi na základní otázky a informace o tom, s jakými omezeními je ze strany operačního systému nutné počítat. V dalších dílech se podrobněji podíváme na funkce tlačítka Zpět a samozřejmě i na neustále omílaný multitasking.

Platforma Windows Phone 7 byla oficiálně uvedena na trh v říjnu 2010. Programátoři získali přístup k vývojovým verzím nástrojů už o několik měsíců dříve, aby mohli začít včas pracovat na svých aplikacích. Před pár dny se pro ně otevřela možnost odesílání výtvorů ke schválení do oficiálního Marketplace. Česká republika se zatím na seznamu neobjevila, takže se to našich vývojářů ještě netýká, ale snad se to v nejbližší době změní. Každý už ale může bez problémů začít vymýšlet svoji budoucí převratnou aplikaci nebo hru, aby se mohl svést na první velké vlně zájmu, jakmile to jen bude možné. Systém Windows Phone 7 je od základů zcela nový a na starší verze nebere žádný ohled. Na první pohled to vypadá, že vše, co bylo známé z předchozích verzí Windows Mobile, zde bylo zapomenuto; okna vypadají jinak a odlišný je také způsob ovládání. Podobné je to i z programátorského pohledu, zmizela možnost nativního vývoje v jazyce C++, i pro C# (případně Visual Basic.NET) se styl vytváření aplikací změnil. Byl to velký krok dopředu a jistým způsobem dost bolestivý (staré aplikace tu přestaly fungovat). Microsoft už ale neměl moc jiných možností, než vše zkusit poskládat jinak.

I když první verze systému třeba ještě nemají všechny funkce (například často zmiňované kopírovat a vložit), posun je zde velký, především pro vývojáře. Programování je teď jednodušší, není už takový problém s výkonem zařízení. Běžná aplikace jde napsat velmi rychle, ke stažení je také mnoho vzorových příkladů. Lze využívat ukládání dat v internetovém cloudu na platformě Windows Azure. Microsoft také dost dbá na to, aby se aplikace chovaly slušně a nemohly nijak nabourávat systém. Uvidíme, jak se to bude vyvíjet dál do budoucna, ale zatím to vypadá velmi slibně.

Jak začít vyvíjet aplikace pro Windows Phone 7?

Vývojář má pro Windows Phone 7 možnost vyvíjet aplikace prostřednictvím Silverlightu, což je moderní platforma pro tvorbu bohatých webových aplikací, a v XNA frameworku, který se používá třeba i pro tvorbu jednodušších Xbox 360 her či aplikací pro přehrávač Zune. Windows Phone 7 telefony se tak staly dalším typem zařízení, pro která se dá programovat těmito známými prostředky. Pokud chcete začít, není nic jednoduššího, než si stáhnout vývojové nástroje a rovnou se pustit do prozkoumávání. Ty jsou k dispozici zdarma (na rozdíl od starších Windows Mobile, pro která byla potřeba placená edice Visual Studia alespoň ve verzi Professional). Obsahují nejen vývojové prostředí Visual Studio Express s nástroji a emulátorem, které pro běžné použití bez problémů stačí, ale i program Microsoft Expression Blend pro tvorbu grafiky. Dají se stáhnout ze stránek App Hub, případně přímo z webu Microsoft Download Center.

Hlavním programem, ve kterém budete vytvářet svoje aplikace, je již zmiňované Visual Studio. Zde si pro začátek můžete zkusit vyvolat okno pro založení nového projektu zvolením File –> New –> Project. Hlavní šablony, které nás budou zajímat, jsou Windows Phone Application v kategorii “Silverlight for Windows Phone” a Windows Phone Game v kategorii “XNA Game Studio 4.0” (viz screenshoty). Pokud dosud Visual Studio nemáte, můžete si zatím spustit jeho stahování a instalaci, bude to chvilku trvat a akorát do té doby stihnete dočíst tento článek :). Ještě, než si ale ukážeme něco ze samotného programování, podíváme se na hlavní specifika a rozdíly obou technologií.

- -

Silverlight a XNA framework: Rozdíly

Silverlight vychází z desktopové technologie Windows Presentation Foundation (WPF). Je známý především jako plugin do internetových prohlížečů. Tam umožňuje běh bohatě vybavených interaktivních aplikací plných animací, vektorové grafiky nebo videa. Často se využívá pro různé reklamní ministránky nebo pro streamování internetové televize. Svým zaměřením je podobný technologii Adobe Flash. Současná verze má zabudovaných několik audio a video kodeků, podporuje vykreslování akcelerované grafickou kartou včetně základního 3D zobrazení. K dispozici je programátorům celá řada ovládacích prvků, jako jsou například tlačítka, šoupátka nebo různé dialogy. Dostupný je pro většinu prohlížečů, na unixových systémech k němu existuje alternativa Moonlight.

Nyní se Silverlight stal také hlavní technologií pro tvorbu běžných aplikací pro Windows Phone 7. Podporuje technologie známé z velkého Silverlightu, jako například IIS Smooth Streaming (kvalita přehrávaného videa se automaticky určí podle rychlosti připojení) nebo Deep Zoom (prohlížení a přibližování velkých obrázků). Také má přístup k hardwarové akceleraci telefonu a jeho různým součástem (akcelerometr, fotoaparát, mikrofon, multitouch displej a další). Je zde podpora pro push notifikace nebo služby založené na zjištění polohy. Lze využít try/buy API pro zjednodušení procesu vytváření trial aplikací.

-

Silverlight se hodí především pro psaní různých utilit nebo aplikací, často napojených na internet. Obvyklé použití bude pro různé programy využívající lokační služby a napojení na mapy, připojující se k různým vzdáleným službám, přehrávající video. Je předpoklad, že v budoucnu bude na telefonech neomezené připojení k internetu čím dál tím běžnější a hodně využívané. Tato platforma by na to měla být dobře připravena. Můžete se ale pustit i do psaní běžných aplikací, nebo jednoduchých her založených na vektorové grafice.

Oproti tomu, XNA je framework určený čistě pro tvorbu 2D a 3D her. Doteď se už pomocí něj dalo programovat pro hudební přehrávače Zune a Zune HD, pro Windows Phone 7 ale byla podpora ještě mnohem více rozšířena. Nyní už lze vytvářet i poměrně výkonné 3D hry, akcelerované grafickým čipem. XNA je nadstavba nad rozhraním DirectX. Hlavní myšlenkou je zjednodušit práci vývojářům a odstínit je od nízkoúrovňových problémů. Není už tedy potřeba psát tak velké množství pomocného opakujícího se kódu, který zajišťuje pouhé načítání obrázků nebo se stará o správné udržování dat v paměti při zakrývání a obnovování okna (jako to bylo potřeba například v DirectX nebo OpenGL).

V XNA je už načítání modelů a textur velmi jednoduché. Jsou zde funkce pro přehrávání hudby, komunikaci po síti nebo pro různé počítání s vektory a maticemi. Máme k dispozici předpřipravenou herní smyčku a metody, ve kterých můžeme načítat a aktualizovat obsah. Programuje se zde opět pomocí řízených (managed) jazyků C# nebo VB.NET. Z toho vyplývají další výhody a specifika. Například je k dispozici automatická správa paměti – Garbage Collector.

-

Pro nezávislé vývojáře a menší herní týmy je XNA ideální technologií, se kterou lze po poměrně krátké době vytvářet zajímavé hry. Je ale potřeba připomenout, že to není nic takového jako například Game Maker, ale ani to není kompletní herní engine. Pro vytvoření většího projektu už je potřeba znát alespoň základy 3D grafiky, dost věcí si také budete muset dopsat. Nelze například přímo pracovat s kamerami, není zaručeno, že se budou optimálně vykreslovat jen viditelné objekty. Takovou abstrakci, stejně tak jako kolize nebo fyziku, si už budete muset naprogramovat sami.

Jinak je to ale moc pěkná technologie, dobře zdokumentovaná, s mnoha články a návody na internetu. Windows Phone 7 se týká XNA od verze 4.0, která se v určitých věcech od předchozích částečně liší. Trochu jinak se chovají State objekty (RenderState byl rozdělen) a k základnímu BasicEffectu přibyly další nové efekty pro spojování dvou bitmap do sebe, zobrazování odlesků a podobně. S tím souvisí, že zatím není možné využívat vlastních shaderů v jazyce HLSL, toho bychom se ale v budoucnu snad měli dočkat. Většina věcí se dá ale udělat i bez nich. Pořád také musíme pamatovat, že tyhle telefony jsou v porovnání s Xboxem 360 nebo PC o dost pomalejší a nemůžeme si tam dovolit úplně všechno (například stíny počítané v reálném čase). Výhodou je, že obě technologie se dají určitým způsobem kombinovat. Například můžete ze Silverlightu využívat služeb Xbox LIVE.

Pusťme se do toho!

Když už tedy máme spuštěné Visual Studio, mohli bychom si prohlédnout, jak toto prostředí vypadá a jak se v něm programuje. Předvedu to na technologii Silverlight. Spíš bych ale chtěl jen naznačit princip, napsat by se o tom dalo mnohem víc. O programování jsou celé knížky, nejde vše vložit do jednoho článku. Na konci ale přiložím seznam odkazů, kam se můžete podívat dál a kde můžete najít další informace.

- 

Při založení nového projektu ve Visual Studiu na nás vykoukne obrázek telefonu a spousta zdrojového kódu (podobně, jako na prvním přiloženém screenshotu). Je třeba zmínit, že v Silverlightu se každé okno aplikace skládá ze dvou částí. Podobně, jako v HTML/CSS, je zde striktně oddělen kód a grafický vzhled. Umožňuje to například dobrou práci v týmech, kdy grafik a programátor mohou pracovat odděleně. Také je jednodušší různé skinování aplikace. Funkční zdrojový kód se píše v jazyce C# (příp. opět ve VB.NET), uživatelské rozhraní se definuje pomocí značkovacího jazyka XAML (čte se “zaml”). To je vlastně XML kód s konkrétními značkami, kde mohou zde být nastavovány barvy, velikosti prvků, ale i animace a různé reakce prvků, například na přejetí myši. Oba zdrojové kódy našeho hlavního okna se nachází v souborech MainPage.xaml a MainPage.xaml.cs.

Ovládací prvky si buď můžeme přímo nadefinovat v XAML kódu, nebo jednodušeji vložit z paletky Toolbox. Můžeme z ní přetáhnout například tlačítko Button a popisek TextBlock, přímo na obrázek telefonu. Vidíme, že nám do XAML kódu přibyly nové řádky. Každému prvku můžeme nastavit základní vlastnosti v paletce Properties, například změnit tlačítku popisek vyplněním položky Content.

- -

Abychom se podívali, jak vypadá vývoj z druhé strany, tedy z pohledu grafika, přepneme se do programu Expression Blend. To uděláme kliknutím pravým tlačítkem v paletce Solution Explorer na položku WindowsPhoneApplication1 a vybereme možnost “Open in Expression Blend…”. Otevře se nám šedočerné okno přímo s naším projektem. Oba programy dokáží běžet zároveň a dá se mezi nimi přepínat. V Expression Blendu se dají naklikat prakticky všechny pokročilé věci týkající se designu, jako například již zmíněné animace. Můžeme si pro jednoduchost zkusit změnit třeba barvu tlačítka, nebo velikost jeho okrajů.

- -

Když se přepneme zpátky do Visual Studia a potvrdíme, že chceme zaktualizovat vzhled, můžeme si zkusit naprogramovat i nějaký kód. Bude to klasický otřepaný příklad „Hello, world!„, který se pro svou jednoduchost hodí do každého úvodního článku. Poklepáním na tlačítko se dostaneme k funkční části zdrojového kódu stránky. Zadáním jména prvku a jeho vlastnosti: textBlock1.Text = „Hello, world!“; nastavíme popisku nový text.

Nyní si budeme chtít naši aplikaci konečně spustit a podívat se, jak dobře funguje. To zařídíme stisknutím kláves Ctrl + F5, nebo zvolením z hlavní nabídky Debug –> Start Without Debugging. Po chvilce se nám spustí emulátor. Můžeme zkusit kliknout na námi definované tlačítko a přesvědčit se, zda funguje. Zavřeme ji kliknutím na tlačítko Zpět (přímo na telefonu), emulátor přitom můžeme nechat dále běžet.

- 

Takto jsme se v krátkosti podívali, jak se pro Windows Phone 7 programuje a příště si povíme další podrobnosti. Na závěr pro vás mám pár tipů a odkazů. Za možnost umisťování aplikací do oficiálního Marketplace se platí prvotní poplatek 99 USD. Pokud jste ale studenti, můžete se přihlásit přes program DreamSpark a neplatíte nic. Máte navíc možnost si stáhnout pro studijní účely plné verze vývojových nástrojů (Visual Studio Professional).

Užitečné odkazy

Kde najdete další informace? Přímo o programování pro Windows Phone 7 v češtině ještě asi žádný kompletní seriál nevyšel, můžu ale doporučit tyto odkazy:
XNA 2.0 ve VB.NET – srozumitelnou formou jsou ukázány základy programování v XNA
MSTV.cz – Microsoft televize pro české vývojáře, můžete si dát filtrovat jen tagy “XNA” nebo “Silverlight”
XAML.cz – články o programování ve WPF a Silverlightu
Poznáváme C# a Microsoft .NET – rozsáhlý seriál o jazyku C#

Materiálů v angličtině je mnoho, doporučil bych například tyto:
APP HUB – hlavní rozcestník pro vývojáře pro WP7, jsou zde materiály ke stažení, články, tutorialy a vzorové příklady (především pro XNA), je zde také poměrně živé fórum
Windows Phone Developers Blog – informace přímo od vývojářů. Blogů existuje několik, pokud chcete programovat v XNA, tak výborný je například blog, který píše Shawn Hargreaves. Klasickým zdrojem informací je MSDN Library (částečně v češtině), o Silverlightu se dají najít informace třeba na jeho oficiálních stránkách. Dobré tutoriály na XNA napsal Riemer Grootjans, také se podílel na dvou výborných knížkách – Beginning XNA 3.0 a Game Programming Recipes.

Pokud byste měli nějaký dotaz, využijte nové sekce v našem fóruProgramování a vývoj. Pomoci by vám také mohla česká MSDN fóra nebo diskuze na serveru vbnet.cz (i když tam nejsou přímo kategorie pro Windows Phone 7, ale zase se zde vyskytuje velké množství vývojářů).

Tomáš Slavíček

20 komentářů

  1. martan1981 (neregistrovaný)

    Dakujem za skvely clanok. Dlhsie rozmyslam na vyvojom aplikacie na nejaku platformu.

  2. uni (neregistrovaný)

    Jestli se jedná o PR ze strany MS, asi bych očekával i takové označení (nic proti PR, ale mělo by být jasno).
    Také bych jako první uvedl podmínky vydání (samozřejmě pro ČR-chuťovka) tak jako dostupnost českého marketu pro české uživatele (další chuťovka). Celkově je to pro nás prozatím poměrně nezajímavé téma…

  3. niky79 (neregistrovaný)

    UNI: hlavne je to nezajimave pro apple fanatiky tveho typu, co?

  4. uni (neregistrovaný)

    Ne, je to pro mě nezajímavé jako pro českého vývojáře/uživatele, kdy WP platforma bude pro nás aktuální možná někdy v průběhu příštího roku, po rozšíření podpory pro náš region (stane-li se tak). A cesta registrací US účtů atd. prostě není adekvátní služba pro běžného uživatele.
    BTW. jsem aktivní uživatel WM a Androidu, udržuji v chodu několik Palm OS/Garnet zařízení a cca se hrabu v S60. Po iOS ani památky;-) Faktem je, že 3 z 4 platforem jsou ukončené… iOS bude muset být zahrnut, pravda. A třeba se stanu i jeho fanouškem:-)

  5. uni: Jak si proboha přišel na to, že je tenhle článek nějaké PR ze strany Microsoftu? Tomáš dostal nápad to sepsat (pro WM programuje už několik let, viz. Hexalines) a myslím, že je to zajímavé téma, tak jaképak PR.

  6. abraxas2 (neregistrovaný)

    Obávám se, že nemá cenu plýtvat energií učit se s WM7. Tenhle OS drakonicky propadne. A nejsem žádný fanatik od konkurence, sám mám HD2 a byl bych první, kdybych si WM koupil. Jenže, to prostě nejde, za tohle fakt nikdo svéprávný a při smyslech nemůže chtít zaplatit… Strašný zklamání.

  7. uni (neregistrovaný)

    Jiří Hrma: zmátla mě úroveň článku, resp. množství energie do něj vložené. Pokud nePR, klobouk dolu. Snad nám to ale nenaznačuje budoucí směr webu, byla by ho škoda:-). Je zde prostor pro „spotřební“ multiplatformní web…

  8. Standa (neregistrovaný)

    Někdo si doma dělá muzeum a někdo tvoří. Tento článek je zrovna pro ty, co tvoří, takže já za něj děkuji a doufám v pokračování.

  9. uni (neregistrovaný)

    To není mé muzeum, ale zařízení u lidí v provozu:-)

  10. janac_marek (neregistrovaný)

    to abraxas2: Nemal by si do sveta púšťať takéto proroctvá založené na vode (teda jedine na vlastnom odpore k danému OS).
    Ja osobne si myslím opak ako ty. Keby to bolo také jasné ako si myslíš, tak by do toho nešli ani výrobcovia HW ani samotný MS.

  11. janac_marek (neregistrovaný)

    to uni: Takéto články sú fajn. Mohlo by sa objaviť aj niečo pre Android.

    A nemyslím, že je to pre ČR a SR vývojára nezaujímavé. Nemôže ešte predávať app, ale môže už testovať. Navyše podpora pre naše trhy prijde podľa mňa rýchlejšie ako to bolo v prípade Androidu, ktorý prišiel nedávno.

  12. uni (neregistrovaný)

    Ano, podpora ze strany MS by mohla přijít dříve než z Google, kde stále ještě ale nepřišla. Budeme-li se bavit o ČR a vývoji placených aplikací. Google se „vzmohl“ na placené app pro nákup. Trvalo mu to oproti Applu asi tak o dva roky déle… (tomu to trvalo asi dva dny).

  13. radospol (neregistrovaný)

    Takyto typ clanku mi na smartmanii dlho chybal. DAkujem autorovi a dufam v pokracovania. Kludne aj pre android atd…

    uni: pises zcesty, paranoja, hladas veci ktore niesu:)))

  14. uni (neregistrovaný)

    radospol: ach jo, mám ti tady doslovně vypsat země, kde je umožněno vydávat placené aplikace (zase tolik jich bohužel není) nebo to prostě vezmeš jako fakt?

  15. radospol (neregistrovaný)

    uni: autor tam pisal,ze pre cz nieje moznost vkladat app,ale pre buducnost sa to moze hodit vediet programovat,alebo mat vytvorene app. Nejde kazemu len o komerciu,ale aj o osobny rozvoj. Preco sa nenaucit a nevytvorit nieco pre wp7 aj ked nemam jak prioritu to vkladat do marketu.
    Ja taketo clanky na smartmanii len vitam. Preco nerozsirovat vedomosti citatelov smartmanie?

    Mozno prave tento clanok niekoho nakopne a od programovania pre wp7 ho to presunie do inych os a zrodia sa skvele app:)

  16. Perfektní článek, děkuji za něj :)

    Dnes jsem se, shodou okolností, na TechEdu 3 hodiny věnoval programování aplikací pro Windows Phone 7 v Labu. Dost pozitivně mě to naladilo, ty nástroje jsou skvělé a zdarma. Myslím, že MS získá spousty vývojářů pro WP7, protože jim nehází klacky pod nohy, ale maximálně pomáhá…

  17. n6600 (neregistrovaný)

    Dakujem velmi pekne za skvely clanok. Uz dlhsi cas sa pohravam s myslienkou programovat pre WP7. Vdaka tool-om od MS je to trivialne :) V ramci hladania dalsich informacii som narazil na tento link http://forum.xda-developers.com/showthread.php?t=711629. Preto sa chcem on podelit a zaujemcov o programovanie snad aj potesit.

  18. Oslik (neregistrovaný)

    @janac_marek No, testovat… může testovat na emulátoru, ale to zdaleka nestačí. Mobil si bez registrace v Marketplace neodemkne a tudíž na mobilu testovat nemůže.

    Mám jeden program v betě a spoustu dalších nápadů, ale musel jsem přibrzdit – škoda času. Bez testování na reálném HW nejde nic dokončit. Navíc dokončením je v případě WP7 právě až publikování v MP.

    Štve mě to, protože Německo, Polsko a Rakousko podporu publikování ve MP mají. Zajímavé je, že MP pro WP7 umožňuje z více zemí publikovat, než kupovat.

  19. Je tu nějaká rada pro ty co vlastní legální win XP a nechtějí krást, kvůli tomu že jim instalace VS Express „Windows 7 or Windows Vista is required“ a nemají peníze na win7 ? Předem díky ;)

  20. articulatio (neregistrovaný)

    Zdravím.. sháníme programátora který by nám napsal aplikaci k našemu software. kontakt na mne 777 205 888 Krátký M.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *