You are on page 1of 50

ELS

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.1. A Windows Phone ttekintse


Problma
j Windows Phone 7-es eszkzt vsroltunk, s szeretnnk alkalmazsokat
fejleszteni. Ehhez ismernnk kell az eszkz hardverjellemzit, pldul a kpernyfelbontst s a memriakpessget, tovbb azt is, hogy az eszkz melyik
rzkelket s szolgltatsokat nyjtja.
Vgl azzal is tisztban kell lennnk, hogy mit nyjt a Windows Phone opercis rendszer annak rdekben, hogy alkalmazsunkat a lehet legjobban integrlhassuk.

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

1.1. A Windows Phone ttekintse

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.

1.1. bra. ltalnos Windows Phone 7-es eszkz


Fejlesztknt fontos megrtennk, milyen hatssal vannak ezek a gombok egy
alkalmazsra. Ha az sszes gomb le van nyomva, a fut alkalmazs kikapcsol
vagy lefagy. A fejlesztnek olyan kdot kell szolgltatnia, amely vlaszol ezekre
az esemnyekre, esetleg adatot ment el elszigetelt trolba (egy alkalmazs dediklt trolja a merevlemezen). Az alkalmazs jramegjelentshez vagy miutn
3

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

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

1.1. A Windows Phone ttekintse

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.

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

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

zst a futtats alatt , emlkeznnk kell r, hogy minden alkalmazst a Windows


Phone Marketplace oszt el. Termszetesen, mieltt a felhasznlkhoz eljutna az
alkalmazsunk a Marketplace-en, t kell mennie klnbz engedlyezsi lpseken, s biztosak lehetnk abban, hogy egy nem .NET-alkalmazs nem jut t a
tanstsi folyamaton.
Hromfle alkalmazst hozhatunk ltre: Silverlightot Windows Phone-ra,
XNA-t Windows Phone-ra s a kett kombincijt. Az els egyni Silverlight
4-es verzit hasznl, amelyhez a Microsoft nhny specilis funkcit adott.
A msodik XNA-knyvtrakat hasznl, s videojtkok ltrehozst clozza
meg. A harmadik a Silverlight s az XNA kombincijt hasznlja. Ez ltalban
j megolds olyan jtkokhoz, amelyekben a men- s az internet-hozzfrst a
pontmegosztshoz Silverligh-vezrlelemek hajtjk vgre, a jtkmodellt animcikkal, zenvel stb. pedig az XNA kszti.
Megjegyzs Ha a rgi Windows Phone 7-es opercis rendszerhez val alkalmazst
szeretnnk kiadni, tudnunk kell, hogy az alkalmazsban kombinlhatjuk a Silverlights az XNA-technolgikat. Az egyetlen korltozs az interfsszel kapcsolatos; nem
rajzolhatunk Silverlighttal vezrlket s XNA-val sprite-okat egyszerre. Msrszt, hasznlhatunk Sillverlightot az interfszre s XNA-knyvtrakat arra, hogy a telefonon lv
mdiatrolnak teljes hozzfrst biztostsunk pldul hanganyag rgztshez.

A Windows Phone-alkalmazs rshoz C# vagy Visual Basic hasznlhat.


A fejleszts elkezdshez elszr le kell tltennk a Windows Phone Developer
Toolst innen http://create.msdn.com/en-us/home/ getting_ started. A telepts Visual Studio 2010 Express for Windows Phone-t, Windows
Phone Emulatort, Silverlight Toolst, XNA 4-et, WCF Data Services Client for
Window Phone-t, Microsoft Advertising SDK for Windows Phone-t s Microsoft Expression Blend for Windows Phone-t tartalmaz. Ha a gpnkn mr van
Visual Studio 2010, a telepts csak a szksges fjlokat installlja, s az j projektsablonokat a fejleszteszkz legkzelebbi elindtsnl ltjuk.
A Microsoft Windows Phone Developer Tools installlsnak lpsei a kvetkezk:
1. Miutn letltttk, indtsuk el a teleptt (vm_web.exe).
2. Fogadjuk el a licencmegllapodst.
3. A Customized telepts vlasztsval megadhatjuk azt a mappt,
amelybe az eszkzket installlni szeretnnk.
7

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

4. Vrjuk meg, amg a telept az sszes szksges fjlt letlti az


internetrl. A letlttt fjlok szma attl fgg, mi van mr meg
az opercis rendszerben.
5. Ha internetkapcsolat nlkli gpre kell fejleszteszkzket teleptennk, hasznlhatjuk az ISO verzijt innen: http://go.
microsoft.com/fwlink/?LinkID=223971.

1.3. Egyszer Silverlight Windows Phonealkalmazs ltrehozsa


Problma
Silverlighttal kell Windows Phone-alkalmazst ltrehoznunk.

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.

1.3. Egyszer Silverlight Windows Phone-alkalmazs ltrehozsa

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.2. bra. Visual Studio 2010 New Project prbeszdablak


A Windows Phone Audio Playback Agent osztlyknyvtrat hoz ltre
a httrgynkkel httrbeli zenelejtszsra (errl bvebben lsd
a 8. fejezet 8.6. receptjt). A Windows Phone Audio Streaming Agent
osztlyknyvtrat hoz ltre httrgynkkel, hanganyag ramlshoz (errl bvebben lsd a 8. fejezet 8.6. receptjt).
A Windows Phone Scheduled Task Agent osztlyknyvtrat hoz ltre httrgynkkel temezett feladatok vgrehajtsra (errl bvebben lsd a 2. fejezet 2.8., 2.9. s 2.10. receptjt).
9

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

Vlasszuk a Windows Phone Application projektsablonjt, s gpeljk be


SimpleSilverlightApplication elnevezst a projekt nvszvegdobozba.
Vlasszunk egy helyet, ahov a projektet menteni szeretnnk, s kattintsunk az
OK gombra.
A Visual Studio 2010 kri a clplatform kivlasztst az j Windows Phonealkalmazshoz. Vlasszuk a Windows Phone OS 7.1 ttelt a prbeszdablakbl,
s kattintsunk az OK gombra (lsd az 1.3. brt).

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

1.3. Egyszer Silverlight Windows Phone-alkalmazs ltrehozsa

1.4. bra. A MainPage.xaml szerkesztsre ksz

1.5. bra. Osztlydiagram az App s a MainPage osztlyokra


Vgl az WMAppManifest alkalmazs-jegyzkfjl olyan alkalmazsi adatokat
tartalmaz, mint a cm, az erforrsnevek stb. Ugyancsak tartalmazza a kpessgek listjt, amelyeket meg kell hatroznunk, ha egy bizonyos telefonfunkcit

11

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

akarunk hasznlni. Pldul, ha alkalmazsunkban a telefonmikrofont szeretnnk


hasznlni, az ID_CAP_MICROPHONE kpessget kell hozzadnunk. A fjl tbb
mint tz, elredefinilt kpessggel rkezik. Ha ezeket nem hasznljuk, el kell
ket tvoltanunk.
Fkuszljunk a kt f fjlra. A MainPage.xaml fjl Extensible Application
Markup Language- (XAML-) jellseket tartalmaz, amelyek a foldalt definiljk. A kd elejn, az alkalmazs ltal hasznlt minden nvtr deklarlva van.
<phone:PhoneApplicationPage
x:Class="SimpleSilverlightApplication.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;
assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;
assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/
blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/
markup-compatibility/2006"
...

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)

az elrhet erforrsok teljes listjrt.


12

1.3. Egyszer Silverlight Windows Phone-alkalmazs ltrehozsa

...
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">

A kdban ktsoros adatrcs is van. Az els sorban Stackpanel tallhat kt


szvegblokkal, a msodik sorban pedig Contentpanel, ahol vezrlket adhatunk hozz.
<!--LayoutRoot is the root grid where all
page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the
application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0"
Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle"
Text="MY APPLICATION"
Style="{StaticResource
PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name"
Margin="9,-7,0,0"
Style="{StaticResource
PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1"
Margin="12,0,12,0"></Grid>
</Grid>

A msik fontos fjl az App.xaml, valamint a kapcsold mgttes kd


App.xaml.cs fjlja. Az Application gykrcmke kpviseli azt az osztlyt,

13

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

amelybl az App osztlyunk szrmazik. Az x:Class attribtum ismt az osztly


s az azt tartalmaz nvtr nevt foglalja magban. A nvterek ugyanazok, mint
a fentiek. Az <Application.Resources> jellssel egyni erforrsokat adhatunk hozz az alkalmazshoz. De a legfontosabb kdszakasz az, amelyet az
<Application. ApplicationLifetimeObjects> tartalmaz, amely ngy
esemnykezelt hatroz meg vlaszknt az alkalmazs lettartamban ngy fontos esemnyre. A Launching esemny az alkalmazs indtsnl kvetkezik be,
a Closing esemny az alkalmazs bezrsa eltt, az Activated esemny akkor, amikor a felhasznl, ms telefonalkalmazsok bngszse utn visszatr az
alkalmazshoz, valamint a Deactivated esemny akkor, amikor a felhasznl
elhagyja az alkalmazst (pldul a Back gomb megnyomsval vagy bejv hvs
megvlaszolsval).
<Application
x:Class="SimpleSilverlightApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;
assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;
assembly=Microsoft.Phone">
<!--Application Resources-->
<Application.Resources>
</Application.Resources>
<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"/>
</Application.ApplicationLifetimeObjects>
</Application>

Az App.xaml.cs mgttes kdban sok rdekes ngenerl kd van. Elszr is


vannak esemnykezelk, ahol az alkalmazs trlsre val kijellsre (tombsto14

1.3. Egyszer Silverlight Windows Phone-alkalmazs ltrehozsa

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)
{
}

Az App osztly konstruktorban, alkalmazsinicializlsi lpsek vannak.

15

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

public App()
{
...
// Standard Silverlight initialization
InitializeComponent();
// Phone-specific initialization
InitializePhoneApplication();
}

Az InitializePhoneApplication metdusban RootFrame jn ltre.


A Frame a legfbb vezrl, amely telefonlapokat tartalmaz. Oldalak kztti
navigcit engedlyez, tjolst kezel, s terletet foglal le a rendszersvnak, valamint az alkalmazssvnak. A Navigated esemnnyel detektlhat az, hogy
mikor fejezte be az alkalmazs az inicializlst. Addig a nyitkperny lthat.
A SplashScreenImage.jpg kp a nyitkperny, de testre szabhat vagy
msik preferlttal kicserlhet.
private void InitializePhoneApplication()
{
if (phoneApplicationInitialized)
return;
// Create the frame but don't set it as
// RootVisual yet;
// this allows the splash
// screen to remain active until the application
// is ready to render.
RootFrame = new PhoneApplicationFrame();
RootFrame.Navigated +=
CompleteInitializePhoneApplication;
// Handle navigation failures
RootFrame.NavigationFailed +=
RootFrame_NavigationFailed;
// Ensure we don't initialize again
phoneApplicationInitialized = true;
}

16

1.3. Egyszer Silverlight Windows Phone-alkalmazs ltrehozsa

Vgl a CompleteInitializePhoneApplication esemnykezelben a


RootVisual tuladonsg RootFrame-re van belltva. A RootVisual a f alkalmazsinterfsz.
private void CompleteInitializePhoneApplication(
object sender, NavigationEventArgs e)
{
// Set the root visual to allow the
// application to render
if (RootVisual != RootFrame)
RootVisual = RootFrame;
// Remove this handler since it is no longer needed
RootFrame.Navigated -=
CompleteInitializePhoneApplication;
}

1.6. bra. Egyszer Silverlight Windows Phone-alkalmazs az emultorban

17

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

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).

1.4. Egyszer XNA Windows Phone-alkalmazs


ltrehozsa
Problma
XNA-val kell Windows Phone-alkalmazst ltrehoznunk.

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

1.4. Egyszer XNA Windows Phone-alkalmazs ltrehozsa

1.7. bra. j Windows Phone-alkalmazs ltrehozsa Windows Phone Game (4.0)


projektsablonnal

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.8. bra. A Game1 s a Game osztlyok diagramja


public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
// Frame rate is 30 fps by default for
// Windows Phone.
TargetElapsedTime = TimeSpan.FromTicks(333333);
// Extend battery life under lock.
InactiveSleepTime = TimeSpan.FromSeconds(1);
}

Az objektumok inicializlshoz az Initialize metdusba kell tennnk a


kdot.
20

1.4. Egyszer XNA Windows Phone-alkalmazs ltrehozsa

protected override void Initialize()


{
// TODO: Add your initialization logic here
base.Initialize();
}

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

protected override void Draw(GameTime gameTime)


{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
base.Draw(gameTime);
}

A kdban egy msik metdus is definilva van a tartalom kirtshez, amikor a


jtk bezrdik.
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

Megjegyzs Ebben a knyvben, olyan XNA-kd tallhat, amely olyan Windows


Phone-funkcikhoz nyjt hozzfrst, mint a mdiatr s a hangfjlok. A Windows
Phone jtkfejlesztse irnt rdekldknek Adam Dawes Windows Phone 7 Game
Development cm knyvt rdemes fellapozniuk (Apress, 2010).

Hasznlati javaslat
Nyomjuk le a Ctrl + F5 billentykombincit, hogy lssuk a jtkot az emultorban futva (lsd az 1.9. brt).

22

1.5. Egyszer XNA- s Silverlight-keverkalkalmazs ltrehozsa

1.9. bra. A SimpleXNAApplication a Windows Phone emultorban futva

1.5. Egyszer XNA- s Silverlightkeverkalkalmazs ltrehozsa


Problma
Olyan alkalmazst kell ltrehoznunk, amely XNA- s Silverlight-technolgikat
is hasznl a vizulis elemek kezelshez. Ltrehozhatunk pldul egy olyan jtkot, amelyben a menket s az eredmnyjelz tblt Silverlight-vezrlk irnytjk, a jtkmodul s a sprite-ok renderelst pedig az XNA hajtja vgre.

Megolds
A Visual Studio 2010 Windows Phone Silverlight and XNA Application sablonja
olyan kdvzat hoz ltre, amelyben a SharedGraphicsDeviceManager osz-

23

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

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.

1.10. bra. Kevert XNA s Silverlight Windows Phone-alkalmazs ltrehozsa


A projekttartalom hasonl a Windows Phone Silverlight-projektjeihez, de nhny
kiegsztssel. Elszr is, a projekt tartalmaz kt msik projektet. Az egyik az
XNA Content projekt, amellyel kpeket, zent, sprite-okat stb. lehet trolni. A msik egy Windows Phone Library, amely az XNA Content knyvtrra hivatkozik.
A f projekt szoksos mdon az App.xaml s a MainPage.xaml oldalakat,
valamint a GamePage.xaml oldalt is tartalmazza. A GamePage.xaml oldalon
kell az XNA-knyvtrral a jtkkdot beilleszteni.

24

1.5. Egyszer XNA- s Silverlight-keverkalkalmazs ltrehozsa

Vgl a f projekt tartalmazza az AppServiceProvider.cs fjlt, ahol az


AppServiceProvider osztly definilva van. Ez az osztly implementlja az
IServiceProvider interfszt, s hasznlhat az IGraphicsDeviceService
interfsz hozzadshoz az alkalmazsban.

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

public object GetService(Type serviceType)


{
// Validate the input
if (serviceType == null)
throw new ArgumentNullException("serviceType");
// Retrieve the service from the dictionary
return services[serviceType];
}
public void RemoveService(Type serviceType)
{
// Validate the input
if (serviceType == null)
throw new ArgumentNullException("serviceType");
// Remove the service from the dictionary
services.Remove(serviceType);
}
}

A GetService metdus az egyetlen, amelyet a kdunkban implementlnunk


kell az IServiceProvider interfsz felhasznlshoz. A Visual Studio 2010
projekthez hozzadott kdban kt msik metdus is van, ezekkel szolgltatsokat lehet hozzadni s eltvoltani egy osztly Dictionary vltozjbl, amelyet szolgltatsoknak neveznk.
Az App osztlykd nagyjbl ugyanaz, mint amelyet az 1.3. receptben lttunk az
XNA inicializlsi szakasz hozzadsval. Az App osztly konstruktorban az
InitializeXnaApplication metdust hvjuk. Ebben a metdusban az ApplicationLifetimeObjects gyjtemny keresi az IGraphicsDevice Service
interfszt. Az ApplicationLifetimeObjects visszaadja az alkalmazskiterjeszts szolgltatsait, amelyek az App XAML-kdban lettek megadva. Ahogyan
a lenti kdbl lthat, a SharedGraphicsDeviceManager szolgltatst hozzadtuk az ApplicationLifetimeObjects szakaszhoz. gy a szolgltats
hozzaddik az App osztlyhoz, ezltal a SharedGraphics DeviceManager
osztly hasznlhatv vlik.
<Application
...
xmlns:xna="clr-namespace:Microsoft.Xna.Framework;

26

1.5. Egyszer XNA- s Silverlight-keverkalkalmazs ltrehozsa

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>

Amint az IGraphicsDeviceService interfsz megtallhat, a szolgltatsok


AppServiceProvider objektumban troldik, amely folyamatosan hasznlatban van a ContentManager objektum ltrehozsa kzben.
Vgl GameTimer objektum ltrejn s elindul. A FrameAction esemny
idkznknt hvja az Update metdust. Ahogy a kdmegjegyzsek mutatjk,
szksg van az XNA-esemnyek s -funkcik kezelsre.
// Performs initialization of the XNA types required
// for the application.
private void InitializeXnaApplication()
{
// Create the service provider
Services = new AppServiceProvider();
// Add the SharedGraphicsDeviceManager to
// the Services as the IGraphicsDeviceService
// for the app
foreach (object obj in ApplicationLifetimeObjects)
{
if (obj is IGraphicsDeviceService)
Services.AddService(
typeof(IGraphicsDeviceService), obj);

27

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

}
// 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();
}

Ekkor hozzfrnk az XNA-alap grafikai eszkzhz. Nzzk meg a


GamePage.xaml kdot, hogy megrtsk, hogyan hasznlhat a grafikai eszkz
ahhoz, hogy grafikkat rendereljnk az alkalmazsba.
A GamePage osztlykonstruktorban a GameTimer objektum jn ltre, az
Update s a Draw esemnyek pedig frisstik a jtklogikt, illetve grafikkat
rajzolnak. Az UpdateInterval tulajdonsg 30 kpkocka per msodperc kezelsre van belltva. Vgl az App osztly ltal nyjtott Content tulajdonsg a
ContentManager objektumra mutat hivatkozst olvassa ki, s ez hasznos a grafikus s a zenei jtktartalom kezelsben.
public partial class GamePage : PhoneApplicationPage
{
ContentManager contentManager;
GameTimer timer;
SpriteBatch spriteBatch;

28

1.5. Egyszer XNA- s Silverlight-keverkalkalmazs ltrehozsa

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

base.OnNavigatedTo(e);
}
private void OnDraw(object sender,
GameTimerEventArgs e)
{
SharedGraphicsDeviceManager.Current.
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
}

Vgl az OnNavigatedFrom metdus a kdhoz van adva, hogy az idztt


lellthassuk, s a SharedGraphicsDeviceManager SetSharingMode-jt hamisra lltsuk. Az OnNavigatedFrom metdus az idelis hely az ilyenfajta kd
specifiklshoz, mivel ez a metdus kzvetlenl az oldal inaktvv vlsa eltt
hvdik be. Hiszen nincsen szksg hozzfrsre az XNA grafikai eszkzhz
akkor, amikor nincs mit rajzolni.
protected override void
OnNavigatedFrom(NavigationEventArgs e)
{
// Stop the timer
timer.Stop();
// Set the sharing mode of the graphics device to
// turn off XNA rendering
SharedGraphicsDeviceManager.Current.GraphicsDevice.
SetSharingMode(false);
base.OnNavigatedFrom(e);
}

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

1.5. Egyszer XNA- s Silverlight-keverkalkalmazs ltrehozsa

az alkalmazs grafiki renderelve vannak, hasznlhatjuk az UIElementRenderer


objektumot s azt a sajt Render metdust, amely Silverlight-vezrlket mutat be
az oldalon. A Code Samples weboldalon http://msdn.microsoft.com/enus/library/ff431744(v=VS.92).aspx tallhatunk nhny j pldt.

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.

1.11. bra. Egyszer SimpleMixed


XNASIApplication foldal

1.12. bra. A GamePage.xaml oldal,


amely XNA-val rendereli a grafikit

31

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.6. Alkalmazs teleptse a Windows Phone


Emulatorhoz
Problma
Kifejlesztettk az alkalmazsunkat, s futtatni akarjuk, de nincs hozz fizikai eszkznk.

Megolds
A Visual Studio 2010-bl betlttt telefonprojekttel vlasszuk a Windows
Phone Emulatort a cl legrdllistbl (lsd az 1.13. brt).

1.13. bra. A Windows Phone 7 Emulatorra belltott cl combo box

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

1.6. Alkalmazs teleptse a Windows Phone Emulatorhoz

1.14. bra. Windows Phone Emulator


Az Additional Tools ablak hrom lapot knl: Accelerometer, Location s Screenshot. A gyorsulsmr eszkz lehetv teszi a fejlesztknek az gyorsulsmr
rzkel szimullst. A Recorded Data funkcival telefonmozgsokat szimullhatunk, ilyen pldul a telefon rzsa. Az Orientation legrdllista lehetv teszi,
hogy a fejlesztk a kezdeti telefontjolst megvlasszk. A piros pont thelyezsvel a 3D-s telefonmodell kzepre elforgathatjuk a telefont a 3D-s trben.
A Location lap egy trkp, amely a telefon helyt mutatja (lsd az 1.16. brt).
Fldrajzi helyre a keressi szvegmezvel kereshetnk, a lencseikonokkal nagytva, kicsinytve pedig a keresst finomthatjuk. A trkpre kattintva belltjuk a
jelenlegi tartzkodsi helynket, a kapcsold ablak terletnek Current Location
s Pt Latitude/Longitude rtkei ennek megfelelen frisslnek. Folytathatjuk a
trkpre trtn kattintst, hogy pontokat hozzadva elrsi utat hozzunk ltre,
amelyet utna fjlba menthetnk, s egy pillanat alatt hasznlhatunk, ha a Load.
gombbal a Recorded Data ablak terletn betltjk.

33

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.15. bra. Az Additional Tools ablak


A Screenshot eszkz egyszeren kpernykpeket vesz az emultorbl, s fjlba
menti ket. gy az alkalmazs rszre a kpernykpek hozzadsa a Marketplace
elfogadsi fzisa kzben egyszerbb vlik.
Megjegyzs A Multi-Touch Vista knyvtr a CodePlex-bl lehetv teszi, hogy a felhasznlk tbb egrrel szimulljk az ujjaikat. Ennek a tbbrints meghajtnak a
teleptse utn a tbbrints Windows Phone-alkalmazsunkat tesztelhetjk az emultorban. Tltsk le a meghajtt innen:
http://multitouchvista.codeplex.com.

34

1.6. Alkalmazs teleptse a Windows Phone Emulatorhoz

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.

1.16. bra. A Location lap az Additional Tools ablakbl


Az 1.14. brn az emultor mellett kis lebeg ngyszg lthat nhny ikonnal.
Ezekkel a gombokkal bezrhatjuk, minimalizlhatjuk, elforgathatjuk, nagythatjuk az emultort, s kiegszt eszkzket is futtathatunk. Ha 100%-os nagytsi
szintet vlasztunk, monitorunkon nagymret Windows Phone-emultort ltunk. Ennek az az oka, hogy a Windows Phone opercis rendszer felttelezi,
hogy a monitorunk 90 dpi-s, mikzben a Windows Phone kijelzje 262 dpi-s.
Hogy minden pixelt lthassunk monitorunkon, az emultor nagyon nagy kpernyt mutat.

35

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.7. A Windows Phone-alkalmazs teleptse


az eszkzn
Problma
Telepteni szeretnnk az alkalmazsunkat a Windows Phone eszkzre, ugyanis
tesztelnnk kell az rzkelk funkciit.

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

1.7. A Windows Phone-alkalmazs teleptse az eszkzn

1.17. bra. A telefon feloldshoz s az alkalmazsok teleptshez hasznlt Windows


Phone Developer Registration eszkz

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.

A msodik mdszer az alkalmazs teleptsre a Windows Phone eszkzn az


Application Deployment eszkz futtatsa (lsd az 1.18. brt).
37

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

1.18. bra. Az Application Deployment eszkz az alkalmazs Visual Studio 2010


nlkli teleptshez
A cl combo boxban az eszkz s az emultor is cleszkzknt vlaszthat.
Az XAP-szvegmez az alkalmazs XAP-fjljnak elrsi tjt tartalmazza.
Amikor sszelltjuk az alkalmazsunkat, a Visual Studio 2010 ltrehozza az
XAP-fjlt, amely egy tmrtett fjl, s tartalmaz mindent, amire a Windows
Phone-nak szksge van az alkalmazs futtatshoz (EXE, DLLl, kpek stb).
Miutn a teleptsgombra kattintunk, az Application Deployment eszkz csatlakozik a telefonhoz, s telepti az alkalmazst.

1.8. Windows Phone-alkalmazs kldse a


piactrre
Problma
A Windows Phone Marketplace-szel szeretnnk az alkalmazsunkat terjeszteni.

38

1.8. Windows Phone-alkalmazs kldse a piactrre

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

dent automatikusan megad, amire rvnyes XAP ltrehozsakor


szksgnk lehet.
Alkalmazsunkat .NET Frameworkkel kell fejlesztennk, s nem
hasznlhatunk natv kdot. Mieltt elkldjk az XAP-csomagot,
fel kell ptennk az alkalmazs kiskereskedelmi verzijt.
Az alkalmazsnak megbzhatnak kell lennie. A tanstsi folyamat ellenrzi, hogy az alkalmazs kezel-e hibkat, megakad-e
vratlanul, vagy hossz ideig inaktv-e, pldul adatletlts miatt. Utbbi esetben a felhasznlknak biztostani kell azt a lehetsget, hogy megszakthassk a mveletet, valamint meg kell
jelenteni egy olyan folyamatjelzt, amely a mvelet llapott
mutatja.
Az alkalmazsnak 5 msodpercen bell mutatnia kell az els
kpernyt. Ahogyan az 1.3. receptben lttuk, a Silverlight Windows Phone-alkalmazs nyitkpernyt biztost, gy azt gondolhatnnk, hogy ez a szably mindig ki van elgtve. Sajnos
nem gy van, ugyanis a nyitkpernynek 5 msodpercen bell
el kell tnnie, s a foldalnak renderelve kell lennie. Ha az alkalmazsunknak ez tbb idbe telik, implementlhatunk egy
nyitkpernyt folyamatjelzvel (lsd a 3. fejezet 3.1. receptjt).
A felhasznlnak 20 msodpercen bell hasznlnia kell az alkalmazsunkat.
Az alkalmazsnak a vgrehajtsimodell-esemnyekre helyesen
kell vlaszolnia. Amikor a felhasznl megnyomja a Start gombot, a Windows Phone-alkalmazsnak deaktivldnia kell; amikor
a felhasznl megnyomja a Back gombot, s visszatr az alkalmazsunkhoz, aktivldnia kell, s ugyanazt a kperny-informcit
kell mutatnia, amelyet a httrben futtatott. A 2. fejezet teljes
egszben a vgrehajtsi modellrl s az alkalmazs trlsre val
kijellsrl (tombstoning) szl.
Az alkalmazsnak hasznlhatnak kell lennie a stt s a vilgos
telefonsablonnal is. Teht ha olyan kpeink vagy ms grafikink
vannak, amelyek az egyik sablonon mkdnek jl, implementlnunk kell egy olyan algoritmust, amely kicserli ket, ha a
felhasznl megvltoztatja a telefon sablonjt.

40

1.9. Prba-Windows Phone-alkalmazs ltrehozsa

Megjegyzs Egy rdekes cikk (ten-for-wp7Marketplaceacceptance


.aspx) kiemeli a tz legfontosabb szablyt, amelynek meg kell felelnnk, hogy alkalmazsunk tmenjen az elfogadsi folyamaton.

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.)

1.9. Prba-Windows Phone-alkalmazs


ltrehozsa
Problma
Olyan alkalmazst szeretnnk terjeszteni, amely prbaverzit nyjt. Azt is el
szeretnnk rni, hogy az alkalmazs emlkeztesse a felhasznlkat, hogy vsroljk meg a teljes verzit.

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

Attl fggen, hogy milyen keretrendszert vlasztottunk az alkalmazsunk


rshoz, XNA-t vagy Silverlightot, klnbz lehetsgek vannak annak ellenrzsre, hogy az alkalmazs fut-e prbamdban. Az XNA-keretrendszer a
Guide osztlyt nyjtja, amelyet a GamerServices nvtr tartalmaz (lsd az
1.19. brt az Guide osztlydiagramjrl). A Silverlight-keretrendszer a License
Information zrt osztlyt az IsTrial metdussal.
Fejlesztknt a mi munknk a prbamd alkalmazsbeli implementlsban az,
hogy tesztfeltteleket adjunk hozz a kdunkban, extra alkalmazsfunkcik kizrsval, amelyek csak azutn vlnak elrhetv, hogy a felhasznl megvsrolta az
alkalmazs teljes verzijt. Pldul a forma betltse kzben extramenket mutathatunk, amikor az IsTrial metdus visszaadja a false rtket, vagy mutathatunk egy kpet a jtkunkban, amely jelzi a kvetkez, zrolt szintet, ha az
IsTrialMode tulajdonsga a Guide osztlynak visszaadja a true rtket.

1.19. bra. A Guide osztlydiagram

42

1.9. Prba-Windows Phone-alkalmazs ltrehozsa

A Marketplace rtesti az alkalmazst, ha prbamdban vsroltk meg, vagy


abban van. gy, amikor az emultorban vagy az eszkznkrl teszteljk az alkalmazsunkat, s az alkalmazst a Marketplace mg nem installlta, az IsTrial
metdus s az IsTrialMode tulajdonsg is false rtket ad vissza. Ezrt az
alkalmazsok funkciinak tesztelse prbamdban nem egyszer. Rengeteg
olyan lehetsg van, amellyel megoldhat ez a viselkeds, s eldnthet, mikor
fusson az alkalmazs prba- vagy teljes mdban. Tancsos a LicenseInformation osztly sajt verzijt ltrehozni, a var kulcsszval a belle krvnyezett
objektumot definilni s egy bels tagmezn keresztl azt meghatrozni, hogy
az alkalmazs prba-e, vagy nem. A kd tesztelse utn egyszeren eltvolthatjuk az osztlyt a projektbl, s mdosthatunk nhny ms kdsort is. De nem
szerencss ez a megolds, hiszen az XNA keretrendszer biztostja a SimulateTrialMode tulajdonsgot a Guide osztlybl, amely lehetv teszi annak meghatrozst, mikor van az alkalmazs prbamdban (a tulajdonsg true rtkre
val belltsval), s mikor nem (a tulajdonsg false rtkre val belltsval).
A Guide osztlyt Silverlight-alkalmazsokkal is lehet hasznlni. Ez teht az
XNA- s a Silverlight-keretrendszerek kztti kevert kd hasznlatnak a pldja. A Guide osztly Silverlightban val alkalmazst elnyben rszestjk, ugyanis ezt az XNA keretrendszer mr biztostja, s mg ha hivatkoznunk is kell az
XNA-szerelvnyre a projektnkben, a Guide hasznlata nem ad hozz extraterletet az XAP-alkalmazs terjesztsi fjljban.
Vgl j gyakorlat, ha az alkalmazsbl val kilps eltt megkrdezzk a
felhasznlkat, meg akarjk-e venni a teljes verzit. Ha egyetrtenek a teljes
alkalmazs megvsrlsval, meg kell mutatnunk a kapcsold Marketplaceoldalt. Ezt a Marketplace-API-kkal (alkalmazsprogramozi interfsz Application Programming Interface), pldul a MarketplaceDetailTask s a
MarketplaceReviewTask osztlyokkal vagy a ShowMarketplace metdussal
a Guide osztlybl tudjuk vgrehajtani.
Kt pldt hoztunk ltre, hogy megmutassuk a klnbz prbamegkzeltseket a Silverlight- s az XNA Windows Phone-alkalmazsokban. Mindkt plda
a Guide osztlyt hasznlja a Microsoft.Xna.Framework.GamerServices
nvtrbl, de az esemnykezelikben klnbznek. Ez a kt alkalmazs zenetet
nyomtat a kpernyn, amely azt mutatja a felhasznlnak, hogy az alkalmazs
prbamdban fut.
Az XNA vilgban minden sprite, gy ugyanez igaz a szvegre is. Szveg kpernyn val nyomtatshoz, sprite-betkszletet kell hasznlnunk. A Content
projektben betkszletet adhatunk hozz (ennek a neve pldul XNATrialApplicationContent) a Visual Studio 2010-bl a Project Add New Item
43

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

kivlasztsval. A feltn prbeszdablakbl ezutn ki kell vlasztanunk a Sprite


betkszlet ttelt, s nevet kell adnunk neki (lsd az 1.20. brt).

1.20. bra. Sprite-font hozzadsa az XNA-jtkhoz


A projekthez hozzadott .spritefont fjl egy olyan XML-fjl, amely a betkszlet karaktereit tartalmazza, pldul a betcsaldot, a dimenzit s a stlust.
A fjl szerkesztsvel a betkszlet karaktereit megvltoztathatjuk. St az Asset
Name tulajdonsg fontos, hiszen mutatja annak a betkszletnek a nevt, amelyre
a kdunkban hivatkoznunk kell (a betkszlet-tulajdonsgok megtekintshez
nyomjuk le az F4-et).
A SilverlightTrialApplication a f tartalompanelhez hozzadott j
szvegblokkot hasznl, s a szvege mutatja az zenetet. j szvegblokkot gy
tudunk hozzadni, ha elhzzuk az eszkzkszletbl, vagy begpeljk az XAMLkdot a szerkesztben (lsd az 1.21. brt).

44

1.9. Prba-Windows Phone-alkalmazs ltrehozsa

1.21. bra. TextBlock vezrl hozzadsa a f tartalompanelhez

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

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

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

1.9. Prba-Windows Phone-alkalmazs ltrehozsa

// TODO: use this.Content to load your game


// content here
font = this.Content.Load<SpriteFont>("Font");
}
...
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of
/// timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
if (isTrial)
{
spriteBatch.Begin();
spriteBatch.DrawString(font,
"The Application is in Trial Mode",
new Vector2(10, 10), Color.Black);
spriteBatch.End();
}
base.Draw(gameTime);
}
protected override void OnExiting(object sender,
EventArgs args)
{
Guide.ShowMarketplace(PlayerIndex.One);
base.OnExiting(sender, args);
}
}
}

Szveg rsa a SilverlightTrialApplication alkalmazsban egyszerbb az


XNA-alkalmazsnl. Az lbMessage TextBlock vezrl biztostja a Text
tulajdonsgot, ahol meghatrozhatjuk a nyomtatand sztringzenetet. A MainPage. xaml kdban meghatrozhatjuk a Loaded esemnyt, a kapcsold mgttes kdmetdusban pedig ellenrizhetjk, hogy az alkalmazs prbamdban

47

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

van-e. Buy Me gombot adhatunk hozz a foldalhoz annak rdekben, hogy


behvjuk a ShowMarketplace metdust, s lehetv tegyk, hogy a felhasznlk megvsroljk az alkalmazsunkat.
<phone:PhoneApplicationPage
x:Class="SilverlightTrialApplication.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;
assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;
assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/
blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/
markup-compatibility/2006"
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" Loaded="PhoneApplicationPage_Loaded">
<!--LayoutRoot is the root grid where all page content
is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and
page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0"
Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle"
Text="MY APPLICATION"
Style="{StaticResource PhoneTextNormalStyle}"/>

48

1.9. Prba-Windows Phone-alkalmazs ltrehozsa

<TextBlock x:Name="PageTitle" Text="page name"


Margin="9,-7,0,0"
Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1"
Margin="12,0,12,0">
<TextBlock Height="69" HorizontalAlignment="Left"
Margin="6,6,0,0" Name="lbMessage"
Text="" VerticalAlignment="Top"
Width="450" />
<Button Content="Buy Me" Height="72"
HorizontalAlignment="Left"
Margin="9,509,0,0" Name="btnBuy"
VerticalAlignment="Top" Width="441"
Click="btnBuy_Click" />
</Grid>
</Grid>
</phone:PhoneApplicationPage>
namespace SilverlightTrialApplication
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
#if DEBUG
Guide.SimulateTrialMode = true;
#endif
}
private void PhoneApplicationPage_Loaded(object sender,
RoutedEventArgs e)
{
if (Guide.IsTrialMode)
{
lbMessage.Text =
"The Application is in Trial Mode!";

49

1. fejezet: Alkalmazsfejleszts Windows Phone-ban

}
else
btnBuy.Visibility =
System.Windows.Visibility.Collapsed;
}
}
}

Amikor az alkalmazs nem Trial Mode-ban van, a Buy Me gombot a Visibility


tulajdonsg Collapsed rtkre val belltsa elrejti.

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.

1.22. bra. XNATrialApplication s SilverlightTrialApplication kimenetek


50

You might also like