Pregled razvojne platforme za Windows Phone 7- I dio


Članak objavljen na www.itpro.ba Januara 2011. god.

sl1Već smo najavili izlazak Windows Phone 7 novog microsoftovog operativnog sistema za mobilne telefone, koji bi, kako se priča, u oktobru ove godine trebao biti objavljen. Prije svega, Windows Phone 7 se drastično razlikuje od svog prethodnika Windows Mobile 6.5, kako po tehnologiji tako i platformi. Mjenjajući platformu te prelazak na Silverlight i DirectX (XNA), Microsoft nastavlja popularizaciju svoje uspješne strategije koju je počeo razvijati zadnjih nekoliko godina, te svakako želi sto više dati primat deklarativnom načinu razvoja grafičkih iskustava preko svoje XAML tehologije sa tradicionalno dobrim razvojnim alatima Visual Studio 2010 i Expression Blend 4. S druge strane, Microsoft ima za cilj da tehnologiju na kojoj se razvijaju aplikacije unificira i smanji vrijeme učenja i adaptaciju programera, što je definitivno ostvario zadnjim izlascima Visual Studio 2010 i Expression Bland 4, odnosno pojavom WPF, Silverlight te nadolazećeg Windows Phone 7. Danas razvijati aplikacije za Windows Phone 7 nije ništa drugo do razvijati aplikacije u Silverlightu, što za jednu novu platformu poput WP7 je zaista fenomen. Developeri koji su već razvijali aplikacije za Silverlight nemoraju savladavati novu logiku ni arhitekturu, niti učiti nove dizajnerske komponente u Visual Studiu i Expression Blendu, dovoljno je da se upoznaju sa Windows Phone 7 i uputama za razvoj korisničkih iskustava i odmah mogu početi razvoj aplikacija. Zvuči naivno ali i istinito.

Hardwarsko i Softwarska arhitekture Windows Phone 7 uređaja

Prije samog pregleda razvojne platforme pogledajmo, koje hardwerske komponente će vrtiti Windows Phone 7. Svaki ekran telefona imaće 480×800 QVGA ili 320×480 HVGA rezoluciju, sa multitouchom većem od 4 kontaktne tačke. Senzori koji će biti ugrađeni imaće A-GPS, Accelometar, Kompas te flash. Kamera će imati najmanje 5 megapiksela, te tačno 3 hardwarska dugmeta Start, Search i Back. Grafika mora posjedovati DirectX 9 akcelerator, te 256 RAM-a i najmanje 8GB flash memorije. Jedna od najzanimljivijih stvari svakog mobilnog telefona sa Windsows Phone 7 je to da procesor mora biti najmanje ARMv7 Cordex/Scorpion sa 1Gz takta. Zaista se može štošta vrtiti na ovakvoj impresivnoj mašini. Samo 10-tak godina ranije ovakva desktop mašina prestavljala je pravu zvijek na tržištu.

sl2

Kada govorimo o softverskoj arhitekturi Windows Phone 7 uređaja onda prvenstveno moramo govoriti o nekoliko slojeva koji tu athitekturu čine. Gledajući odozdo prema gore vidimo da arhitekturu čine podrška za hardver u obliku raznih drivera, servisa, podrška za mreže, sigurnost, a koje zajedničkim imenom zovemo Kernel. Iznad tog sloja dolazi: Aplikacijski i UI Model, te Cloud integracija. Aplikacijski model obezbjeđuje načine instalacije, pokretanja, te sistem licenciranja i nadogradnje softvera. Dok UI model čini sistem upravljanja sesijama aplikacije, te navigacije među stranicama, preko navigaciskog sistema implementiranog u operativni sistem. Treći i nemanje važan model predstavlja Cloud integracija, kojim se obezbjeđuje povezivanje na razne microsoftove servise: Live, XboxLive i druge, te povezivanje na servise društvenih mreža, lokacijske GPS servise i sl.

Iznad svih navedenih modela nalazi se Aplikacijski runtime zasnovan na mogućnosti iskorištavanja svih resursa, servisa i modela uređaja, a razvijen je na .NET – CLR tehnologiji i posjeduje aplikacijski framework za razvoj kastomiziranih aplikacija.

sl3

Aplikacijaki framework za WP7 može razvijati dvije vrste aplikacija i to:

  1. XNA applikacije – predstavljaju moderne 2D i 3D video igre koje se mogu vrtiti i na Xbox 360, Windows 7 i Zune uređajima.
  2. Silverlight aplikacije – predstavljaju XAML aplikacije bazirane na Silverlight 3 tehnlogiji.

WP7 XNA Aplikacije

sl4

Današnje tršište video igrama zauzima značajno mjesto u ukupnom IT tržištu te stoga je vrlo važno omogućiti razvoj ovih vrsta aplikacija na nadolazećoj platformi. Upravo it tog razloga Microsoft proširuje svoj XNA razvojni framework i na Windows Phone 7. XNA predstavlja enkapsulaciju tehnoloških detalja niskog nivoa u razvoju video igara i koncentrira developera na to kako video igru učinite zabavnijom od toga na koji način implementirati pojedine detalje. Ovim je Microsoft udario temelje unifikaciji razvoja video igara na svojim platformama Xbox 360, Windows i Windows Phone 7.

XNA Framework je dio .NET Frameworka, a čine ga skup alata i biblioteka za brzi razvoj video igara na Windows, Xbox 360 i WP7 platformi. Integrirana razvoijna platforma za XNA objedinjena je kao XNA Game Studio do sada razvijena sa 3 verzije. Naredni XNA Game Studio 4.0 podržavaće razvoj video igara i na WP7 platformi, sadržavaće pojednostavljeni grafički API, nove konfiguracijske efekte, te poboljšani audio efekti. Međutim, još uvijek nema podrške za ostale .NET programske jezike osim C#, što jedin dijlom ograničava ovu platformu. Kako nova verzija Game Studio 4.0 dolazi integrirana u Visual Studio 2010, tako će se i kompletan razvoj video igara moći razvijati na ovom moćnom developerskom alatu.

Osnovni koncepti razvoja XNA video igre

sl5

U cilju pojednostavljenja API-a, te integracije sa Visual Studio 2010, razvoj video igara za ove 3 platforme pojednostavljen je i definisan specifičnim fazama razvoja. Početak razvoja XNA video igre sa Game Studio započinje definisanjem početnog projekta koji je šabloniziran već viđenim Visual Studio šablonima.

U ovoj fazi na raspolaganju nam je 8 predefinisanih šablona s kojim dobijamo početne postavke za razvoj. Pored dosadašnjih šablona za Xbox 360, naredna verzija XNA Game Studio 4.0 sadržavaće i šablone za Windows Phone 7 i to Windows Phone Game i Windows Phone Game Library. Drugi šablon predstavlja projekat koji može dijeliti komponente sa više Windows Phone Game projekata.

U koliko smo odabrali prvi šablon dizajner visual studia formira C# klasu izvedenu iz Game klase, implementirane u XNA biblioteci, što predstavlja prvi korak u implementaciji XNA video igre. Osim implementacije izvedene klase, dizajner je formirao dva projekta unutar Visual Studia. Prvi projekat sadrži Windows Phone 7 implementaciju video igre, dok drugi projekat posjeduje dijeljene resurse (datoteke) koji se koriste u razvoju igre, a mogu se iskorištavati i na drugim platformama: Xbox 360, Windows 7 i Zune.

U drugoj fazi razvoja igre definiše se i pridružuje sadržaj za buduću video igru. Ova faza sastoji se u dodavanju grafičkih, audio i video datoteka. Resursi (datoteke) se dodaju na standardan način, onako kako se to radi u Visual Studiu 2010. Kao što je rečeno, dodavanje sadržaja radi se u posebnom projektu, da bi mogli iste datoteke dijeliti sa druigm platformama, osim Windows Phone 7.

Treća faza razvoja je logička implementacija, koja je je podjeljena u nekoliko globalnih metode preko kojih se implementira cjelokupni proces video igre. Stoga je važno kazati da svaka video igra razvijana sa Game Studio prolazi faze Inicijalizacije, Učitavanja resursa i sadržaja igre preko metode LoadContent.

sl6

Kada se u memoriju učitaju resursi i sadržaj igre preko metoda za iscrtavanje Draw i osvježavanje Update implementirana je dinamika igre. Nakon završetka resursi se oslobađaju iz memorije i završava rad.

XNA Demo za Windows Phone 7

Na vrlo jednostavnom demo primjeru pokazaćemo, kako se implementiraju osnovne komponente XNA video igre. Za ovaj demo potrebno je posjedovati Visual Studio 2010, te Windows Phone 7 Developer Tool Beta, koji se može skinuti sa ovog linka.

sl8

Nakon što pokrenimo Visual Studio 2010, te formiramo novi Windows Phone Game 4.0 Projekat kojeg ćemo nazvati XNASimpleDemo, dizajner nam formira dva solucijska projekta i to: projekat video igre, te Game Content projekat koji sadrži neophone datoteka za video igru, a čine ga razne video, audio, te grafičke datoteke. Ovakva arhitektura obezbjeđuje jednostavan način razvoja iste igre i na drugim platformama Xbox 360 ili Windows 7.

Novoformirani projekat pored ostalog sadrži implementaciju klase Game1 izvedenu iz Microsoft.Xna.Framework.Game. U klasi Game1, dizajner je već formirao nekoliko pomoćni varijabli poput GraphicsDeviceManager varijabla koja upravlja hardwerskim uređajem, te SpriteBatch –pomoćna varijabla za iscrtavanje tekstura direktno na ekran.

Pored postojeći deklarišimo varijablu tipa Texture2D – varijabla koja će sadržavati bitmapu, te varijablu tipa Vector2- vektor s kojim će biti definisan položaj bitmape na ekranu. Nakon što smo deklarisali varijable za upravljanje grafičkom datotekom, sada je potrebno istu učitati u projekat. Desnim klikom na XNASimpleDemoContent izaberimo opciju Add Existing Item, te učitajmo u projekat grafičku datoteku koju želimo prikazati. Kada je datoteka učitana u projekat, potrebno je implementirati metodu LoadContent na način da prvo učitamo datoteku i onda je pozicioniramo u centar ekrana našeg telefona. Iz implemetacije se vidi da se datoteke učitavaju po njihovim asset imenima, upravo zbog portabilnosti sa drugim platformama. Sljedeći listing prikazuje učitavanje datoteke i pozicioniranje na ekranu.

protected override void LoadContent()

{

// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch(GraphicsDevice);

imageTexture = Content.Load("logo");

Viewport viewport = graphics.GraphicsDevice.Viewport;

imageVector = new Vector2((viewport.Width-imageTexture.Width)/2,

(viewport.Height-imageTexture.Height)/2);

}

Nakon definisanja početne pozicije teksture, sada je moguće implementirati logikuvideo igre sa Update i Draw metodama. Implementacija Update metode sastoji se u tome da ažurira poziciju teksture očitavajući tekuću poziciju prsta ili kusora telefona što je prikazano u narednom listingu.

protected override void Update(GameTime gameTime)

{

// Allows the game to exit

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

TouchCollection touchCollection = TouchPanel.GetState();

if (touchCollection.Count > 0)

{

TouchLocation tl = touchCollection[0];

double x = tl.Position.X - (imageVector.X + (imageTexture.Width / 2));

double y = tl.Position.Y - (imageVector.Y + (imageTexture.Height / 2));

double speed = Math.Sqrt(x*x+y*y)/10;

double angle = (float)Math.Atan2(y,x);

imageVector.X += (float)(speed * Math.Cos(angle));

imageVector.Y += (float)(speed * Math.Sin(angle));

}

base.Update(gameTime);

}

Dok Draw metoda iscrtava teksturu na ekranu telefona definisanu pozicijom, brzinom, i uglom. Na taj način dobijamo fade efekat pri pomjeranju teksture.

protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);

spriteBatch.Draw(imageTexture,imageVector,Color.White);

spriteBatch.End();

base.Draw(gameTime);

}

Ako pokrenemo aplikaciju, i ako šetamo mišem (u koliko se radi o emulatoru) ili prsto (u koliko se radi o uređaju) po ekranu, vidimo da se naša tektura kreće za njim. Na ovaj način implementirali smo jednostavnu XNA video igru. Izvorni kod za ovaj demo može se skinuti sa ovog linka.

sl9

Na internetu se već može vidjeti nekoliko igara koje se vrte na WP7, na kojima možemo osjetiti draž igranja na mobilnom uređaju, koji ipak čini se ne predstavlja ni hardwerom ni ergonomijom idealni igraći uređaj. Međutim, WP7 će zasigurno promijeniti ovaj ustaljeni stav.

Advertisement

Introduction to Silverlight Bihac.NET UG Meeting


U četvrtak 10. februara održan je 5. po redu sastanak Bihac.NET UG, koji je za temu imao Šta je Silverlight i kako ga koristiti u razvoju poslovnih aplikacija. Sastanak je prošao u vrlo dobroj atmosferi, kako u samom edukativnom centru gdje se održavao sastanak, tako i virtualno, jer se isti mogao pratiti preko LM streama.

Kako se i iz naslova teme vidi govorilo se o samom upoznavanju sa Silverlightom, XAMLom deklarativnim programskim jezikom za razvoj bogatih korisnickih iskustava, osnovnim kontrolama, RIA servisima te povezivanje Silverlight aplikacije sa SQL bazom podataka i razvoj poslovnih aplikacija. Prezentacija se sastojala od prvih nekoliko slajdova, a veći dio prezentacije činio je demo koji je prezentirao pomenute aspekte.

Prezentacijski slajdovi, kao i demo primjer može se skinuti sa SkyDrive linka. U folderu se nalazi još i NorthWind sql baza u koliko je nemate.

Još je jednom zahvaljujem se svim na interesantnim pitanjima i zanimljivoj diskusiji. Sastanak je od predviđenih 60 minuta trajao skoro 2 sata, u kojem su se postavljala pitanja i diskutovalo i u toku same prezentacije. Snimka prezentacije se može pogledati sa ovog linka.

Uvod u Windows Phone 7


Predgovor

U narednih nekoliko postova biće prezentirana mobilna platforma Windows Phone 7, koja pobuđuje dosta pažnje zadnjih mjeseci. Kako ga opisuju: ovo je do sada najorginalniji mobilni operativni sistem trenutno na tržištu sa potpuno novim pristupom ne samo u odnosu na svoju prethodnu verziju Windows Mobile 6.5, nego i svih ostalih mobilnih OS-ova. U narednim postovima govorićemo o razvojnim platformama, alatima, tipovima aplikacija koje se mogu razvijati na ovom OS-u, te MVM tehnikama programiranja koje sve više postaju popularne u programiranju aplikacija u Silverlight i WPF.

Ovaj članak objavljen je u  www.itpro.ba avgusta 2010 godine.

Uvod

Slika1Windows Phone 7 je naredna verzija microsoftovog operativnog sistema za mobilne telefone koji bi trebao da bude objavljen u oktobru 2010. godine. Nakon višegodišnjeg stalnog pada popularnosti Windows Mobile serija operativnog sistema, Microsoft se ovog puta ozbiljno prihvatio posla i počeo iz početka razvijati novi operativni sistem. Marketinški popraćen od samog početka razvoja operativnog sistema slično kao pri razvoju Windows 7 OS, Microsoft je napokon našao čarobnu formulu uspjeha svog proizvoda. Prema reakcijama koje stižu Windows Phone 7 do sada dobija vrlo visoke ocjene, a sudeći po proizvođačima telefona koji su već poptpisali ugovore sa Microsoftom čini se da će ovaj mobilni operativni sistem pobuditi veliku pažnju krajnjim korisnicima. Prema službenim izvještajima proizvođači telefona koji su već poptisali ugovore da će njihovi budući modeli koristiti neke od verzija Windows Phone 7 su: ASUS, Dell,HTC, LG i Samsung.

GUI u obliku šahovske table sa multitouch mogućnostima

Slika2

Windows Phone 7 u odnosu na ranije verzije Windows mobile 6 serija iz temelja je promijenio svoj korisnički interfejs, te najviše sliči Zune HD uređajima. GUI koji je predstavljen u obliku šahovske table sa samoosvježavajućim sadržajem polja predstavljaju inovativan dizajn. Iako sa dosta fleksibilnim dizajnom Microsoft je odlučio da proizvođači mobilnih telefona poštuju stroga pravila u dizajnu, tako da svaki mobilni uređaj koji vrti Windows Phone 7 mora posjedovati centralno dugme Start za pristup glavnom prozoru, dugme Back vraćanje na prethodni sadržaj , i Search za pretraživanje interneta, kontakata i drugih sadržaja. Prepun multimedijalnim interakcijama pri radu Windows Phone 7 postaće jedinstven mobilni operativni sistem. Pretraživanje interneta moći će se vršiti i preko glasovnih naredbi koje su ugrađenje u Windows Phone Search browser koji vrši pretragu sa Bing pretraživačem. Kako malo koji OS vrti na mobilnim uređajima multimedijalni sadržaj napisan u flashu, Microsoft je na ovaj način u samom startu napravio podršku za svoj Silverlight i XNA. Windows Phone 7 će sadržavati sve komponente koje današnji mobilni operativni sistemi posjeduju: od efektivnih klijenata za socijalne mreže do multitouch interakcije nad mobilnim ekranima što predstavlja veliki napredak u odnosu na prethodne verzije.

Windows Phone 7 u 5 cjelina

Slika3

Inovativni dizajn novog operativnog sistema, pored vizualnog dojma i posebne tehnologije za iscrtavanje teksta na ekranima telefona,predstavljen je u sadržajima šahovskih polja koji se grupišu u posebne sadržajno slične cjeline (hubs). Predefinisane cjeline dijele se na:

People“ – u kojem se nalaze informacije o kontaktima, svim informacijama o socijalnim mrežama na koje je korisnik povezan i sl.

Pictures“ – cjelina koja prikuplja informacije o svim grafičkim datotekama te profilima prijatelja sa socijalnih mreža. Poput prethodnog Hub-a opcijom What’s New moguće je pregledati nedavno objavljene slike kao i prijatelja sa socijalnih mreža facebook i sl, te dijeljenje vlastitih slika na socijalnim mrežama.

Office“ – cjelina prilagođena manipulaciji sa dokumentima na mobilnim telefonima. Za to je zadužen set softwerskog paketa Office Mobile 2010 sa OneNote, Word, Excell i Outlook email klijentom.

Games“ – kako Windows Phone 7 dolazi sa XNA gejmerskom platformom postaje suvišno za reći da će se u novom microsoftovom mobilnom operativnom sistemu nalaziti set novih tehnologija za igrice kako one koje se vrte samo na WP7, tako i one koje se već vrte na Xbox-u, te multiplayer vrste igara.

Music and video“ – je cjelina namijenjena svim oblicima muzike i video distribucije, od kupovine preko interneta do sihronizacije sa jukeboxom Zune.

XNA i Silverlight platforme za razvoj WP7 aplikacija

Pored mnogih korisničkih inovacija Microsoft je za Windows Phone 7 obezbijedio već u CTP fazi razvojni alat pomoću kojeg developeri već mogu razvijati aplikacije koje će se vrtiti na WP7. IDE alat za razvoj WP7 aplikacija je Visual Studio 2010 koji je objavljen u aprilu ove godine, a u trenutku pisanja ovog članka objavljena je i beta verzija alata za Visual Studio 2010 za razvoj WP7 aplikacija. Dvije su platforme razvoja Windows Phone 7 aplikacija, pa tako i dva seta šablona za formiranje početnih projekata WP 7 aplikacija u Visual Studiu 2010 i to: XNA Game Studio 4.0, te Silverlight for Windows Phone.

Slika4

U ovoj fazi Expresson Blend dizajnerski alat za razvoj bogatih korisničkih iskustava potpuno je integriran sa razvojem WP7 aplikacija. Pored toga, MVVM patern od nekih autora je već razvijen i moguće ga je primjenjivati za razvoj WP7 aplikacija, koji sada sa Expression Blend i Visual Studio 2010 čini obezbjeđenu cjelokupnu platformu za razvoj.

slika5

Microsoft je do sada sa Windows Phone 7 otkrio sve karte u svom razvoju operativnog sistema, dok drugi poput Google svoju 3 verziju Android OS još drže skrivenu od oka javnosti. I dok je iOS 4 nedavno objavljena verzija Appleovog mobilnog OS, ne nudi skoro nikakva nova proširenja u odnosu na raniju verziju, i pri kojem još uvijek nema podrške za web sadržaje napisane u Flashu, Microsoft će i pored određenih spekulacija ipak imati ovu podršku.