Professional Documents
Culture Documents
Alkalmazasfejlesztes Windows Phone-Ban
Alkalmazasfejlesztes Windows Phone-Ban
FEJEZET
Alkalmazsfejleszts
Windows Phone-ban
Ez a fejezet a Windows Phone-t mutatja be: tbbek kztt az eszkz hardverjellemzit s a szoftver fejleszteszkzeit. A bevezetst kveten megnzzk,
hogyan lehet egyszer alkalmazsokat ltrehozni s telepteni, majd megismerjk,
hogyan lehet elrni az alkalmazst a Windows Phone Marketplace-en keresztl.
A fejezet receptjei a kvetkez feladatok vgrehajtst mutatjk be:
1.1. A Windows Phone hardvernek ttekintse
1.2. A Windows Phone fejleszteszkzeinek az ttekintse
1.3. s 1.4. Egyszer Windows Phone Silverlight- s XNA-alkalmazs
ltrehozsa
1.5. Egyszer Silverlight- s XNA-keverkalkalmazs ltrehozsa
1.6. s 1.7. A Windows Phone-alkalmazs teleptse az emultoron s
az eszkzn
1.8. A Windows Phone-alkalmazs elhelyezse a Windows Phone
Marketplace-be
1.9. Windows Phone-prbaalkalmazs ltrehozsa
Megolds
A Microsoft az j okostelefonjhoz teljesen j opercis rendszert hozott ltre: a
Windows Phone-t. Ezt az opercis rendszert voltakppen a semmibl rtk, hogy
utolrjk s esetenknt meghaladjk ms opercis rendszerek funkciit.
Egy megbzhat, gyors s nagy teljestmny opercis rendszerhez a Microsoft hardverkvetelmnyeket szabott meg. gy minden Windows Phone-kompatibilis, mr a piacon lv vagy a jvben piacra kerl telefon legalbb minimlis
kzs hardverjellemzkkel kell, hogy rendelkezzen. A fejlesztk szmra ez j
hr, hiszen gy rhatunk kdokat, hogy tudjuk, mit is nyjt az okostelefon.
A Windows Phone-t futtat eszkz a portrtjolsban 480 800 pixeles
kpernyfelbontst nyjt. A jvben a mobilszolgltatk kisebb kpernyj,
320 480 pixeles felbonts okostelefonokat terveznek kibocstani. Ezt szem
eltt tartva, ltrehozhatunk jtkot, vagy megrajzolhatjuk a sprite-jainkat gy,
hogy tudjuk, a jtkunkat ekkora felbonts kpernyn fogjk jtszani vagyis
nem lesz szksg sklzmveletekre, kpernyszveg-adaptcira stb. Mg klaszszikus alkalmazsok esetben sem, amelyek pldul szvegdobozokat s gombokat mutatnak, ez a felbonts ugyanis gazdag interfszek megrajzolshoz hasznosthat.
Minden telefonnak hrom hardvergombja van, rendszerint a kperny aljn
(lsd az 1.1. brt). Ezek a Back gomb, a Start gomb s a Search gomb. A bal
oldali gomb az elz alkalmazsra vezet vissza (ahogyan a Back gomb egy internetbngszben). Radsul, ha a Back gombot egy msodpercig lenyomva tartjuk, a Windows Phone megmutatja azokat az alkalmazsokat, amelyeket jra
lehet kezdeni (lsd bvebben a 2. fejezetben). A kzps gomb bezrja az aktulis alkalmazst, s megmutatja a Start ment, gy a felhasznl msik alkalmazst
2
nyithat meg. A Start gombot lenyomva tartva a Windows Phone hangfelismerjvel kinyerhetnk s hvhatunk nvjegyet, elindthatunk egy alkalmazst, vagy
diktlhatunk SMS zenetet. A jobb oldali gombbal elrhet a kezdkperny,
valamint keresst indthatunk. Egyszer szvegkeresst hajthatunk vgre a Bing
oldalt hasznlva, vagy zeneszm-informcit keresve meghallgathatjuk a zeneszmot a Windows Phone-nal. St a Windows Phone kamerjval informcit nyerhetnk klnfle trgyakrl gy, hogy leolvassuk a vonalkdjukat, vagy gy,
hogy a Windows Phone olvassa a szveget, s a Microsoft Tag szolgltatst
hasznlja.
a felhasznl megnyomja a Back gombot, kdot kell rnunk ahhoz, hogy ugyanaz
a helyzet lljon el, amely a deaktivls eltt fennllt (errl bvebben lsd a 2.
fejezetet).
A Windows Phone-t futtat eszkzkben Soft Input Panel (SIP) engedlyezi,
hogy a felhasznlk a szvegmezkbe szveget rjanak. Hardverbillentyzetet nem
ktelez megadni. Az alkalmazs mindkt esetben ugyangy kap szvegbevitelt.
Ez igaz a billentylenyomsi esemnyekre is. A Windows Phone a SIP-et automatikusan megjelenti, amikor a felhasznlnak szveget kell bevinnie.
Az 1.1. brn a Windows Phone kezdoldala s Metro elnevezs interfsze lthat. A Microsoft-tervezk a felhasznli visszajelzsek alapjn szembetn grafikk helyett a tartalomra s az informcira helyeztk a hangslyt. gy a kpernyt a
metrban vagy a reptren lthat bannerekhez hasonl rszekkel tltttk fel.
Minden ngyzetet s ngyszget live tile-nak hvnak, ezek a csomponthoz (hub)
nyjtanak hozzfrst. Mindegyik live tile vals idben frissl a csompontbl
vett informcival. A csompont egyfajta aggregtor, amely hasonl informcikat csoportost pldul a vilghlrl vagy magrl a telefonrl, tovbb kzssgi hlzatokrl vett csoportfotkat mutat. Az Office pldul tile-szmllt
szolgltat, amely jelzi a bejv e-mailek szmt, amikor j e-mail rkezik. Teht a
csompont helyi (a telefonon lv) s tvoli (a felhben s az interneten lv)
informcik halmazt tartalmazza. A Pictures csompont egyrszt a bels kamerval ksztett, msrszt a kzssgi hlzatokon, pldul a Facebookon lv
kpeket foglalja magban. A Windows Phone 7-es hat csompontot szolgltat:
People
Office
Pictures
Music and Videos
Marketplace
Games
A telefon maximlisan testre szabhat, a live tile-okat eltvolthatjuk, a preferltakat hozzadhatjuk, mozgathatjuk ket stb. A felhasznl kt grafikus tma
kzl vlaszthat: stt vagy vilgos. Ezek klnbz httrsznt adnak (fekete s
fehr), amelyet figyelembe kell venni akkor, amikor ikonokat, gombokat s kpeket rajzolunk egy alkalmazs szmra.
A felhasznl a tbbrints kpernyn keresztl kommuniklhat a Windows
Phone-nal. Az ujjak hasznlatval szmos mozdulat vgrehajthat: koppints,
4
tile-ok mozgatsa, szveg s kpek nagytsa, illetve kicsinytse stb. Minden forgalmaznak, amely Windows Phone-t futtat eszkzket gyrt, minimum ngypont-kapacits tbbrints kpernyt kell nyjtania, gy az rintkpernyn
minimum ngy ujj hasznlhat.
A Windows Phone-t futtat eszkz 256 MB vagy tbb RAM-mal s 8 GB
vagy tbb flashtrolval rendelkezik. A processzor a forgalmaztl fgg, de
legalbb 1 GHz frekvencit kell nyjtania.
Vgl a Windows Phone-t futtat eszkz rzkelket s szolgltatsokat tartalmaz, hogy a felhasznli lmnyt a kvetkez szintre emelje. A legfontosabbak listja a kvetkez:
A-GPS: Ez az rzkel az Assisted Global Positioning System.
Lehetv teszi, hogy a felhasznl kiolvassa loklis pozcijt hoszszsgi s szlessgi koordintk szerint, amelyek a mholdas szolgltatsokbl s a cellaoldali hromszgelsbl kvetkeznek.
Az utbbi kevsb pontos, mivel a telefonhoz legkzelebbi rdihlzatot reprezentlja, m hasznos, ha nincsenek vagy alacsonyak
a mholdas jelek.
Accelerometer: Ez az rzkel lehetv teszi, hogy a programok rzkeljk, mikor mozog a telefon pldul, ha a felhasznl felveszi
az asztalrl, hogy hvst fogadjon, vagy rosszabb esetben, ha kiesik
a kezbl.
Wifi: Ezzel az rzkelvel a telefon az internetkapcsolat elrshez
wifiponthoz tud csatlakozni.
Camera: Ezzel az rzkelvel a felhasznl kpeket s videkat kszthet egy 5 vagy tbb megapixeles fnykpezgppel, vakuval.
Az j Windows Phone modelljeinek frontlis fnykpezgpk van
(ltalban kevsb hatkony), amely videohvsok s videochatek
esetben hasznos.
Office: Ezt a szolgltatst nem nagyon hirdetik, pedig minden telefon rendelkezik a Microsoft Office jl hasznlhat s hatkony
verzijval, a megszokott alkalmazsokkal, ilyen a Word, az Excel,
az Outlook s a PowerPoint. Az Office csompontjt teljes mrtkben integrltk az Office 365-tel, a dokumentumokat pedig
kzvetlenl a SkyDrive felh meghajtjn is lehet trolni.
Location: Ennek a szolgltatsnak ksznheten a felhasznlt lokalizlni lehet, pozcijt a Bing Maps brzolhatja.
Push Notifications: Ez a szolgltats meggtolja, hogy a telefon az internetrl informcit krjen. A telefon vr, amg a rajta kvl es
programoktl rtestst kap, elkerlve az j informci folyamatos
keresst.
Multitasking: A Windows Phone tbbfeladatos programfuttatst
implementl, lehetv tve a fejlesztk szmra a httrbeli folyamatok, a feladattemezs, a httrbeli fjlletlts s a httrbeli zenelejtszs ltrehozst.
A fejlesztk az sszes rzkelt s szolgltatst hasznlhatjk, hogy innovatv
alkalmazsokat hozzanak ltre, s ezeket eladhatjk a Windows Phone
Marketplace-en. Nem kell a hardverklnbsgek miatt aggdniuk (pldul, hogy
egy bizonyos cellamodellnek van-e gyorsulsmrje), mivel minden Windows
Phone ugyanazokkal a minimumfunkcikkal rendelkezik.
1.2. Fejleszteszkzk
Problma
El szeretnnk kezdeni a Windows Phone-ra fejleszteni. Ehhez tudni szeretnnk,
mely eszkzket s nyelveket kell hasznlnunk egy alkalmazs elksztshez.
Megolds
Le kell tltennk a Microsoft Windows Phone Developer Tools-t.
Hogyan mkdik?
Azt mondhatjuk, ha van Windows Mobile fejleszti tapasztalatunk, jobb, ha ezt
elfelejtjk. Ez termszetesen gy nem teljesen igaz. A Windows Phone fejlesztsben, nincs meg az a szabadsg, hogy alacsony szint alkalmazsok ltrehozsra C
vagy C++ nyelvet hasznljunk. A Microsoft csak .NET-tel engedlyezte az alkalmazsok fejlesztst a Windows Phone-ra. Mg ha tallunk is kerlutat pldul
valamilyen kzbens nyelv (IL Intermediate Language) kdjnak a befecskende-
1.2. Fejleszteszkzk
Megolds
Hasznljunk Visual Studio 2010-et (Express, Professional vagy felsbb verzit).
Hasznljuk a Windows Phone Application projektsablonjt.
Hogyan mkdik?
A Visual Studio 2010 megnyitsa utn hozzunk ltre j projektet. A File menbl,
vlasszuk a New Item Project Item lehetsget (vagy nyomjuk le a Ctrl + Shift + N
billentykombincit). Az 1.2. bra mutatja azt a prbeszdablakot, amely a New
Project parancs indtsa utn megjelenik.
A bal oldali Installed Templates-bl vlasszuk a Silverlight for Windows
Phone-t. A Visual Studio 2010 t projektsablont nyjt:
A Windows Phone Application vzkdot hoz ltre ltalnos telefonalkalmazshoz; vezrl vagy ms egyb nincsen hozzadva.
A Windows Phone Databound Application Windows Phone-alkalmazst hoz ltre, lista- s naviglsvezrlket adva hozz.
A Windows Phone Class Library vzkdot hoz ltre Windows
Phone-specifikus kls szerelvnyhez.
A Windows Phone Panorama Application olyan alkalmazst hoz ltre, amely tartalmazza a panormavezrlt (errl bvebben lsd
a 3. fejezet 3.7. receptjt).
A Windows Phone Pivot Application olyan alkalmazst hoz ltre,
amely tartalmazza a Pivot vezrlt (errl bvebben lsd a 3. fejezet 3.7. receptjt).
A Windows Phone Silverlight and XNA Application olyan alkalmazst hoz ltre, amely Silverlight- s XNA-technolgit is hasznl
(errl bvebben lsd az 1.5. receptet).
1.3. bra. A Visual Studio 2010 kri a cl Windows Phone OS verzi kivlasztst
Megjegyzs A Visual Studio 2010 tbbcl funkcit knl, amely a fejlesztnek lehetv teszi rgi Windows Phone 7-es vagy j Windows Phone 7.1-es alkalmazs ltrehozst. Ha olyan alkalmazst fejlesztnk, amely nem hasznl olyan j funkcikat,
mint a hlzatkezels, a live tile-ok stb., vlaszthatjuk a rgebbi Windows Phone OS
7.0-s verzit is, hogy biztostsuk, az alkalmazsunk minden j vagy rgi opercis
rendszerrel felszerelt telefonon fusson.
Vrjunk, amg a Visual Studio 2010 megr minden fjlt s mappt, nhny msodperc mlva a MainPage.xaml megnylik a Visual Studio 2010 integrlt fejlesztsi
krnyezetben (IDE Integrated Development Environment) (lsd az 1.4. brt).
A kd
A projekt kt f fjlt tartalmaz: App.xaml s MainPage.xaml. Kt osztly
jn ltre: az App osztly s a MainPage osztly (lsd az osztlydiagramot az 1.5.
brn). A tbbi fjl erforrs, mint a nyitkperny kp, a httrkp s az alkalmazsikon.
10
11
A gykrcmke a PhoneApplicationPage, ez az az osztly, amelybl az alkalmazsunk szrmazik. A phone: eltag szksges, mivel a Phone ApplicationPage nv a clr-namespace:Microsoft.Phone.Controls; assembly=Microsoft.Phone nvtrben van meghatrozva. Az x:Class attribtum
megllaptja, hogy a MainPage osztly a mgttes kdban van meghatrozva, s
az SimpleSilverlightApplication nvtr tartalmazza. Az els nvtr az
XAML-kdban a f Silverlight-nvtr; az x nvtr minden olyan extra XAMLelem defincijt tartalmazza, amely az elz nvtrben nincs meghatrozva.
A shell, d s mc nvterek Windows Phone-alkalmazs-specifikusak, s jellseket tartalmaznak a parancsfelleti utastsokhoz, a Microsoft Expression Blendhez, tovbb a Visual Studio tervezjnek.
A <phone:PhoneApplicationPage> jells tbbi attribtuma az alkalmazs tjolst, betkszlett s szneit hatrozza meg. rdemes megjegyezni a Windows Phone erforrssztra ltal nyjtott statikus erforrsok hasznlatt (lsd
http://msdn.microsoft.com/enus/library/ff769552(v=vs.92).aspx)
...
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
13
ning) vlaszknt be kell illesztennk a kdunkat (a trlsre val kijellsrl bvebben lsd a 2. fejezetet).
// Code to execute when the application is
// launching (e.g., from Start)
// This code will not execute when the application is
// reactivated
private void Application_Launching(object sender,
LaunchingEventArgs e)
{
}
// Code to execute when the application is activated
// (brought to foreground)
// This code will not execute when the application is
// first launched
private void Application_Activated(object sender,
ActivatedEventArgs e)
{
}
// Code to execute when the application is deactivated
// (sent to background)
// This code will not execute when the application is
// closing
private void Application_Deactivated(object sender,
DeactivatedEventArgs e)
{
}
// Code to execute when the application is closing
// (e.g., user hit Back)
// This code will not execute when the application is
// deactivated
private void Application_Closing(object sender,
ClosingEventArgs e)
{
}
15
public App()
{
...
// Standard Silverlight initialization
InitializeComponent();
// Phone-specific initialization
InitializePhoneApplication();
}
16
17
Hasznlati javaslat
Nyomjuk le a Ctrl + F5 billentykombincit (vagy a menbl vlasszuk a Debug
Start Without Debugging parancsot).
Miutn a Visual Studio 2010 sszelltja a kdot, az alkalmazs elindul. A Visual Studio 2010 elindtja a Windows Phone Emulator alkalmazst (hacsak nem
mdostottuk a clt a kapcsold legrdl listamezbl, a Windows Phone
Emulator az alaprtelmezett), s lthatjuk, hogy az alkalmazsunk az emultorban fut (lsd az 1.6. brt).
Megolds
Hasznljunk Visual Studio 2010-et (Express, Professional vagy felsbb verzit).
Hasznljuk a Windows Phone Game (4.0) projektsablont.
Hogyan mkdik?
Miutn megnyitottuk a Visual Studio 2010-et, nyomjuk le a Ctrl + Shift + N
billentykombincit. Ez megjelenti a New Project prbeszdablakot.
Vlasszuk az XNA Game Studio 4.0 sablont a bal oldali Installed
Templatesbl, majd a Windows Phone Game (4.0) projektsablont (lsd az 1.7.
brt). rjuk az SimpleXNAApplication rtket a projekt Name szvegdobozba, s kattintsunk az OK gombra.
Kattintsunk az OK gombra a Windows Phone OS 7.1 platform kivlasztshoz, s nhny pillanat mlva kt projektnk lesz a megoldsban. Az egyik a
fjlokat tartalmazza a jtk ltrehozshoz, a msik specilisan erforrsokhoz
van, mint a sprite-ok, a kpek s a hangok.
18
A kd
A f fjl a projektben a Game1.cs; ez tartalmazza a kdot jtk ltrehozshoz
a Windows Phone-on, a Game osztlybl szrmaz Game1 osztllyal (lsd az 1.8.
bra sajt osztlydiagramjt). A projektsablon semmi lnyegeset nem csinl azon
kvl, hogy ltrehozza a kdot a kperny CornflowerBlue sznnel val befestshez. De rdemes figyelembe venni az osztlystruktrt s a metdusait ahhoz,
hogy megrtsk, hogyan mkdik az XNA-jtk.
Az osztly konstruktorban GraphicsDeviceManager objektum jn ltre.
Ez az objektum a Windows Phone grafikai eszkzkezeljt brzolja, s tulajdonsgokat tartalmaz a felbonts mdostshoz, a teljes kpernys zemmdba
kapcsolshoz s egyebekhez. 30 filmkocka per msodpercre (fps frames per
second) lltja be a frisstsi filmkocka rtjt, ez azt jelenti, hogy egy msodperc
alatt az Update metdust 30-szor hvja. Vgl, amikor a telefonkperny zrolva van, a kd sprol az akkumultorfogyasztssal, az InactiveSleepTime tulajdonsg egy msodpercre val belltsval.
19
A kvetkez metdus, amelyet az XNA keretrendszer hv, a LoadContent. Ebben a metdusban be kell tltennk azt a tartalmat, amelyet korbban a megoldsban a Content projekthez adtunk hozz. Kpeket, hanganyagokat, sprite-okat,
3D-s modelleket s minden jtkerforrsunkat hozzadhatjuk.
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to
// draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game
// content here
}
Vgl az XNA-jtk keretrendszere belp egy olyan ciklusba, amelyben kt metdus egyenknt automatikusan van hvva elszr az Update metdus, utna
a Draw metdus. Az Update metdusban hozz kell adnunk azt a kdot, amely a
jtk logikjt, a sprite-ok mozgst, az tkzsi algoritmust s egyebeket vezrel.
A Draw metdusban jtkobjektumokat rajzolunk ezt lehetleg gyorsan tegyk.
A Draw metdusban ne update-eljnk, s ne ellenrizznk jtkobjektumokat.
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back
== ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
base.Update(gameTime);
}
21
Hasznlati javaslat
Nyomjuk le a Ctrl + F5 billentykombincit, hogy lssuk a jtkot az emultorban futva (lsd az 1.9. brt).
22
Megolds
A Visual Studio 2010 Windows Phone Silverlight and XNA Application sablonja
olyan kdvzat hoz ltre, amelyben a SharedGraphicsDeviceManager osz-
23
tly megvalsul. Ez az osztly olyan statikus mdszereket nyjt, amelyek hasznosak a grafikai eszkzre mutat hivatkozs kiolvassban, gy mdszereinek s
tulajdonsgainak az elrsben.
Hogyan mkdik?
A Visual Studio 2010 megnyitsa utn hozzunk ltre j projektet. A File menbl,
vlasszuk a New Item Project item lehetsget (vagy nyomjuk le a Ctrl + Shift +
N billentykombincit). Ahogy az 1.10. bra mutatja, vlasszuk a Windows Phone
Silverlight and XNA Application sablont a New Project prbeszdablakbl.
Adjuk meg a SimpleMixedXNASIApplication nevet a Name szvegdobozban, s kattintsunk az OK gombra.
24
A kd
Ahhoz, hogy egy silverlightos Windows Phone-alkalmazs elrhesse az XNA
grafikai eszkzt s a Content knyvtrat, ahol grafika s zene van trolva, az
App osztlynak implementlnia kell az IServiceProvider interfszt. Azt az
objektumot, amely ezt az interfszt implementlja, a ContentManager
konstuktor hozza ltre. Az App osztly nyjtja azt a Content tulajdonsgot,
amelynek a ContentManager osztlybl ltrehozott objektummal kell belltva
lennie.
Az AppServiceProvider osztly, amelyet az AppServiceProvider.cs fjl
tartalmaz, az az osztly, amely az IServiceProvider interfszt implementlja.
public class AppServiceProvider : IServiceProvider
{
// A map of service type to the services themselves
private readonly Dictionary<Type, object> services =
new Dictionary<Type, object>();
public void AddService(Type serviceType,
object service)
{
// Validate the input
if (serviceType == null)
throw new ArgumentNullException("serviceType");
if (service == null)
throw new ArgumentNullException("service");
if (!serviceType.IsAssignableFrom(
service.GetType()))
throw new ArgumentException("service does not
match the specified serviceType");
// Add the service to the dictionary
services.Add(serviceType, service);
}
25
26
assembly=Microsoft.Xna.Framework.Interop">
...
<Application.ApplicationLifetimeObjects>
<!--Required object that handles lifetime events
for the application-->
<shell:PhoneApplicationService
Launching="Application_Launching"
Closing="Application_Closing"
Activated="Application_Activated"
Deactivated="Application_Deactivated"/>
<!--The SharedGraphicsDeviceManager is used to render
with the XNA Graphics APIs-->
<xna:SharedGraphicsDeviceManager />
</Application.ApplicationLifetimeObjects>
</Application>
27
}
// Create the ContentManager so the application can
// load precompiled assets
Content = new ContentManager(Services, "Content");
// Create a GameTimer to pump the XNA
// FrameworkDispatcher
FrameworkDispatcherTimer = new GameTimer();
FrameworkDispatcherTimer.FrameAction +=
FrameworkDispatcherFrameAction;
FrameworkDispatcherTimer.Start();
}
// An event handler that pumps the FrameworkDispatcher
// each frame.
// FrameworkDispatcher is required for a lot of the XNA
// events and
// for certain functionality such as SoundEffect
// playback.
private void FrameworkDispatcherFrameAction(
object sender, EventArgs e)
{
FrameworkDispatcher.Update();
}
28
public GamePage()
{
InitializeComponent();
// Get the content manager from the application
contentManager =
(Application.Current as App).Content;
// Create a timer for this page
timer = new GameTimer();
timer.UpdateInterval = TimeSpan.FromTicks(333333);
timer.Update += OnUpdate;
timer.Draw += OnDraw;
}
A kvetkez OnNavigatedTo metdus nhny dolgot inicializl. Az OnNavigatedTo metdust az opercis rendszer automatikusan hvja, amikor az oldal az
oldalkeretben betltdik. Mivel az oldal aktv, a SetSharingMode igazra van lltva,
gy az OnDraw metdusban az XNA grafikai eszkzzel grafikkat lehet rajzolni.
Vgl nhny ms inicializlsi kd is definilva van az OnNavigatedTo metdusban a SpriteBatch objektum ltrehozshoz s a jtkidzt elindtshoz.
protected override void
OnNavigatedTo(NavigationEventArgs e)
{
// Set the sharing mode of the graphics device to
// turn on XNA rendering
SharedGraphicsDeviceManager.Current.GraphicsDevice.
SetSharingMode(true);
// Create a new SpriteBatch, which can be used to
// draw textures.
spriteBatch = new
SpriteBatch(SharedGraphicsDeviceManager.
Current.GraphicsDevice);
// TODO: use this.content to load your game
// content here
// Start the timer
timer.Start();
29
base.OnNavigatedTo(e);
}
private void OnDraw(object sender,
GameTimerEventArgs e)
{
SharedGraphicsDeviceManager.Current.
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
}
Megjegyzs A Visual Studio 2010 projekt nem tartalmazza azt a kdot, amely az XNA
s Silverlight integrcijnak egy fontos aspektust fedi le. Az XAML-oldalhoz, amely
az XNA-knyvtrral grafikai objektumokat renderel, Silverlight-vezrlket adhatunk.
Akr csak a Silverlight-vezrlk renderelshez, itt is nhny utastst kell hozzadnunk: egy metdust, amelyet az oldalrendezs teljeslsekor kell behvni, s hasznos
az UIElementRenderer objektum ltrehozshoz. Az OnDraw metdusban, ahol
30
Hasznlati javaslat
Nyomjuk le a Ctrl + F5 billentykombincit, vagy vlasszuk a Debug Start
Without Debugging lehetsgt. Ha kdunk jl pl fel, alkalmazsunk a Windows Phone Emulatorban fut (lsd az 1.11. brt).
Ha megnyomjuk a Change to game page gombot, az alkalmazs az XNA grafikai eszkzt hasznl oldalt mutatja (lsd az 1.12. brt). Ezen az oldalon az
XNA-knyvtr egyszeren kitlti a kpernyt a CornFlowerBlue sznnel.
31
Megolds
A Visual Studio 2010-bl betlttt telefonprojekttel vlasszuk a Windows
Phone Emulatort a cl legrdllistbl (lsd az 1.13. brt).
Hasznlati javaslat
Nyomjuk le a Ctrl + F5 billentykombincit vagy vlasszuk a Debug Start
Without Debugging lehetsgt. Ha kdunk jl pl fel, alkalmazsunk a Windows Phone Emulatorban fut (lsd az 1.14. brt).
Ez az emultor nagyon hatkony. Tbbrints kpessgeket tmogat, ha a
PC-monitorunk tmogatja az rintkpernyt. Grafikus gyorstst tmogat, ha
grafikai eszkznk tmogatja a DirectX 9-et vagy magasabb verzijt. rzkelket emull, mint a gyorst s az A-GPS a telefon helyre s pozcijra. Ha a az
emultor melletti lebeg menben a folytat gombra () kattintunk (lsd az 1.14.
brt), megnylik az Additional Tools ablak (lsd az 1.15. brt).
32
33
34
Az emultor els elindtsa utn, ha nem zrjuk be, minden mdosts, amelyet a
kdban vgrehajtunk, s a nyitott emultorban teleptnk, lthat s tesztelhet
lesz. Mivel szksgtelen az emultor jrafuttatsa, gy a telepts sokkal gyorsabb.
Az emultor az Internet Explorer 9-es mkd verzijt, valamint a Settings
alkalmazst tartalmazza, amellyel a telefon httrt s stlusait lehet vltoztatni.
35
Megolds
Kt mdon telepthetjk az alkalmazst a telefonra: a Visual Studio 2010-zel
vagy az Application Deployment eszkzzel.
Hogyan mkdik?
Mindkt esetben, le kell tltennk s installlnunk kell a Zune szoftver legjabb
verzijt a kvetkez helyrl: www.zune.net/en-US/. A Zune egy szrakoztatsi eszkz eredetileg csak az Amerikai Egyeslt llamokban rhet el ,
amely a Microsoft vlasza az Apple iPod eszkzcsaldjra. A Zune szoftverrel
zent s videkat tudunk szlltani, de a szoftvernket is telepthetjk vele.
Mindkt esetben fejleszti licenccel kell feloldanunk a Windows Phone eszkznket. A licencet a Microsoft App Hub oldalrl, http://create.msdn.
com/en-us/home/membership, szerezhetjk be vi 99 dollr befizetsvel.
A regisztrciban a Windows Live ID-azonost fikunkat egy App Hub azonostval trstjuk. Az adatprostsra szksg van a Windows Phone eszkz feloldshoz a Windows Phone Developer Registration eszkzzel, amelyet a Windows
Phone Developer Toolsal teleptett eszkzk kztt tallunk (lsd az 1.17. brt).
Megjegyzs Ahogy az 1.17. bra mutatja, a Zune szoftver szksges a Windows
Phone 7-es eszkz feloldshoz.
Ezeknek a ktelez lpseknek a teljestse utn eszkznk kszen ll az alkalmazs fogadsra. A Visual Studio 2010-bl egyszeren mdostanunk kell a cl
combo boxot Windows Phone Emulatorrl Windows Phone Device-ra.
36
Hasznlati javaslat
Ekkor az F5-tel hibakeres munkamenetet indthatunk, vagy a Ctrl + F5 billentykombincival hibakeress nlkl indthatjuk el az alkalmazst. A Visual
Studio 2010 sszelltja az alkalmazst, elindtja a Zune szoftvert, hogy a Windows Phone eszkzhz csatlakozzon, az XAP-fjlt az eszkzre msolja, s vgl
futtatja az alkalmazst. Ekkor az eszkznkn fut alkalmazsunkat ltjuk.
Megjegyzs A Windows Phone Developer Tools tartalmazza a WPConnect.exe
programot. Amikor alkalmazsunk a Windows Phone mdiatrt hasznlja, vagy
zeneszmot jtszik, megtallja a Zune szoftver ltal zrolt erforrsokat. Miutn a
telefonhoz csatlakoztattuk, be kell zrnunk a Zune szoftvert, s futtatnunk kell
a WPConnect.exe-t. Az eszkz ekkor tovbbra is csatlakoztatva lesz, de mr
teljes hozzfrsnk lesz a telefoneszkzhz.
38
Megolds
Az App Hub oldalra kell mennnk, s kvetni kell az alkalmazsbeadvny walkthrough-jt.
Hogyan mkdik?
A Windows Phone Marketplace-en alkalmazsokat, zent, videkat stb. tallhatunk az eszkznkhz. Az Apple Store-hoz vagy az Android Markethez hasonlt
ez az oldal. A piactr alkalmazsokat kategorizl, s lehetv teszi ingyenes,
prba- s fizetett alkalmazsok letltst. Ha egy alkalmazssal elgedettek vagyunk, megvehetjk elektronikus fizetssel, pldul hitelkrtyval vagy a kltsg
hozzadsval a szmlnkhoz, ha ezt a mobilszolgltatnk lehetv teszi.
Tulajdonkppen a piactren kvl nincs ms md az alkalmazsunk terjesztsre. Ha vllalati alkalmazst fejlesztnk, s azt a munkavllalk telefonjra kell
kiosztanunk, akkor is be kell kldennk a piactrre. Felteheten privtknt regisztrljuk az alkalmazsunkat, gy a publikus keressben nem lesz lthat. Ha a
munkavllalt rtestjk a Marketplace-hivatkozsrl, le tudja tlteni az alkalmazst, s installlhatja a telefonjn. A Marketplace-alkalmazs a telefonon automatikusan rtesti a munkavllalt, amikor egy alkalmazsfrissts elrhetv vlik.
Minden Windows Phone-on fut alkalmazst szignlni kell a Microsoft
Authenticode tanstvnnyal. Magt az alkalmazst nem kell szignlnunk, ez
ugyanis azutn trtnik meg, amikor a Microsoft tnzte az alkalmazsbeadvnyunkat. Ha alkalmazsunk minden Marketplace-felttelnek megfelel, az XAPfjlt szignljk, s az alkalmazst hozzadjk ahhoz az alkalmazskategrihoz,
amelyet a beadvny walk-through-ja sorn megadtunk.
Mindez nem vonatkozik a btaknt regisztrlt alkalmazsokra; a Marketplace
elfogadsi fzisa ezeket nem szignlja, hiszen nincsenek mg kszen. Egy btaalkalmazst legfeljebb 100 bta-tesztel tlthet le, a tesztelsi szakasz pedig 90
napra van korltozva.
A Windows Phone Certification Requirements cm hivatalos dokumentum
itt tallhat: http://go.microsoft.com/fwlink/?LinkID=183220. 27
oldal hossz, s mindent tartalmaz, amit meg kell tennnk (s el kell kerlnnk)
ahhoz, hogy az alkalmazsunk megfeleljen a Marketplace-feltteleknek. Nzzk
meg a fejlesztkre vonatkoz legfontosabb szablyokat:
A maximum XAP-mret 225 MB. Ennek a fjlnak tartalmaznia
kell a WMAppManifest.xml s az AppManifest.xml fjlt is,
szerelvnyeket, tovbb kt ikont. A Visual Studio 2010 min39
40
A Visual Studio 2010 Marketplace olyan tesztcsomagot nyjt, amellyel a fejleszt ugyangy tesztelheti az alkalmazst, ahogyan azt a Marketplace elfogadsi
fzisa elemzi a beklds utn. (Errl bvebben lsd a 11. fejezet 11.5. receptjt.)
Megolds
Ehhez a Guide osztlyt kell hasznlnunk a GamerServices nvtrbl, amely
olyan tulajdonsgokat s metdusokat biztost, amelyekkel ellenrizhetjk, hogy
az alkalmazsunk prbaverzimdban fut-e. St a Guide osztly olyan metdusokat biztost, amelyekkel a prbamd s a vsrlsi krs akkor is szimullhat,
amikor az alkalmazs hibakeres mdban vagy az emultorban fut.
Hogyan mkdik?
A Microsoft ismt segti a fejlesztket: a Marketplace implementl egy olyan funkcit, amellyel a felhasznlk vlaszthatnak az alkalmazsunk prba- s a teljes
verzija kztt. Fejlesztknt nem kell kt vltozatot biztostanunk a szoftvernkbl, csak egyszeren ellenriznnk kell a kdunkat, hogy lssuk, az alkalmazs fut-e prbamdban. Valjban, amikor a felhasznl az alkalmazs prbaverzijnak a teleptst vlasztja, a Marketplace egy prbalicencfjlt ad hozz
ahhoz a knyvtrhoz, ahova az alkalmazs teleptve van. Ha a felhasznl gy
dnt, hogy a prba utn megvsrolja az alkalmazst, a Marketplace a prbalicencet a teljes licenccel cserli ki.
41
42
44
A kd
Az XNA-jtkalkalmazsban az Draw esemnykezelvel mutatjuk meg azt az
zenetet, amely jelzi, hogy az alkalmazs prbamdban van. Hozzadunk egy
osztly-logikaimezt azrt, hogy trolja azt az rtket az IsTrialMode tulajdonsgbl, amely a Guide osztlyba tartozik. Ezt a Microsoft azrt ajnlja, mert
az IsTrialMode tulajdonsg olvassa minden egyes alkalommal tbb idt vesz
ignybe, s egy jtkban az idvel val sprols nagyon fontos. Ez a mvelet az
Initialize metdusban teljesl, ahol egy msik rdekes funkci is jelen van.
A #DEBUG compiler irnyelv lltja be a SimulateTrialMode tulajdonsgot.
gy, amikor az alkalmazs a hibakeressi belltsokkal ssze van lltva, szimullhatjuk a prbamdot, s tesztelhetjk a kdunkat.
A Draw metdus az IsTrial tulajdonsggal ellenrzi, hogy az alkalmazs
prbamdban van-e, s a DrawString metdust hasznlja megerstskor.
A DrawString metdusra szksg van az informci kpernyn val nyomtatshoz. Ez a metdus elfogadja a sprite-betkszlet-objektumot, a megmutatand zenetet, az X, Y pozcit, amely azt jelzi, hogy hova kell az zenetet
nyomtatni, tovbb a felhasznland betsznt. A sprite-betkszlet-objektum a
LoadContent metdusban van betltve.
Vgl az OnExiting esemnykezelben a kd hozzadsval krjk a felhasznlkat az alkalmazs megvsrlsra. A Guide osztly nyjtja a ShowMarketplace metdust ennek vgrehajtsra. Belsleg a metdus mr ellenrzst
hajt vgre az IsTrialMode tulajdonsghoz, gy nem szksges ezt az ellenrzst is
hozzadni.
45
namespace XNATrialApplication
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
bool isTrial = false;
...
/// <summary>
/// Allows the game to perform any initialization it
/// needs to before starting to run.
/// This is where it can query for any required
/// services and load any non-graphic/// related content. Calling base.Initialize will
/// enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
#if DEBUG
Guide.SimulateTrialMode = true;
#endif
isTrial = Guide.IsTrialMode;
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the
/// place to load all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to
// draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
46
47
48
49
}
else
btnBuy.Visibility =
System.Windows.Visibility.Collapsed;
}
}
}
Hasznlati javaslat
Amikor mindkt alkalmazs fut, ellenrzik a prbamdot, majd kinyomtatjk a
megfelel zenetet a kpernyre. Amikor az XNA-alkalmazs bezrdik, egy
zenetet mutat, amelyben az alkalmazs megvsrlsra kri a felhasznlkat.
A Silverlight-alkalmazsban ugyanaz a viselkeds a Buy Me gombra val kattintssal rhet el. Az 1.22. brn mindkt plda kimenete lthat. A bal oldalon
van az XNA-alkalmazs, kzpen a kt plda szmra kzs Marketplacealkalmazs, vgl jobb oldalon a Silverlight-alkalmazs. Ebben az esetben a
Marketplace-alkalmazs oldala hibt jelez, ugyanis az alkalmazs nem lett a
Marketplace-re teleptve, s nincs rvnyes alkalmazsazonostja.