Miskolci Egyetem Gépészmérnöki és Informatikai Kar Általános informatikai tanszék
Újságíró-alkalmazás fejlesztése Windows Phone-ra Szakdolgozat
Kovács Balázs János F3L7JG 3915 Tarcal, Ifjúsági Lakótelep 14/2.
Újságíró-alkalmazás fejlesztése Windows Phone-ra
Tartalomjegyzék 1.
Bevezetés ....................................................................................................................... 1
2.
Fejlesztői keretrendszer és eszközök bemutatása .......................................................... 2 2.1.
.NET keretrendszer [1] ........................................................................................... 2
2.1.1.
.NET keretrendszer általános bemutatása ........................................................ 2
2.1.2.
.NET Framework 4.0 ....................................................................................... 3
2.1.3.
.NET által támogatott nyelvek ......................................................................... 5
2.2.
Fejlesztői környezet ................................................................................................ 5
2.2.1. 2.3.
Visual Studio 2010 [4] ............................................................................................ 9
2.3.1.
Minden termékváltozatban megtalálható funkciók: ...................................... 10
2.3.2.
Visual Studio 2010 újdonságai ...................................................................... 10
2.3.3.
Fejlesztést segítő eszközök [5] ...................................................................... 11
2.3.4.
Sablonok ........................................................................................................ 14
2.3.5.
Felület áttekintése [11] .................................................................................. 15
2.3.6.
Rendszer követelmény [12] ........................................................................... 19
2.4.
Silverlight [13] ...................................................................................................... 20
2.4.1.
Verziók .......................................................................................................... 21
2.4.2.
Silverlight felépítése [14] .............................................................................. 22
2.4.3.
Rendszerkövetelmény [15] ............................................................................ 23
2.5.
3.
Történet [3] ...................................................................................................... 6
Windows Phone 7 platform [16] ........................................................................... 24
2.5.1.
A platform ..................................................................................................... 24
2.5.2.
Platform képességei ....................................................................................... 25
Fejlesztői dokumentáció .............................................................................................. 28 3.1.
Feladatspecifikáció ............................................................................................... 28
3.2.
Programterv .......................................................................................................... 29 I
Újságíró-alkalmazás fejlesztése Windows Phone-ra 3.3.
Alkalmazás belső felépítése .................................................................................. 30
3.3.1.
Model ............................................................................................................. 30
3.3.2.
ViewModel .................................................................................................... 31
3.4.
Alkalmazás külső felépítése .................................................................................. 35
3.5.
Tesztelés................................................................................................................ 37
4.
Felhasználói dokumentáció ......................................................................................... 38
5.
Továbbfejlesztési lehetőségek ..................................................................................... 42
6.
Összefoglalás ............................................................................................................... 43
7.
Summary...................................................................................................................... 44
8.
Irodalom jegyzék ......................................................................................................... 45
9.
Mellékletek .................................................................................................................. 47
II
Újságíró-alkalmazás fejlesztése Windows Phone-ra
1. Bevezetés A dolgozat témája a Windows Phone 7 alkalmazásfejlesztés bemutatása Silverlight alapokon. Mindezek előtt mielőtt belevágnánk a közepébe, szeretném egy kicsit az alapokat bemutatni. Pár oldalban szót ejtek majd a .NET keretrendszerekről, kiemelve a 4.0 Framework-öt. Továbbiakban a Visual Studio termékcsaládról lesz szó. Azon belül is, kis történeti áttekintés után, a Visual Studio 2010 szolgáltatásait és részeit emelem majd ki. Mindezek után magát a programozási technológiát, a Silverlight-ot ismertetném. Ebben nem csak a Windows Phone 7 operációs rendszerre lehet fejleszteni, hanem webes alkalmazásfejlesztésre is alkalmas. Ezen rendszerek bemutatása után, egy alkalmazás kiválasztásának, megtervezésének és fejlesztésének lépéseit fogom bemutatni. Mint a cím is mutatja, egy újságíróknak szánt riport készítésére alkalmas mobil alkalmazás lesz.
1
Újságíró-alkalmazás fejlesztése Windows Phone-ra
2. Fejlesztői keretrendszer és eszközök bemutatása 2.1. .NET keretrendszer [1] Ebben a fejezetben szeretném körüljárni, mit is takar pontosan a .NET keretrendszer (.NET Framework). A keretrendszert a Microsoft fejlesztette ki, ami átfogóan biztosítja a fejlesztők számára a gyors alkalmazásfejlesztést, platformfüggetlenséget és a hálózati átláthatóságot. A tényleges fejlesztést a kilencvenes évek végén a Next Generation Windows Service fedőnevű projektben kezdték meg, amelyből később a .NET alakult ki. 2000-ben az Intel és a Hewlett Packard C# nyelv szabványosításán dolgozott, amit 2001ben az ECMA (European Computer Manufacturers Association) el is fogadott. 2002. január 5-én kiadták hivatalosan a .NET Framework 1.0-ás verzióját. Pár éves csend után 2005. november 7-én adták ki a 2.0-ás végleges verzióját. Valójában ettől a verziótól kezdve lett felkapott a .NET. 2006. november 6-án megjelent a 3.0, rá egy évre 3.5-ös verzió. 2008 augusztusában a Microsoft a 3.5-ös verzióhoz kiadta az első szervizcsomagot. 2010-es év elején (2010.április 12.) kiadásra került a .NET Framework 4.0. Jelenleg a legfrissebb verzió az éven kiadott (2012) .NET keretrendszer 4.5-ös. 2.1.1. .NET keretrendszer általános bemutatása A .NET platform a Microsoft, a Hewlett Packard, az Intel és mások közreműködésével megfogalmazott CLI (Common Language Intrastructure) egy implementációja. A CLI egy szabály rendszer, ami maga is több részből áll: A CTS (Common Type System) a típusokat, azok memóriában való reprezentációját, egymással való interakcióját valósítja meg. A .NET minden nyelvben ugyan azt a típusrendszert használják, bár nyelvenként változó lehet a megnevezésük. A CLS (Common Language Specification) azokat a szabályokat tartalmazza, amelyek a CLI-vel kompatibilis nyelvekre vonatkoznak. A CLR (Common Language Runtime) a futási környezetett specifikálja. A CLI kompatibilis nyelveken megírt programok betöltéséért és végrehajtásáért felel.
2
Újságíró-alkalmazás fejlesztése Windows Phone-ra A CIL (Common Intermediate Language) úgynevezett köztes kód. CLI szabályrendszernek megfelelő nyelveken megírt programok erre a köztes nyelvre fordítódnak le. A JIT (Just-In-Time) fordító. A CIL kódra fordított .NET forrásokat fordítja gépi kódra, ami már processzoron tud futni. A CLI-t úgy tervezték, hogy akármilyen objektum-orientált programozási nyelvet kezeljen, de meg kell felelnie a CLI által meghatározott szabályrendszernek. 2.1.2. .NET Framework 4.0 A .NET keretrendszer 4.0 a keretrendszer korábbi verziói mellett, azokkal párhuzamosan tud
működni.
A
keretrendszer
korábbi
verzióin
fejlesztett
alkalmazások
az
alapértelmezetten megcélzott verzión fognak futni. A keretrendszer új szolgáltatásai [2] A CLR és BCL fejlesztése o Megnövelt teljesítmény mellett, a több magos processzorok hatékonyabb támogatása. o Új memóriába ágyazott fájl és numerikus típusok. o Egyszerűbb hibakeresés, például hibakeresés memóriaképekben, Watson mini-memóriaképek, vegyes módú hibakeresés 64 bites kódban és kódkivonatok. A Visual Basic és a C# nyelv továbbfejlesztett funkciói, egyebek között utasításlambdák, implicit sorfolytatás, dinamikus kiosztás és elnevezett/választható paraméterek Fejlesztések az adatelérés és - modellezés terén o Az Entitás-keretrendszer révén a fejlesztők .NET rendszerbeli objektumok és a nyelvbe integrált lekérdezések (Language Integrated Query – LINQ) használatával programozhatnak relációs adatbázisokhoz kapcsolódóan. A rendszer számos új funkciót tartalmaz, egyebek között a megőrzés figyelmen kívül hagyását és az egyszerű régi CLR-objektumok (POCO) támogatását, a külső kulcsos kapcsolatokat, a lusta betöltést, a tesztvezérelt fejlesztés támogatását, a modellben levő függvényeket és a LINQ rendszerbeli új operátorokat. A további funkciók közé tartozik a jobb n3
Újságíró-alkalmazás fejlesztése Windows Phone-ra rétegű támogatás, önmagukat nyomon követő entitásokkal, a testre szabható kódgenerálás T4 sablonok használatával, a modellel kezdett fejlesztés, a jobb fejlesztési élmény, a nagyobb teljesítmény és az entitáskészletek többessé tétele. o A WCF Data Services a .NET keretrendszer egyik összetevője, amely lehetővé
teszi
olyan
REST-alapú
szolgáltatások
és
alkalmazások
létrehozását, amelyek az Open Data Protocol (OData) használatával fednek fel és fogyasztanak adatokat a weben keresztül. A WCF Data Services rendszer is számos új funkciót tartalmaz, ilyen a BLOB-ok továbbfejlesztett támogatása, az adatkötés, a sorszámlálás, az adatcsatornák testre szabása, a leképezések és a kérelem feldolgozási sor tökéletesítése. A Microsoft Office 2010 rendszerrel való integráció lehetővé teszi a Microsoft Office SharePoint Server adatainak felfedését OData-adatcsatornaként, illetve ezen adatcsatorna elérését a WCF Data Services ügyfélkódtárának használatával. A Windows Presentation Foundation (WPF) továbbfejlesztett szolgáltatásai o A Windows 7 rendszerbeli többérintéses beviteli funkciók, a menüszalagos vezérlők és a tálca-kiterjesztési funkciók támogatása. o A Surface 2.0 SDK támogatása. o Új vezérlők üzleti alkalmazásokhoz, egyebek között diagramvezérlő, intelligens
szerkesztőmező,
adatrács
és
továbbá
az
adatközpontú
alkalmazásokat készítő fejlesztők által elérhető élmény tökéletesítéséhez szolgáló eszközök. o Jobb teljesítmény és méretezhetőség. o Vizuális fejlesztések a szövegmegjelenítés tisztasága, az elrendezési képpontigazítás, a honosítás és az együttműködő-képesség terén. A Windows Workflow (WF) rendszerben is számos fejlesztés található, amelyek lehetővé teszik a fejlesztők számára a munkafolyamatok jobb üzemeltetését és a velük
való
hatékonyabb
munkát.
Ezek
közé
tartozik
a
tökéletesített
tevékenységprogramozási modell, a jobb fejlesztői élmény, a folyamatábrák modellezésének új stílusa, a bővített tevékenységpaletta, a munkafolyamati szabályok integrációja és az új üzenetkorrelációs funkciók. A .NET keretrendszer 4.0, jelentős teljesítménynövekedést is nyújt a WF-alapú munkafolyamatok terén. A Windows Communication Foundation (WCF) fejlesztései – például a WCF Workflow Services támogatása – lehetővé teszik munkafolyamati programok 4
Újságíró-alkalmazás fejlesztése Windows Phone-ra készítését üzenetváltási tevékenységekkel és korrelációs támogatással. Továbbá a .NET-keretrendszer 4.0, a WCF rendszerbeli új funkciókat is kínál, ilyen a szolgáltatások felfedezése, az útválasztási szolgáltatás, a REST támogatása, a diagnosztikák és a megnövelt teljesítmény. Az innovatív, új, a párhuzamos programozást érintő szolgáltatások, például a párhuzamos hurkok támogatása, a Task Parallel Library (TPL) kódtár, a Parallel LINQ (PLINQ) rendszer és a koordinálási adatszerkezetek lehetővé teszik a fejlesztők számára a többmagos processzorok nyújtotta teljesítmény kihasználását. 2.1.3. .NET által támogatott nyelvek A .NET több mint 40 nyelvet támogat. Ezeket a CLI szabályrendszernek megfelelően változtatták és bővítették. Egy alkalmazás fejlesztés során több nyelvet is felhasználhatunk ebből a listából, és a közös nyelvi fordító segítségével mégis egy egész egységet fog a végén alkotni. Így aki nem szeretne új nyelvet elsajátítani, hanem már a régebbi megszokottnál maradna, annak csak az aktuális nyelv változtatásait, frissítéseit kell áttekintenie. Így könnyíti meg a fejlesztők munkáját a Microsoft. Beépített nyelvek közül néhány: C#,
Mono Visual Basic .NET,
Delphi .NET,
Prolog .NET,
F#,
Visual Basic .NET,
JScript,
Visual C# .NET,
Managed C++,
Visual C++ .NET,
Mono C#,
Visual J# .NET.
A .NET Framework telepítésével a BCL (Base Class Library) alapvető feladatok ellátására megfogalmazott osztály könyvtárak is települnek. Az összes többi könyvtár erre épül rá. Ezek a nyelvek ebből a BCL-ből dolgoznak, így egységesíthetők a nyelvek.
2.2. Fejlesztői környezet A legismertebb fejlesztői környezet, és ami bemutatásra is kerül a következőkben, az a Microsoft által tervezett és megvalósított Visual Studio termékcsalád. Természetesen e mellett van jó néhány fejlesztői környezet, ami szintén alkalmazható .NET keretrendszeres
5
Újságíró-alkalmazás fejlesztése Windows Phone-ra fejlesztésre. Elég akár egy sima szövegszerkesztő felület, és a fordító. Persze egy fejlesztői környezet funkciói és alap sémái nagyban segítik a fejlesztők munkáját. 2.2.1. Történet [3] Ebben a részben egy kicsit a fejlesztői környezet fejlődését szeretném bemutatni a teljesség igénye nélkül. Visual Studio 97 és 6.0 A Microsoft elkészített 1997-ben egy olyan környezetett, amelyben egybefogta a cég fejlesztő eszközeit, ami Visual Studio 97 névre hallgatott. Az akkoriban megtalálható eszközök közül a Visual Basic 5.0, a Visual C++ 5.0, a Visual FoxPro 5.0 és a Visual J++ 1.1 programokat tartalmazta. Később egy újabbal bővült, a Visual InterDev-el, amely dinamikusan létrehozott web helyek, és az Active Server Page (ASP) technológiát használta. A Visual Studio inkább ennek a csomagnak a neve volt, mivel a Visual Basic és a Visual FoxPro saját fejlesztői környezettel rendelkezett. 1998-ban megjelent a Visual Studio 6.0, ami túl sok újdonsággal nem szolgált, bár a kezdeti problémákat orvosolta. Ebben már 4 integrált fejlesztői környezet volt elérhető, mivel a Visual C++ saját környezetett kapott. Mivel a Java igen nagy előrehaladása a fejlesztőket arra ösztönözte, hogy egy nagyobb átalakítást végezzenek el, 1997 és 2002 között elképesztő nagy kutatói- és fejlesztői munkálatokat végeztek. Ennek eredményeképpen megszületett a .NET keretrendszer, ami egy új irányt adott a Visual Studio-nak. Visual Studio.NET 2002 és 2003 A .NET keretrendszer megjelenésével együtt bemutatta a Microsoft a C# programnyelvet is. Bejelentette ezzel egy időben a Visual Studio .NET fejlesztését is. Mindez 2000 júliusában, a Floridai Orlandóban történt. Alig két évvel később, 2002. februárjában fejeződött be a .NET keretrendszer 1.0 és a Visual Studio .NET fejlesztése. Ezen verziójú fejlesztői környezetben sikerült egybe integrálni a különböző fejlesztő eszközöket és programozási nyelveket is. Majdnem az összes nyelv új volt, az eszközkészletet átszabták és újra létrehozták. Ekkor nyílt lehetőség a Microsoft-nak, hogy egy környezetbe integrálja az összetevőket.
6
Újságíró-alkalmazás fejlesztése Windows Phone-ra A termékbe integrált nyelvkészletet a .NET keretrendszer hosszú távú támogatását szem előtt tartva négy nyelvet integrált a fejlesztőkörnyezetbe: Visual C#: Andres Hejlsberg, egy kiemelkedő dán szoftver mérnök által vezetett fejlesztő csapat készítette el ezt a programozási nyelvet. Szintaxisa a C nyelvhez hasonló, szerkezete viszont áttekinthetőbb. Visual Basic .NET: A korábbi Visual Basic-ben csak próbálgatták az objektumorientált programozás (OOP) elveit. A .NET tisztán objektumorientált jellege miatt fontos volt a Visual Basic megújítása. A nyelv iránti nagy érdeklődés miatt, a Microsoft létrehozta a teljes OOP és .NET keretrendszerrel együttműködő Visual Basic .NET nyelvet. Visual C++: Az előre törés ellenére még mindig akadt olyan terület, ahol a natív kódú fejlesztési szabályokat kellett alkalmazni, ezt a problémát Visual C++-al megoldották. Visual J#: Visual J++-t váltotta fel ez a nyelv. Ez még Java-szintaxist használt, de csak a .NET keretrendszer CLR futtatórendszerével kompatibilis alkalmazások fejlesztésére volt alkalmas. Ezzel befejezte a Microsoft a Java virtuális gépen futó programok fejlesztését. Az előző verzióra több mint egy évvel később követte a Visual Studio .NET 2003 a .NET keretrendszer 1.1-es verzióval együtt. Kritikus programhibát javítottak ki ebben a verzióban, hogy stabilabb legyen a rendszer. Néhány funkcióval bővült a környezet, mint például a mobilalkalmazás fejlesztés, az IPv6 protokoll támogatásával, valamint az ODBC- és az Oracle-adatbázisokban tárolt adatok elérésének támogatásával. A CLR is stabilabbá vált. Visual Studio 2005 A Visual Studio 2005-öt és a .NET keretrendszer 2.0-át 2005 novemberében adta ki a Microsoft. Ebben a verzióban alapvetően megváltoztak az eszközök és a programnyelvek egyaránt. A közös típusrendszerbe (CTS – Common Type System) belekerültek a generikus típusok, ezért az összes nyelvben elérhetővé kellett tenni, e mellett a keretrendszernek is kellett tudnia kezelni. A közös típusrendszer módosítása az ASP.NET és az ADO.NET keretrendszert is érintette.
7
Újságíró-alkalmazás fejlesztése Windows Phone-ra A korábbi verziókban a web fejlesztőknek egy nagy problémával kellet megbirkózniuk. Mivel számítógépeikre helyileg kellett feltelepíteni és futtatni az Internet Information Server
alkalmazást,
(IIS)
ennek
következtében
összeütközésbe
kerültek
a
rendszergazdákkal. A Visual Studio 2005 a helyzet feloldása érdekében egy fejlesztési célra szolgáló helyi webkiszolgálót telepített a helyi számítógépekre. Visual Studio 2008 A következő állomás a Visual Studio 2008, amely a .NET keretrendszer 3.5-s verziójával került kiadásra 2007. novemberében. Igaz hogy a futtatórendszere még mindig a 2.0-s verziószámot viseli, de újabb funkcióval bővült a keretrendszer. Ez a funkció a lekérdezések szintaxisát definiáló LINQ, amely szükségessé tette az eszközök módosítását. Mégis a legnépszerűbb funkciója a „multi-targetting” (verziófüggetlen fejlesztés). Ezáltal lehetővé vált, hogy a fejlesztők megadhassák a projektjeik cél keretrendszerét (.NET 2.0, .NET 3.0 vagy .NET 3.5), sőt akár a különböző keretrendszerekre fejlesztett projekteket vegyesen alkalmazzák. Az új LINQ szintaxis miatt változtatásokat kellett végrehajtani mind a Visual Basic, mind a C# nyelveken. A Visual Basic 9.0 az XML-literálisok támogatásával bővült, míg a C# 3.0 új inicializáló szintaxissal egészült ki. E mellett típuskövetkeztetést, névtelen típusokat, bővítő metódusokat és a lambda kifejezéseket adták hozzá mindkét nyelvhez. A .NET Framework 3.5 főbb szolgáltatásai mellett a Visual Studio a következő funkciókat és módosításokat tartalmaz: 3.5-ös verzióban három alaprendszer beépített támogatása frissült: o A
WPF
az
XAML-elrendezések
szerkesztésére
szolgáló
vizuális
tervezőeszközzel rendelkezik. o A WCF-et (Windows Communication Foundation) néhány azonnal
használható projekttípussal bővítették. o A WF (Workflow Foundation) a munkafolyamatok grafikus létrehozására
szolgáló vizuális tervezőeszközzel frissült. JavaScript-ben való fejlesztést már egy IntelliSense és egy hibakereső is segíti Webfejlesztők munkáját egy új XHTM/CSS szerkesztő segíti A Microsoft új technológiai megoldásokat is beépített a Visual Studio-ba: 8
Újságíró-alkalmazás fejlesztése Windows Phone-ra Az új fejlesztésű Silverlight technika egyike ezeknek. 2007 novemberében csak a Silverlight 1.0 került bele a keretrendszerbe, ami JavaScript nyelven alapul. A Silverlight 2.0 a .NET keretrendszer 3.0-s verziójával teljesen azonos CLR futtatórendszerrel rendelkezik, ennek köszönhetően bármely .NET nyelven írt alkalmazás futtatására alkalmas. Ezt a Silverlight verziót 2008 augusztusában adták ki. 2009 júliusában a Silverlight 3.0-s verzió jelent meg. Mindegyik verzió saját eszközrendszerrel rendelkezik, melyek az internetről letölthetőek. 2008. augusztusában jelent meg a .NET keretrendszer 3.5-s verzió SP1 szervizcsomagja, együtt a Visual Studio 2008 SP1-el. Új ADO.NET adatszolgáltatásokkal és tervező eszközökkel bővítette a keretrendszert, és a fejlesztői környezetet. ADO.NET Entity Framework: Ez a keretrendszer a fogalmi szintre emeli azt az absztrakciós szintet, amelyen a programozók az adatokkal dolgoznak. ADO.NET Data Services: Ez a szolgáltatás biztosítja az infrastruktúrát a dinamikus
internetes
adateléréshez.
Lehetővé
teszi
a
REST-alapú
adatszolgáltatásként történő megjelenítést. ASP.NET Dynamic Data: Funkciókban gazdag keretrendszer, amely a gyors adatvezérelt fejlesztést biztosítja a fejlesztőknek.
2.3. Visual Studio 2010 [4] A Microsoft a Visual Studio termékcsaládot a Windows platformra írt alkalmazások és üzleti megoldások fejlesztését legjobban elősegítő, legfejlettebb eszközének tervezte. Legszélesebb körben a 2010-es verzió terjedt el a felhasználók között. Néhány hónapja került kiadásra a 2012-es fejlesztés. A Visual Studio 2010 prototípuskészítő, modellező és vizuális tervező eszközök segítségével látványos és modern alkalmazások készíthetőek, az erőforrások teljes kiaknázásával. Elősegíti a leggyakrabban előforduló feladatok egyszerűsítését. Az eszközkészlet tartalmazza mindazt, ami szükséges a forráskód karbantartásához, hibakereséséhez és javításához, valamint a projektek kezeléséhez. A tesztelők és fejlesztők számára a fejlesztés kezdetétől elérhetőek az automatikus és manuális tesztelési lehetőségek.
9
Újságíró-alkalmazás fejlesztése Windows Phone-ra 2.3.1. Minden termékváltozatban megtalálható funkciók: Fejlesztési platform támogatása: Minden fontos platform elérhető egy közös eszközkészlettel. (pl.: Windows, web, Office, SharePoint és felhőfejlesztés) Team Foundation Server-integráció: Mindegyik kiadásban megtalálható ez a funkció, és a Visual Studio Team Explorer 2010, amely közvetlen hozzáférést biztosít a Team Foundation Server teljes funkciókészletéhez. (pl.: forráskód követés és munkaelemek kezelése, buildek automatikus elkészítése és tesztesetek kezelése, Team Portal, üzleti intelligencia (BI - Business Intelligence) és jelentéskészítés) Hibakeresés és diagnosztika: A hibakeresési és diagnosztikai eszközök által a fejlesztők hatékonyabb fejlesztésre képesek. Futás utáni hibakeresés, a többszálas alkalmazás hibakeresés a Parallel Stack és a Task ablak segítségével, valamint a vegyes üzemmódú hibakeresés 64 bites támogatása már minden fejlesztő számára elérhető, függetlenül az általa használt kiadástól. 2.3.2. Visual Studio 2010 újdonságai A felhőfejlesztés (Windows Azure) és a SharePoint-fejlesztés támogatása. A tesztvezérelt fejlesztés (TDD) már elérhető a Visual Studio termékcsaládban. A Consume-First-Declare-Later (használat előbb, deklarálás később) módszer alkalmazható kódírás közben. A kód szerkesztése jóval kényelmesebb lett: o A Visual Studio értelmezi a felhasználó által írt kódot, képes megjeleníteni a hívási hierarchiát, és kiemeli a hivatkozásokat. o A gyorskeresési funkció megkönnyíti a saját kódban való navigálást – nem csak az aktuális kódfájlban, hanem a teljes megoldásban is. Továbbfejlesztett IntelliSense technológia: már a karakterlánc részek is kereshetők, ami jól jöhet, ha a fejlesztő nem emlékszik a pontos tagnévre. Az új kódszerkesztő bővíthető, a bővítmények létrehozása pedig jelentős mértékben leegyszerűsödött. Az online Visual Studio Gallery közvetlenül elérhető a Visual Studio környezetében. Az Extension Manager (Kiterjesztés kezelő) segítségével 10
Újságíró-alkalmazás fejlesztése Windows Phone-ra böngészhet az online tartalomban (eszközök, vezérlőelemek és sablonok), és azonnal telepítheti a külső bővítményeket. Az új projekteket nem kötelező a számítógépen már telepített sablonok alapján létrehozni. Új projekt közvetlenül az online projektsablonokból is létrehozható a New Project (Új projekt) párbeszédpanel segítségével. A többmagos processzorokra optimalizált és a többszálas alkalmazásokat már teljes mértékben támogatja a Visual Studio. Az alkalmazások hibakeresése már abban az esetben is elvégezhető, ha több párhuzamos feladatot és szálat használnak. Az új eszközök és nézetek lehetővé teszik azoknak a részleteknek (versenyhelyzetek, blokkolások, együttműködés stb.) a keresését és előtérbe hozását, amelyek a korábbi verziókban láthatatlanok voltak. Az architektúra modellezése, tervezése és ellenőrzése ma már a Visual Studio szerves része. Nem csak a tervezők hasznosíthatják e funkciókat, hanem a csapattagok is, az egymás közötti, vagy az ügyfelekkel folytatott kommunikáció során. 2.3.3. Fejlesztést segítő eszközök [5] A Visual Studio 2010 tartalmaz verziótól függően olyan eszközöket, melyek segítik a fejlesztők munkáját a teljes alkalmazásfejlesztés során. A fejlesztő csoportok hatékonyabb munkavégzés mellett, költségeket is takaríthatnak meg a csoportmunka-funkciók által. E mellett az integrál tesztelési és hibakeresési eszközök mellett optimalizálhatják alkalmazásaikat. Következőkben ezeket az eszközökből szeretnék néhányat röviden bemutatni. Alkalmazások életciklus-kezelése (ALM) [6] Az alkalmazás életciklus kezelésére szolgáló eszközökkel a fejlesztői csoportok könnyebben megértik a fogyasztók igényeit és hatékonyabbá tehetik a tervezési, fejlesztési, tesztelési és telepítési fázisokat. Tervezheti és nyomon követheti (Plan and track) a projekteket. Ez által alakíthatják a folyamatokat és ellenőrizhetik azok minőségét, hogy a csapat és a vásárlók igényei összhangban legyenek
11
Újságíró-alkalmazás fejlesztése Windows Phone-ra Tervezési funkcionalitás révén, akár a meglévő eszközökből, akár a semmiből az architectura diagram segítségével határozhatják meg a kritikus információkat a csapattagok a rendszeren keresztül. Írás, egység teszt, hibakeresés, elemzés, és a profil az alkalmazásfejlesztéshez olyan eszközöket biztosít, melyek integrálják a többi alkalmazás-életciklus eszközt úgy, hogy ezek a fejlesztések előre segítik a projekt fejlesztését. Build segítségével a csapat ellenőrizni tudja, a minőséget és követelményeknek való megfelelést. Tesztek futtatásával, ezek lehetnek kézi, vagy automatizált tesztek, melyekkel ellenőrizhetjük alkalmazásunk optimális és helyes működését. Ilyen például a teljesítmény teszt és a stressz teszt is. Ezáltal a csapat meg tudja határozni a minőségi jellemzőket. Telepíteni lehet virtuális környezeteket a kifinomultabb fejlesztés és tesztelés érdekében. Team Foundation Server (TFS) [7] A Visual Studio Team Foundation Server, a központi együttműködési platform, a Visual Studio megoldása az alkalmazás-életciklus menedzsmentre. A TFS biztosítja az alapvető szolgáltatásokat, mint például a verziókövetés, feladat elem és a hibakeresés, automatikus build és adattárház. Jól működő jelentéskészítő eszközöket és kezelőfelületeket nyújt a történeti trend számára. Betekintést ad a projekt általános egészébe, valamint a valós idejű mérés időben figyelmeztet az esetleges problémák megjelenésekor. Ezen kívül az agilis tervezési eszközök és integrációjuk, a Microsoft Project és a Project Server segítségével tervezhető és irányítható a projekt fejlesztése. Egyes szervezeteknek engedély kell minden TFS futó példányhoz, bizonyos kivételektől eltekintve. Engedély kell minden TFS 2010 CAL felhasználónak vagy eszköznek, amelynek hozzáférése van a TFS-hez. Ha van egy felhasználónak hozzáférési engedélye, akkor megtekintheti és frissítheti adatait Web Access segítségével. Hibakeresés és diagnosztika [8] A hibakeresést az IntelliTrace segítségével könnyítette meg a Microsoft, de ez csak a Visual Studio 2010 Ultimate-ben érhető el. Ez a funkció átfogóbb képet ad az alkalmazásról, mint a hagyományos hibakereső. A hagyományos hibakereső megmutatja 12
Újságíró-alkalmazás fejlesztése Windows Phone-ra az alkalmazás jelenlegi állapotát, jelenlegi információkkal a végbement eseményekről. Ezen események alapján tudunk következtetni az alkalmazás állapotára. Ezeket az állapotokat azonban nehezen lehet utólag újra előállítani, ahhoz többszöri újraindítást kell végeznünk. IntelliTrace-el csökkenthetjük ezeket az újraindításokat, melyek szükségesek a hibakereséshez és az állapotok előállításához. Ezzel a szolgáltatással láthatjuk az aktuális eseményeket, állapotokat. Az IntelliTrace kiterjeszti és javítja a hagyományos hibakeresést. A háttérben működik, és rögzíti a hibakeresési információkat. Ha például egy korábbi állapotra vagyunk kíváncsiak, akkor az IntelliTrace-ben navigálhatunk a korábbi állapotok között, hogy lássuk a mostani alkalmazás változat hogyan is reagál rá. Betölthetjük és hibakeresést folytathatunk egy IntelliTrace fájlokban, ami egy .iTrace kiterjesztésű fájl. Alapértelmezetten be van állítva ez az eszköz, hogy akkor is keresse és eltárolja a hibákat, állapotokat. Ezeket akár mikor elő vehetjük és hibakeresést folytathatunk velük. Tesztelő eszközök [9] A Visual Studio Ultimat vagy Test Professional használatával, sokkal könnyebb a tesztelés az alkalmazás életciklusban. Ezeket a vizsgálati eszközöket integrálták a Team Foundation Server-ben, mely lehetővé teszi, hogy egy egyszer meghatározott vizsgálatot a csapat más projektjein is alkalmazzanak. Az Ultimat és a Test Professional 2010-et egy új alkalmazás, a Microsoft Test Manager segíti, mellyel meghatározhatjuk és kezelhetjük a vizsgálati terveket. Létrehozhatunk egy tesztelési tervet és a hozzá tartozó teszt vizsgálatokat, teszteseteket, és konfigurációkat. Amikor mindennel elkészültünk és készen állunk a tesztelésre, meg vannak a követelmények, vagy a felhasználó story-k, vagy a funkciók készen állnak, akkor futtathatjuk a teszteket a konfiguráció alapján. Ez lehetővé teszi, hogy mérjük a fejlődést a tesztelés alatt és jelentést küld a vizsgálatokról. Manuális teszteket is futtathatunk a Test Manager-ből, a Microsoft Teszt Runner-el. Futtathatunk automatikus teszteket is, amit a Microsoft előre elkészített. Ezen felül futtathatunk olyan automatizált teszteket, amelyek nem részei a tesztelési terveknek. Egyénileg is futtathatjuk őket, vagy vizsgálati kategóriák alapján is.
13
Újságíró-alkalmazás fejlesztése Windows Phone-ra Mivel a vizsgálati eszközök integrálva vannak a Visual Studio Ultimate-ben, menthetjük a vizsgálati eredményeket egy adatbázisba, melyből generálhatunk trend-eket és történeti jelentéseket. Ezeknek az adatait összevethetjük, például hány és milyen hibákat talált a tesztek alapján. Architektúra és modellezés [10] Modelleket hozhatunk létre a Visual Studio Ultimate segítségével, hogy kiderüljön, az alkalmazás megfelel-e, a felhasználói igényeknek. Különböző szintű részletességgel készíthetünk diagramokat, hogy lássuk, hogyan kapcsolódnak egymáshoz a tesztek és a fejlesztési tervek, mindezt az alkalmazás-életciklus részeként hozhatjuk létre. A modellek tevékenység támogatása: Felhasználói igények: Tisztázza a felhasználói igényeket, üzleti szabályokat és egyéb előírásokat. Segít biztosítani a következtetéseket az aktivitás, osztály és más UML diagram rajzok alapján. Kód megjelenítés: A kód vizuális reprezentációjának generálásával függőségi grafikonok és diagramok hozhatók létre. Ez által láthatók az objektumok, beállítások és a kapcsolatok az adatbázissal. Architektúra meghatározása: Nagyszabású rendszerek felépítése, ezek az UML komponens,
osztály-,
és
szekvencia
diagramjai
által
hozhatók
létre.
Meghatározhatjuk és létrehozhatjuk korlátozásokkal a kód komponensei közötti függőségeket megjelenítő réteg diagramot. Az alkalmazás részeit generálhatjuk vagy állíthatjuk UML, vagy a domainspecifikus nyelveken, és a design jobban reagál a változásokra és a követelmények variálására. Rendszerérvényesítés az előírásokkal és a tervezett design-nal: definiálhatunk beleegyezési
vizsgálatok vagy rendszer vizsgálatok
alapján követelmény
modelleket. Létrehozható egy olyan szoros kapcsolat a tesztek és a felhasználói igények között, amely segíti a rendszer könnyebb frissítését az igények változása esetén. 2.3.4. Sablonok A Visual Studio alapvető, előre elkészített sablonokkal is rendelkezik. A különböző platformoknak meg vannak a sajátságos sablon fajtáik, amiket elérünk a Visual Studio új 14
Újságíró-alkalmazás fejlesztése Windows Phone-ra projekt létrehozásakor. Ilyeneket akár mi magunk is előkészíthetünk a gyorsabb fejlesztés érdekében. Ezen felül még újabb sablonokat is tölthetünk le, hogy bővítsük lehetőségeinket. Néhány sablon fajta:
Silverlight for Windows Phone: o Windows Phone Application, o Windows Phone Phanorama Application, o Windows Phone Pivot Application, o Windows Phone Silverlight and XNA Application, o stb. 2.3.5. Felület áttekintése [11]
A Visual Studio termékcsalád által használt összes nyelv egy Integrált Fejlesztői Környezeten
(Integrated
Development
Environment
(IDE))
osztozik,
amely
a
következőkből áll: menüsor, szokásos eszköztár, különböző ablakok, szerkesztő felület, stb. Solution Explorer (1. ábra) A Solution Explorer-ben láthatjuk az aktuális projekthez tartozó fájlokat, mappákat. Itt
1. ábra Sloution Explorer
tudunk más alkotó elemeket hozzáadni a projekthez.
15
Újságíró-alkalmazás fejlesztése Windows Phone-ra A legfelső sorban a projekt neve látható. Ahogyan a fájlneveket is, ezt is bármikor változtathatjuk a fejlesztés során. A következőben egy Windows Phone 7 mobilalkalmazás alap fájlait láthatjuk. Fejlesztő és designer nézet A két nézetről már feljebb, a Fejlesztési képernyő részben esett szó. Mégis fontos ezeket kiemelni, mivel egy mobil alkalmazásfejlesztésnél ez a két nézet szétválik, mint a web alkalmazásfejlesztésnél is. A képen a felületi nézet és a felületleíró kód látható (2. ábra). . Itt kódban is létre tudjuk hozni az egyes megjelenítésre szánt alkotó elemeket (például: button-ök, textblock-ok, stb.). Ezeket akár a ToolBox-ból Drag and Drop (fogd és vidd) módszerrel is el tudjuk helyezni, a nézet megfelelő helyér Ezt a nézetfelosztást meg lehet változtatni vertikális vagy horizontális felosztású képernyőkre.
2. ábra Designer nézet
Ennek a kódnak van egy mögöttes kódja, ami a kód nézet lesz. Itt a fejlesztők dolgoznak, hogy pontosan mi is történjen egyes interakciók hatására a képernyőn (3. ábra). Ezen a képen egy Windows Phone 7 mobilalkalmazás főlapjának kezdeti háttérkódja látható.
16
Újságíró-alkalmazás fejlesztése Windows Phone-ra
4. ábra Kód nézet 3. ábra Mögöttes kód
ToolBox A ToolBox-ban (4. ábra) találhatóak azok az alapvető control-ok, amelyekből felépíthető egy webes vagy akár egy mobilalkalmazás is. Saját control-okat is definiálhatunk a
4. ábra ToolBox
meglévők alapján. Ezek között csak tulajdonságbeli, vagy tartalmi különbségek vannak. Ha a meglévő, vagy a saját elemeket behúzzuk az adott felületre, akkor a Properties ablakban megjelennek az adott elem tulajdonságai, amit meg is változtathatunk. Ezeknek az elemeknek nem csak a tulajdonságuk változtatható meg, de a mögöttes programban meghatározható az egyes eseményekre való reagálás is. Ez például lehet egy kattintás, vagy éppen csak rá fókuszálunk.
17
Újságíró-alkalmazás fejlesztése Windows Phone-ra Properties Ebben az ablakban az egyes control elemek tulajdonságai (Properties) és eseményei (Events) változtathatóak illetve generálhatóak (5. ábra). Ezek a tulajdonságok alapértelmezett értékekkel rendelkeznek. Ha ezeket megváltoztatjuk, akkor a design kódban ezek legenerálódnak a beállított értékkel. Ezen felül persze minden elemnek megvannak a sajátos tulajdonságai is.
5. ábra Properties és Events
Néhány tulajdonság:
Height (Magasság), Margin (Margó), Padding (Szegély és a tartalom közti térköz), Title (Felirat), Width (Szélesség), stb.
Az események listáját itt találhatjuk, ezek a háttér kódban generálódnának le, ha duplán rákattintunk, vagy ha már megírtuk az aktuális esemény háttér kódját, akkor a lenyíló listából ki is tudjuk választani.
18
Újságíró-alkalmazás fejlesztése Windows Phone-ra Server Explorer A
Server
Explorer
(6.
ábrán)
segítségével
megtekinthetjük
és
beállíthatjuk
adatkapcsolatainkat, adatbázis kapcsolatainkat, és rendszer erőforrásokat a kapcsolódott szerverekhez, melyek elérhetők a hálózaton. Új adatbázis kapcsolatokat tudunk létrehozni, tudjuk böngészni a kapcsolatban lévő adatbázisok tábláit és annak mezőit, ezeknek közben látjuk a tulajdonságait a Properties ablakban. Ezeket nem tudjuk módosítani, hiszen nincs hozzá jogunk.
6. ábra Server Explorer
Error List Az Error List (hibalista) (7. ábra) tartalmazza a kód írás közben keletkező szintaktikai hibákat vagy másból eredő hibák listáját. Egy-egy hibánál meghatározott a hiba leírása, hogy hol, melyik fájlban keletkezet a hiba. Pontosan melyik projektről van szó. Vannak ezek mellet a figyelmeztetések és az üzenetek is. Hibalista alapján tudjuk javítani hibáinkat.
7. ábra ábra Error Error List List 5.
2.3.6. Rendszer követelmény [12] A következő táblázatban a Visual Studio 2010 minimális rendszerkövetelményét láthatjuk a Microsoft ajánlásával (1. táblázat).
19
Újságíró-alkalmazás fejlesztése Windows Phone-ra Processzor
1,6 GHz vagy jobb.
Memória
1 GB (32 bit) vagy 2GB (64 bit) RAM.
Szabad
3 GB szabad lemezterület,
lemezterület
5400 RPM.
Operációs rendszer
Windows XP (x86) with Service Pack 3 – összes kiadása kivéve a Starter Edition, Windows Vista (x86 & x64) with Service Pack 2 – összes
kiadása kivéve a Starter Edition,
Windows 7 (x86 & x64),
Windows Server 2003 (x86 & x64) with Service Pack,2
Windows Server 2003 R2 (x86 & x64),
Windows Server 2008 (x86 & x64) with Service Pack,2
Windows Server 2008 R2 (x64).
Támogatott
32 bit (x86),
architektúrák
64 bit (x64).
Video
DirectX 9 kompatibilis videó kártya,
1024 x 768 pixel felbontás, vagy jobb. 1. táblázat Rendszer követelmény
2.4. Silverlight [13] Több meghatározás is létezik, hogy mi is az a Silverlight. Az egyik ilyen meghatározás: „A Silverlight egy olyan cross-browser, cross-platform böngésző plug-in, amely következő generációs médiaélményt nyújt és elősegíti a gazdag felhasználói felülettel rendelkező alkalmazások (RIA) fejlesztését.” Egy másik megközelítésben: „A Silverlight a .NET keretrendszer egy olyan cross-browser, cross platform implementációja, amely gazdag felhasználói felülettel rendelkező alkalmazások fejlesztésért teszi lehetővé, melyek lehetnek akár webesek, asztali, sőt mobil alkalmazások is.”
20
Újságíró-alkalmazás fejlesztése Windows Phone-ra Alapjában véve egy böngésző plug-in, ami ebből következik, hogy a kliens böngészőjében fut. Van arra is lehetőség, hogy böngészőn kívül, normális asztali alkalmazásként futassuk, ehhez az Out-Of-Browser szolgáltatás szükséges. A Silverlight nem csak Windows operációs rendszeren működik, hanem a többi platformon is elérhető. Nem csak a különböző platformokat támogatja, hanem a más böngészőket is, mint az Internet Explorer-t, a FireFox-ot, az Opera-t, a Chrome-ot és a Safari-t is. Az alábbi oldalon található egy táblázat, ami bemutatja melyik Silverlight verzió, melyik böngésző
esetén
működik:
http://en.wikipedia.org/wiki/Microsoft_Silverlight#Operating_system_and_web_browsers. Webes alkalmazások mellett, alkalmas még Windows Phone 7 operációs rendszerrel rendelkező mobiltelefonok alkalmazásainak fejlesztésére, az XNA mellett. 2.4.1. Verziók Kezdetben
más
névre
hallgatott
WPF/E,
vagyis
Windows
Presentation
Foundation/Everywhere. .Net 3.0-s verziójában találkozhattunk egy új megjelenítő alrendszerrel, amit a WPF-nek hívtak. Ez a vektorgrafikus rendszer annyira jól sikerült, hogy webes környezetben, böngészők alatt is elérhetővé tették. A WPF egy leszűkített változatát kaptuk így, ami a WPF/e lett. A bétaváltozat elkészültével más nevet adtak neki és ez lett a Silverlight. Ez történt 2007-ben. 1.0-ás változatban fő hangsúly a médiatámogatásra irányult, e miatt tartották a Flash vetélytársának. Ezt még kizárólag JavaScriptből lehetett elérni, így a .Net fejlesztők között nem lett elterjedt. E miatt készítették el az 1.1-es verziót, ami már támogatta a C# nyelvet. Pár hónapra erre, az 1.1 alfából lett a 2.0 béta, amelynél a .NET nyelvi integrációját célozták meg. Ezzel a .NET keretrendszer nyújtottal lehetőségek tömkelegével bővült az 1.0. Megjelentek a vezérlők, web szolgáltatások, adatmanipuláció, titkosítás, stb. 2009-ben már a 3.0-ás verziónál a Microsoft új koncepciót talált ki, mégpedig, hogy a fejlesztőktől várják, mire lenne szükségük, hogy könnyebben tudják végezni munkájukat. Felhasználók visszajelzései alapján olyan új szolgáltatásokkal bővült az új verzió, amely lehetőséget biztosít az üzleti alkalmazások fejlesztésére. Ilyen például a Navigáció, OutOf-Browser mód, .NET RIA Services.
21
Újságíró-alkalmazás fejlesztése Windows Phone-ra Több újítással bővült a 4.0, ami szintén a felhasználók véleményére támaszkodva fejlődött ki, amit a http://dotnet.uservoice.com oldalon oszthattak meg a fejlesztőkkel. Így bővítették a nyomtatás támogatásával, MVVM (Model View ViewModel) támogatása, MEF (Managed Extensibility Framework), a média terén a mikrofon és webkamera használattal és a H.264 codec-kel. E mellett még használható a teljes billentyűzet teljes képernyős módban, Out-Of-Browser módban futó alkalmazások COM hívásokat végezhetnek, fájl megnyitáshoz és mentéshez tartozó dialógus ablakok is megtalálhatók, és folytathatnám a sort. Összefoglalva elmondható a Silverlight 4.0-ról, hogy egy jól használható rendszerré nőtte ki magát. Ezt a verziót a Microsoft 2009. november 18-án jelentette be. A következő verzióban még több médiatámogatásra készítették fel a rendszert, mint például a perspektivikus 3D lecserélése teljes 3D támogatásra, GPU támogatás videó dekódolásnál, 64 bites böngésző használat, stb. A Silverlight 5 verzióját 2010. december 2án adták közkézre. 2.4.2. Silverlight felépítése [14] A Silverlight két fő részre osztható, valamint egy telepítő és frissítést végző komponensre. Ezek az alap megjelenítő réteg és a Silverlight .NET keretrendszer. Core presentation framework (alap megjelenítő réteg): Komponensek és szolgáltatások, amik a felhasználó felülethez kapcsolódnak, mint például a vezérlők, a média lejátszó, digitális jogok kezelése, az adatkötés lehetőségei. Idetartozik még az input eszközök és médiák kezelése is. .NET Framework for Silverlight (Silverlight .NET keretrendszer): .NET keretrendszer egy részét takarja, amely magában foglal komponenseket, könyvtárakat, beleértve adatintegrációt, hulladékgyűjtő mechanizmust, valamint egy átszabott CLR-t (Common Language Runtime). Így egy új pehelysúlyú (lightweight) CLR-t kapott. Installer and updater (Telepítő és automatikus frissítő rendszer): A telepítést és a frissítéseket szabályozza, ami nagyban egyszerűsíti a kezdő felhasználók számára a telepítést, a frissítésről nem is beszélve, ami automatikusan megtörténik. Mint a következő képen is látható (8. ábra) az alap megjelenítő rendszer és a Silverlight .NET keretrendszer között egy XAML nevezetű komponens teremti meg a kapcsolatot. E mellett a felületek leírására használatos. 22
Újságíró-alkalmazás fejlesztése Windows Phone-ra Említést kell még tenni a 8. ábra alján lévő Browser Host részről. Silverlight csak böngészőben futhat, ez azt eredményezi, hogy egyes műveletekhez van, míg másokhoz nincsen joga. Ezt a jelenséget sandbox-nak („homokozó”) nevezik. A homokozón belül, ami engedélyezett, azt megteheti, de azon kívül eléggé korlátozottak a lehetőségek.
8. ábra Silverlight architektúra
2.4.3. Rendszerkövetelmény [15] Minimum rendszerkövetelmény a Microsoft által meghatározva a következők: Windows operációs rendszer alatt: o 32 vagy 64 bites 1.6 GHz processzor vagy jobb, o 512 Mb RAM. Macintosh operációs rendszer alatt (Intel alapú): o Intel Core Duo 1.83 GHz processzor vagy jobb, o 512 Mb RAM. Silverlight 5-tel kompatibilis operációs rendszerek és böngészők a következő táblázatban figyelhetők meg (2. táblázat).
23
Operációs Internet Internet Újságíró-alkalmazás fejlesztése WindowsInternet Phone-ra Internet
Firefox
Safari
Chrome
Rendszerek
Explorer 9
Explorer 8
Explorer 7
Explorer 6
3.6+
4+
12+
Windows Vista
+
+
+
-
+
-
+
Windows 7
+
+
-
-
+
-
+
Windows 7 SP1
+
+
-
-
+
-
+
-
-
+
-
+
-
+
+
+
-
-
+
-
+
-
+
+
-
+
-
+
-
-
-
-
+
+
-
Windows Server 2008 SP2 Windows Server 2008 R2 SP1 Windows Server 2003, Windows XP SP2, SP3 Macintosh OS 10.5.7+ (intelbased)
2. táblázat Silverlight 5 kompatibilis operációs rendszerek és böngészők
2.5. Windows Phone 7 platform [16] Ebben a fejezetben, mint a címe is mutatja a Windows Phone 7 platformot fogom bemutatni. De mielőtt belekezdenék, egy pár szóban össze szeretném foglalni, hogy hogyan is alakult ki ez a platform. A Microsoft az elsők közt szerepelt, aki az okostelefonok megjelenésére reagálva, egy új mobil operációs rendszert fejlesztett ki Ez a rendszer a Windows Mobil volt, amit üzleti felhasználásra szántak, hogy az asztali gépünk szinte a zsebünkbe kerüljön. De sajnos a mai igényeknek, amit a piac elvár, nem tudott megfelelni. Ezért a Microsoft teljesen alapoktól indulva egy teljesen új rendszert dolgozott ki, amivel minden piacielvárásnak meg kívántak felelni. Így született meg az új mobil operációs rendszer, a Windows Phone. 2.5.1. A platform A Microsoft megpróbált egy teljesen új vonalat képviselni a piacon. Újszerű és letisztult megjelenéssel rukkoltak elő. Ezzel nem csak a felhasználókat lepte meg, de a készülék gyártókat is kihívás elé állította. A készülék gyártóknak ezért a Microsoft egy elég pontos specifikációt adott a hardver képességeiről. Így könnyítik meg azt a tényt, hogy nem kell különböző kijelző méretekre, különböző tulajdonságokkal bíró hardverekkel foglalkoznia a fejlesztőnek, csak és kizárólag a saját specifikációjában leírtaknak megfelelő eszközökre kell koncentrálniuk, kizárva a fregmentációt. 24
Újságíró-alkalmazás fejlesztése Windows Phone-ra Ezek a hardveres követelmények a következők: Fizikai gombok: Három különböző gombnak kell a készülékeken lenni, ami az Operációs rendszer és a navigációhoz elengedhetetlenek. o Vissza gomb (Back): Alkalmazáson belüli és futó taszkok közötti váltáshoz szükséges. o Kezdő oldal gomb (Home): Startképernyőre navigálást teszi lehetővé bárhonnan. o Kereső gomb (Search): A Bing kereső motort hozza fel, amiben kedvünkre keresgélhetünk. Kijelző: o 800 x 480 pixel felbontással kell legalább rendelkeznie. o Támogatnia kell a kapacitív és a multi-touch technológiát, utóbbinak négy pontos érintést kell tudnia megkülönböztetni. Hálózati jellemzők: o Mobil adathálózatok és Wi-Fi kezelését kell biztosítania. Memória: o Legalább 256 Mb operatív memóriával kell rendelkeznie. o 8 Gb-os flash memória szükséges az adatok tárolásához. Navigáció: o Assisted-GPS szükséges a műholdas navigáció miatt. Mozgásérzékelés: o Telefon mozgásának, döntésének és egyéb pozícionálásának követésére gyorsulásmérőt kell beépítenie. Opcionális eszközök: o Iránytű o Giroszkóp o Hátsó kamera o Előlapi kamera 2.5.2. Platform képességei Négy részből tevődik össze a platform: Futtatókörnyezet 25
Újságíró-alkalmazás fejlesztése Windows Phone-ra Integráció a felhővel Marketplace szolgáltatások Fejlesztőeszközök Ezek közül már tárgyalásra került a futtatókörnyezet és a fejlesztőeszközök egy része, ami a feljebb lévő fejezetekben találhatóak meg. Integráció a felhővel Alapjaiban véve a Windows Phone egy kliensoldali eszköz, ami limitált erőforrással, tudáshalmazzal és számításigénnyel bír. A felhőben ennek kiegészítésére folyamatosan futó szolgáltatások találhatóak, amik sokban kiegészítik az eszközt. Ezek a következőek: Értesítések: A mobil eszközöknél nagy kérdés az akkumulátor üzemideje és egyéb erőforrásainak korlátai. E kérdések miatt nem engedik meg, hogy párhuzamos alkalmazások sokaságai kommunikáljanak más szolgáltatásokkal és különböző komponensekkel. Ezért a Windows Phone-nál bevezetésre került az úgynevett értesítések (push notifications). Így a felhőben futó szolgáltatások üzeneteket küldhetnek a telefonok felé, ha új információ áll rendelkezésre. Ezek a lapkákon, vagy külön értesítésben érkezhetnek hozzánk. Térképszolgáltatások: Elérhetők még térképszolgáltatások és pozícionálás is. Ezt Wi-Fi és GPS adatokból, illetve cellainformációkból nyerik, a pontos meghatározáshoz. Közösségi hálózat: A Windows Phone nagy részét jelentik a közösségi hálózatok és az integrált élmény biztosítása az úgynevezett hub-okon keresztül. A telefon így szolgáltatások ezreihez fér hozzá, és ezekkel együttműködve gazdag és értékes információkat tud biztosítani a felhasználó részére. Xbox
Live
szolgáltatás:
Ezzel
a
szolgáltatással
nyomon
követhetjük
ismerőseinket, összehasonlíthatjuk saját és mások eredményeit, üzeneteket küldhetünk, vagy akár az otthoni Xboxunkat vezérelhetjük telefonunkkal. Marketplace szolgáltatásai A Marketplace egy hatalmas piactér, ahova a fejlesztők feltölthetik a kész alkalmazásaikat, ingyenes vagy épp fizetős formában, és innen értesíthetik a frissítésről azokat a felhasználókat, akik használják azt az alkalmazást. A felhasználóknak pedig egy piac, ahonnan letölthetnek különböző alkalmazásokat, akár ingyen akár fizetve érte. Ehhez 26
Újságíró-alkalmazás fejlesztése Windows Phone-ra természetesen a fejlesztőknek regisztrációra van szükségük. Emellett, mielőtt publikálásra kerülne, egy vizsgálaton kell még átesnie az alkalmazásunknak, ahol, ha problémát fedeznek fel benne, akkor egy e-mail formájában értesítést kapunk, hogy min is kellene javítanunk. Ez a hitelesítési procedúra a Microsoft által meghatározott szigorú tesztsorozat.
27
Újságíró-alkalmazás fejlesztése Windows Phone-ra
3.
Fejlesztői dokumentáció
A következő két fejezetben kimondottan egy konkrét alkalmazás fejlesztésének dokumentációját olvashatjuk. Mind a fejlesztők, mind a felhasználók részére készített dokumentum látható, ami egy alkalmazás fejlesztése során szükséges. Ezek mellett még megvizsgáljuk milyen konkrét lépések is vannak egy ilyen fejlesztés során.
3.1. Feladatspecifikáció Egy olyan alkalmazást tervezünk újságírók számára, amelyet egy helyszíni riport során könnyen és kényelmesen tudnak használni. Az alkalmazásnak elkülönítve kell tárolni a különböző események adatait. Ezeket az adatokat egy archív részben vissza is kell tudnunk olvasni. Új esemény felvételekor valamilyen módszerrel el kell tudnunk különíteni azt, ez vagy egy háttér adatbázisban vagy Isolated Storage-ban (elkülönített tárhely) történik, dátumozással. Cél, hogy az egyes eseményekhez képeket, videókat, hangfájlokat és megjegyzéseket lehessen hozzáfűzni. Különböző részekben valósítsuk meg ezeknek az adatoknak a létrehozásának és visszaolvasásának lehetőségeit. Kép fájl készítése esetén, ha elkészítettük a képet, utána a mentés egyből következzen. Egy eseményhez több kép is készíthető legyen. A képet és eseményt valamilyen módon össze kell kapcsolni. A kép fájltípusa legyen bmp kiterjesztésű. Videó fájl készítésekor, a videó felvétel leállítása után kerüljön mentésre az elkészített fájl. Egy eseményhez több videó is kapcsolódhat. A videó fájlokat is össze kell kapcsolni az eseményekkel. Ennek mentése mp4 formátumban történjen. Hasonló eljárás szükséges a hangfájlok elkészítése esetén. Ennél is több fájl tárolására legyen lehetőség és ezt az eseménnyel kössük össze. Megjegyzés írásakor mentést valósítsunk meg, természetesen több megjegyzést is lehessen hozzáfűzni az adott eseményhez. Ennek az összekapcsolását az eseménnyel tegyük meg. Mentés egy szöveges fájlban történjen, aminek kiterjesztése dat legyen.
28
Újságíró-alkalmazás fejlesztése Windows Phone-ra Az archívumban legyenek megjelenítve a különböző események egy listában, és kiválasztáskor szeparálva jelenjenek meg a különböző média tartalmak. Ezen belül tetszőleges módon valósítsuk meg a megjelenítést, és a lejátszást.
3.2. Programterv A Microsoft által tervezett szoftver fejlesztési minta alapján haladnék végig az alkalmazás fejlesztése során, ez pedig nem más, mint az MVVM, vagyis a Model View ViewModel (Modell Nézet Nézet-Modell). Érdemes majdnem hogy ebben a sorrendben is haladni a fejlesztés során, mert így meg tudjuk határozni a használni kívánt adatokat a modellben. Ez után a kinézetet, a látványt fel tudjuk építeni, amihez a háttér kód, amit a ViewModel-ben határozunk meg, adja majd a kellő üzletilogikát. Ennek értelmében minden alrésznek meglesz a saját Model-je, amit egy-egy osztály fog reprezentálni. Ebben a Model-ben a tárolandó adatok kapnak majd helyet, amiket a ViewModel-ben fel is fogunk használni. Mint feljebb említettem, a ViewModel-ben a háttér mechanizmust fogjuk megvalósítani, természetesen ezt is részenként. A kinézet erre ráépülve fogja a felhasználótól mindezt eltakarni, és remélhetőleg jó élményt biztosítani. Úgy gondolom, hogy ehhez az alkalmazáshoz elegendő egy névteret meghatározni a Model-ek
leírásához.
Ebben
belefoglalódnak
osztályonként
a
megjegyzéshez,
hangfelvételhez, képrögzítéshez szükséges adatok. Ha
ezzel
megvolnánk,
jöhet
a
kinézet
alapjainak
megtervezése.
Ahogy
a
feladatspecifikációban láthattuk, kell egy nyitó oldal, aminek tartalmaznia kell az egyes funkciókhoz vezető lehetőségeket. Vagyis, hogy új eseményt tudjunk létrehozni, vagy éppen az archívumból szeretnénk visszakeresni. Ha új bejegyzést szeretnénk létrehozni, akkor szükséges lesz egy szöveg bevitelre alkalmas kontroller, amiben megadhatjuk az új esemény címét. E mellett egy ugyan ilyen kontrollerre, ami az aktuális, vagy egy egyénileg megadott dátumot tartalmaz a minta alapján. Természetesen, míg ezeket nem adjuk meg, addig ne lehessen semmilyen adat létrehozására alkalmas funkciót használni. Az egyes funkciókat, ha megkívánja, akkor hozzunk létre neki egy új oldalt, és azon belül kezeljük le a hozzá tartozó funkciókat. Az archívum megtervezésénél figyelembe kell venni, hogy különböző események vannak, így először azok közül fog a felhasználó választani, és csak úgy kell a hozzá tartozó adatokat valamilyen formában listázni és reprezentálni.
29
Újságíró-alkalmazás fejlesztése Windows Phone-ra Ezek után, a kinézet mögé meg kell terveznünk az egyes funkciók általános osztályait, változóit és metódusait, amit egy-egy ViewModel fog tartalmazni. Ezek általánosan a mentéshez, betöltéshez és létrehozáshoz szükséges adattagok és függvények lesznek. Ez a rész fogja összekötni a Model-t és a View-t. Mivel Silverlight alapokon nyugszik az alkalmazás ezért a kinézet mögött lévő eseménykezelőket a ViewModel-lek és a funkcionalitás alapján építjük fel.
3.3. Alkalmazás belső felépítése Az alkalmazás belső felépítéséhez a Model-ek és a ViewModel-ek fognak tartozni. Ezt reprezentálja az 1. mellékletben látható osztály diagram is. A belső tárolási struktúrát Isolated Storage-ban valósítottam meg, amin belül a különböző eseményeket egy-egy mappa fogja jelenteni. Ezekben a mappákban tárolódnak a különböző elemek, ide írjuk, és innen töltjük vissza azokat. Silverlight-ban lehetőségünk van arra is, hogy kulcs-érték párokat tároljunk, és később értéküket visszaolvassunk. Ezt kihasználva, az éppen aktuális mappanevet itt eltároljuk és könnyedén a megfelelő helyen vissza tudjuk olvasni. E mellett még a különböző médiatartalmak névgenerálásához szükséges változókat is eltároljuk. 3.3.1. Model Az alkalmazás egy Models névtérben található Model.cs fájlban lévő modell osztályokra alapozza a főbb adatokat, konkrétan Jegyzet, Kep és Hang osztályokra. Ezek az osztályok tartalmazzák a tároláskor és a reprezentáláskor szükséges adatokat. A Jegyzet osztályban egy szöveg tárolására alkalmas változót hoztam létre, amelyet tulajdonságain keresztül tudunk lekérdezni és beállítani. A Kep osztályban egy BitmapImage objektumot hozunk létre, amit szintén tulajdonságain keresztül tudunk elérni. A Hang osztályban a bonyolult tárolás miatt, csak egy fájlnevet fogunk tárolni. Itt is a lekérdezés és a beállítás a tulajdonságán keresztül történik. Mindegyik osztályban egy PropertyChangedEventHandler hozunk létre, hogy meg tudjuk valósítani az adatkötés valamelyik módszerét.
30
Újságíró-alkalmazás fejlesztése Windows Phone-ra 3.3.2. ViewModel A ViewModel-eket a ViewModels névtérben találhatjuk. Minden egyes médiafajta elszeparálva egymástól, külön ViewModel osztályban van meghatározva. Ezek a JegyzetViewModel, a PhotoViewModel, a VideoViewModel és a VoiceViewModel osztályok. Itt határozzuk meg a bejegyzéshez tartozó médiatartalmak általános létrehozási, mentési és visszaolvasási algoritmusát. JegyzetViewModel Itt még egyszerű dolgunk van, hiszen sima szövegről van szó. Csak a szöveg mentéséről és visszatöltéséről kell gondoskodnunk. Erre a SaveText() és a LoadText() metódusokat használjuk. Természetesen felhasználjuk a Model-lek közül a Jegyzet osztályt, ezt példányosítva a szöveg tárolására alkalmas változójában tárolom el a bevitt szöveget, míg nem kerül mentésre. Ehhez szükségünk lesz az IsolatedStorageFile példány, ami meghatározza az alkalmazásunk elkülönített tárhelyét. A SaveText() metódus az Isolated Storage-ba való mentésről gondoskodik, ehhez bemenő értékeket adok meg, amik az elérési út, magát a szöveg és egy egész számot tartalmaz. Utóbbi a mentéskor szükséges különböző névgenerálásra szolgál. A szöveg mentéséhez létrehozzunk egy IsolatedStoregeFileStream, amivel megadjuk a fájl elérési útjával együtt, a fájl nevét is. Emellett meghatározzuk, hogy új fájlt hozzon létre írásra. Ezek után egy StreamWriter-rel beleírjuk a létrehozott fájlba a szöveget és lezárjuk. A függvény visszatérési értékkel nem rendelkezik. A LoadText() függvényünk pedig a visszatöltésről gondoskodik. Ehhez szükséges az elérési út, amit egy bemenő paraméteren keresztül megkapunk. Természetesen ehhez is szükséges a már deklarált IsolatedStorageFile példány, és vele együtt az IsolatedStoregeFileStream is. Utóbbinak a paraméterei annyiban változnak, hogy megnyitásra, és olvasásra használjuk a megadott fájlt. A kiolvasást egy StreamReaderrel valósítjuk meg. A kiolvasott szöveget a Jegyzet modellünknek adjuk át. Visszatérési értékként a visszaolvasott szöveget adja vissza. PhotoViewModel Ebben az osztályban a kép készítéséről, mentéséről és visszaolvasását teszem lehetővé. Az osztály konstruktorában beállítom az alkalmazás elkülönített tárhelye mellett még, az 31
Újságíró-alkalmazás fejlesztése Windows Phone-ra elérési utat, amit egy kulcs-érték párból olvasok vissza. Ezek mellett példányosítom a Photo modellünket, a kamera és kép inicializálásához szükséges elemeket. Ezek között a kamerához tartozó CaptureImageAvailable esemény bekövetkeztekor, a lekezelő handler-re mentjük le a képet a megfelelő helyre. Ezen belül határozzuk meg a névgenerálás
menetét.
Itt
is
meghatározzuk
az
elkülönített
tárhelyet,
és
az
IsolatedStorageFileStream–et. Ezen belül létrehozunk egy byte puffert, amibe eltároljuk a készített képet és egy while ciklusban átadjuk egy egész típusú változónak. A cikluson belül egy targetStream segítségével írjuk ki a tárolóba. Ezen kívül a kép visszaolvasásáról is kell gondolnunk, amit a LoadPhoto() metódussal valósítunk meg. Természetesen ennek is a bemeneti értéke egy elérési út, kimenete viszont egy BitmapImage típs lesz, ami a kiválasztott képünket fogja visszaadni. Ehhez szintén szükségünk van az IsolatedStorageFileStream–re byte tömböt határozunk meg, amibe visszaolvassuk a kiválasztott kép részleteit. Ezt a byte tömböt egy MemoryStream objektumnak át kell adni, aminek segítségével, vissza tudjuk állítani az eredeti képet úgy, hogy a Kep modellt példányosítva, annak a SetSource metódusának átadjuk a stream-et, és visszatérünk vele. Amikor végeztünk a kép(ek) elkészítésével, akkor utána gondoskodnunk kell a megfelelő változók felszabadításáról, amit a CamreaDispose metódus valósít meg. VideoViewModel Itt már egy kicsit bonyolultabb megoldás született. Kezdetben két konstruktorral rendelkezik az osztály. Egyik a felvételkor szükséges változókat inicializálja, köztük egy elérési utat és egy Rectangle objektumot, amiket bemenő változókon keresztül kapunk meg. A Rectangle egy olyan kontroller, amin keresztül meg tudjuk jeleníteni és felvételt tudunk készíteni. Ehhez szükséges ez a kontroller és a kamera összeköttetése. Emellett, ahogy eddig is létre kell hoznunk az IsolatedStorageFile objektumot, amivel meghatározzuk az alkalmazásunk tárhelyét, és a névgeneráláshoz szükséges változó lekérdezése és beállítását végezzük el még. A másik konstruktor a vissza töltéskór szükséges adattagok beállításáról gondoskodik. Bemenő értékként megkapja a megnyitandó fájl nevét és egy MediaElement-et, ami a lejátszáshoz szükséges megjelenítő kontroller. Így köthető össze a ViewModel és a View.
32
Újságíró-alkalmazás fejlesztése Windows Phone-ra A videó rögzítésére szükségünk van egy inicializáló metódusra, amiben deklaráljuk az előnézeti kép létrehozásához szükséges adattagok. Létrehozunk egy CaptureSource objektumot, ami biztosítja az összeköttetést a rögzítés és a rögzítő eszköz között. Ezen felül egy FileSink elemet is deklarálunk, ami a mentés elvégzését fogja megvalósítani. Ezután be kell állítanunk, hogy melyik kamerát is szeretnénk használni. Meg is vizsgáljuk ezt, hogy sikeresen létrejött, ha igen, akkor egy VideoBrush-t hozunk létre, és ennek egyik beállításához hozzárendeljük a CaptureSource–t. Hogy meg tudjuk jeleníteni az előnézetet a Rectangle-nek átadjuk a VideoBrush–t. Így rajzolódik ki, az előnézeti kép, ha elindítjuk a CaptureSource–t. Ezt az InitializeVideoRecorder() metódusban találjuk meg. A StartVideoPreview() metódusban valósítom meg a videó felvétel leállításkor, hogy újra az előnézeti kép rajzolódjon ki a kijelzőre. Ennek első lépései egy vizsgálat, hogy tényleg leállításra került e a felvétel, utána hasonló InitializeVideoRecorder() metódusban leírtakéhoz. A StartVideoRecording() metódushíváskor indítódik el a felvétel. Itt határozzuk meg a fájlnév generáláshoz szükséges változókat. Utána vizsgáljuk meg, hogy az előnézet elindult-e, és megvan-e az összeköttetés a meglévő kameránk és az alkalmazásunk között. Ha ezek megvannak, akkor az előnézeti képünket leállítjuk, és átadjuk ezt a FileSink példánynak. Ennek a példánynak az egyik tulajdonsága az IsolatedStorageFileName, aminek átadjuk a már meghatározott fájlnevet és ezen a néven menti le a felvet stream-et. Ha ez a feltétel nem teljesül, akkor egy következőre ugrunk, az pedig az előnézeti kép leállítását és a kamerát vizsgálja, ha ez teljesül, akkor elindítódik az előnézeti képünk. Ennek párja természetesen egy leállító metódus, ami a StopVideoRecording() metódus. Itt is az előzőekben leírt vizsgálaton átesve leállítjuk a CaptureSource–t, és a FileSink tulajdonságait kinullázzuk. Ezek után meghívjuk a StartVideoPreview() metódust. A lejátszáshoz szükséges metódusokat is itt határozzuk meg, amik a StartPlayback(), a StopPlayback() és a PausePlayback() metódusok. Ennek adattagjait a második konstruktorban határozzuk meg, ami nagyon fontos, mivel így tudjuk összeköttetésbe hozni a View-t és ViewModel-t.
33
Újságíró-alkalmazás fejlesztése Windows Phone-ra A StartPlayback() metódusban használjuk fel a MediaElement-et a videó megjelenítésére. Ebben a blokkban létrehozunk egy IsolatedStorageFileStream-et, aminek átadjuk a konstruktorból származó fájlnevet, és ezzel megnyitásra is kerül. A MediaElement-nek beállítjuk a forrását, úgy hogy ezt a stream-et átadjuk neki. Ezek után már csak el kell indítanunk. Ez az egész egy vizsgálaton belül van, hogy létre jött e már ez a stream, mert ha igen, akkor csak a lejátszást kell elindítanunk, ha nem akkor a feljebb leírtakon végig kell menni. A PausePlayback() és a StopPlayback() metódusok, annyiban térnek el, hogy az egyikben a MediaElement-et pillanat stoppoljuk, vagy teljesen leállítjuk. Ami közös a kettőben az a feltétel,hogy létrejön-e a MediaElement objektum. Ezek mellett még megtalálható az előzőekben említett felvételt és lejátszást megvalósító részek
adattagjainak
felszabadításáról
gondoskodó
metódusok,
amiket
a
DisposeVideoPlayer() és a DisposeVideoRecorder() valósít meg. VoiceViewModel A VoiceViewModel osztályon belül valósítódik meg a hangfelvétel és hanglejátszáshoz szükséges alapvető metódusok. Az osztály konstruktorán belül deklarálódnak a kellő adattagok, a mentés helye, a Hang modell példányosítása, és a mikrofon beállításai. Többek között egy BufferReady esemény, amit itt kötünk össze a lekezelő metódusával. A microphone_BufferReady metódusban kezeljük le a BufferReady eseményt, amiben meghatározzuk a puffert, hogy mibe is kell majd beleraknia a felvett hang. A felvétel elindításához és leállításához szükséges metódusok a SatartRecording() és a StopRecording(). Az elnevezésükből értelemszerűen következnek a funkcióik is. A felvétel elindításakor, először beállítjuk, hogy hány percnyi hanganyagot tudjon felvenni. Ezek után beállítjuk a puffer méretét, és végül elindítjuk a felvételt. A StopRecording() metódusban megvizsgáljuk, hogy elindult e a felvétel, ha igen akkor
leállítjuk.
Utána
a
puffer
kiírásra
kerül
az
izolált
tárhelyre,
az
IsolatedStorageFileStream segítségével. A visszaolvasás és lejátszást a ReadSound() és a PlaySound() metódusok teszik meg. Visszatöltéskor a fentiekből következően megint egy ugyan olyan típusú pufferba töltődik
34
Újságíró-alkalmazás fejlesztése Windows Phone-ra vissza a hanganyag és a lejátszást megvalósító metódusban egy SaundEffect típusú példánynak adódik át. Ennek a példánynak egyik metódusának hívásával játszódik le. Ehhez az osztályhoz szorosan kapcsolódik a XnaFrameworkDispatcherService osztály is, ami az alkalmazás indításával együtt elindul. Ebben az osztályban szimulálódik egy játék ciklus, amit az XNA Game Studio-nál normális implementáció. Ebben periodikusán hívódik meg a FrameworkDispatcher.Update(), amivel létrejön a ciklikusság a hangfelvételhez.
3.4. Alkalmazás külső felépítése Az alkalmazás külső felépítését a View-k valósítják meg, amik Silverlight esetén xaml fájlokból, vagyis felületleíró fájlból és a mögöttes eseménykezelőkből áll. Ezekben a mögöttes kódokban példányosítjuk és használjuk az előzőekben megírt kódokat Média tartalmak előállítása Az egész alkalmazásunk a MainPage-el kezdődik, ami egyben a központi oldalunk is lesz. Mivel innen tudunk új eseményt létrehozni, és a hozzá tartozó tartalmakat elkészíteni. Ezen kívül az archívumot tudjuk megnyitni, ahonnan a régebbi eseményeket vissza tudjuk keresni. Új címe megadása után, lehetőségünk van a különböző tartalmak létrehozására. Ha megadtunk egy új címet és a fókuszt már nem a szövegdobozon van, akkor létrejön egy kulcs érték pár, ami tárolni fogja az elérési utat a médiák mentése számara. Kezdjük is el a jegyzetnél. Ennél a gombnál megvizsgáljuk, hogy megtörtént-e az új cím megadása, ha igen, akkor egy következő feltétel megvizsgálja, hogy létezik-e már az a mappa, ha nem akkor létrehozza, ha viszont igen, akkor tovább navigálunk a jegyzet oldalra. A jegyzet oldalon egy TextBox és egy ApplicationBar-on lévő mentés gomb fog feltűnni. Szöveg bevitele esetén, erre a gombra kattintva lementődik a szövegünk. A gomb
eseménykezelőjében
generáljuk
a
fájlnevet,
és
a
JegyzetViewModel
példányosítása után, a megfelelő metódust meghívjuk, hogy megtörténjen a mentés. Következő a képkészítés. A kép feliratú gombra kattintva ugyan az a vizsgálati sor zajlik le mint az előző gomb esetén, és itt a Photo oldalra fogunk átlépni. Amit látni fogunk az oldalon, az egy VideoBrush elnevezésű elem, és szintén az ApplicationBar-on
35
Újságíró-alkalmazás fejlesztése Windows Phone-ra elhelyezet exponáló gombunk. A VideoBrush keresztül fogjuk látni az előnézetet, és az exponáló gombra kattintva megtörténik a kép elkészítése és mentése is egyben, felhasználva a már elkészített PhotoViewModel-ünket és annak metódusait. A hangfelvétel különbözik a többi megvalósítástól. Itt is hasonló képen lezajlanak a vizsgálatok,
annyi
különbséggel,
hogy
nem
történik
navigáció,
hanem
az
ApplicationBar-unk fog majd megjelenni. Ezen két gomb látható, egy a felvételhez és annak leállításához. Itt a MainPage-en példányosítjuk a VoiceViewModel-ünket. Ennek a modellnek a két metódusát hozzákötjük a megfelelő gombhoz. Más médiaelem gombjára kattintva ez az ApplicationBar el fog tűnni. Végül a videó felvételkészítés jön. Ennél is, mint mindeddig a szokásos vizsgálatok és létrehozások megtörténnek. Navigáció után a videó felvétel oldalára érkezünk, a Video oldalra. Az oldal konstruktorában példányosításra kerül a VideoViewModelünk és meg is hívódik az inicializáló metódusunk. Ezen kívül beállítódik az ApplicationBar gombjainak engedélyezése. A megfelelő gombokhoz hozzápárosítjuk a már létrehozott metódusokat, és értelemszerűen beállítjuk a gombok engedélyeit. Archívum Az archívum gomb lenyomására, átnavigálunk az Archivum oldalra, amin az eddig elkészített események listája fog megjelenni egy ListBox kontrollerben. A lista egy elemére való kattintás után, átnavigálunk egy FileList oldalra, amin egy Pivot kontrolban külön-külön fogjuk megjeleníteni egy-egy PivotItem-ben, az eseméynhez tatozó fájlokat. A megjelenítés minden esetben egy ListBox-ban történik. Az egyes listákban való kiválasztás következtére átnavigálunk a tartalomnak megfelelő megjelenítő oldalra, ez alól kivétel a hangfelvételek listája. De először kezdjük ismét a jegyzetekkel. Ahogy az előbb említettem egy listában fog megjelenni az eseményhez tartozó jegyzetek, és a listában történő elem kiválasztósra átnavigálunk a JegyzetLook oldalra, ahol meg is jelenítődik egyből a kiválasztott jegyzetünk. A háttérkódban példányosításra kerül a JegyzetViewModle, aminek segítségével történik a megjelenítés. Itt csak olvasásra van lehetőségünk. Visszatérés a listákhoz, a hardveres back gombbal lehetséges.
36
Újságíró-alkalmazás fejlesztése Windows Phone-ra Következő a képek listája. Ennél is hasonló képen a kiválasztás utáni navigáció történik, a PhotoLook
oldalra.
Itt
a
PhotoViewModel-t
példányosítjuk
és
megfelelő
metódushívásra, meg is tudjuk jeleníteni a kiválasztott képet. Elérkeztünk a hangok listájához, ami eltér az eddigi sémától, mert itt a listában való kiválasztásra nem történik átnavigálás. A kijelző alján egy gomb látható a lejátszás elkezdésére, amit ha megnyomunk a tetszőleges hangfájl kiválasztása után, lejátszásra kerül. Ennél segítségünkre van a VoiceViewModel-ünk. Utolsó ként a videók listája jön, amivel visszatérünk a jól megszokott sémánkhoz, vagyis egy videó kiválasztásakor átnavigálunk a VideoLook oldalunkra. Itt a videó lejátszásához szükséges MediaElment kontrolunk és három ApplicationBar-on lévő gombunk látható. A megjelenítést segíti a VideoViewModel-ünk példánya, amit a második konstruktorral példányosítunk. A három gombunk a lejátszás, a pillanatstop és a leállítás, ezek mind meg vannak határozva a ViewModel-ünkben. Ezeket a metódusokat bekötve helyesen készen is vagyunk a lejátszóval.
3.5. Tesztelés Mindezek megvalósítása után, és természetesen közben is folyamatosan teszteltem az alkalmazást. Így apróbb hibák is felbukkantak, mint például rossz névgenerálás, vagy éppen egy elfelejtett metódus megírása. Nagy problémát jelentett a névgeneráláshoz szükséges sorszámok eltárolása elnavigálás esetén. Mivel, ha a felhasználó újabb tartalmat akarna létrehozni a megkezdet eseményhez, akkor ne íródjon felül a meglévő. Ezt az Isolated Storage-ban kulcs érték párokkal oldottam meg. Sajnálatos módon, fizikai eszközön nem tudtam tesztelni az alkalmazást, kizárólag csak emulátoron. De valószínűsítem, hogy fizikai eszközön is jól működne.
37
Újságíró-alkalmazás fejlesztése Windows Phone-ra
4.
Felhasználói dokumentáció
Ebben a részben az alkalmazás felhasználóinak szeretnék egy kis áttekintést nyújtani az alkalmazás használatának lehetőségeiről és módjáról. Ezt lépésről lépésre egy példa eseményen bemutatva. Kezdjük is az alkalmazás elindítása után, mikor betöltődött az alkalmazásunk, megjelenik a kezdőoldalunk (9. ábra). Először is egy címet kell megadnunk az eseményünknek, amit ha nem teszünk meg, felugró ablakok figyelmeztetnek, hogy ezt ne feledjük el. Ameddig
9. ábra Kezdőoldal
ezt nem adjuk meg, nem tudunk továbblépni a további tartalom megadásához. Ha megadtunk egy címet és az nem üres mező, akkor onnantól tovább tudunk lépni. Érdemes olyan címet választani, ami jellemzi az eseményt. Először nézzük meg a jegyzet létrehozásának menetét, amit a kezdőoldalon látható Jegyzet gombra kattintva meg is tehetünk. Ekkor átnavigál egy másik oldalra (10. ábra) az alkalmazás, ahol egy szövegdobozt láthatunk, amire kattintva megadhatjuk a kigondolt szöveget. A kijelző alján látható egy sávban egyetlen gomb, ami a mentésre szolgál. Rákattintva elmentődik a jegyzetünk és egyben vissza is navigál minket a kezdő oldalra, ahol vagy még jegyzetet, vagy éppen más fájlt generálhatunk.
38
Újságíró-alkalmazás fejlesztése Windows Phone-ra
10. ábra Jegyzet
Következőként nézzük meg a kép elkészítését. Kezdő oldalon a Kép feliratú gombra kattintva ismét átnavigálunk egy másik oldalra (11. ábra). Az alább látható képen sajnos, csak az emulátorról készített pillanatkép látható, így nagy élvezetet ez nem nyújt, de a
11. ábra Képkészítés
leírás érthetőségét nem rontja. Amit a kijelzőn látunk az a valóságban majd a kamera által látott tér lesz. Itt is a kép elkészítésére az alsó sávban található gombra kattintva készül el a kívánt kép. Ebben az esetben visszanavigálás nem történik (ezt majd a hardveres vissza gombbal tehetjük meg), mivel több kép elkészítésére nyújtunk lehetőséget. A hangfelvételnél már egy kicsit másabb az eljárás. Itt nem navigálunk át másik oldalra, hanem csak az alsó sávban megjelenik két gomb (12. ábra). Az egyik láthatóan nincs is letiltva, ez lesz a felvétel gomb. Lenyomásakor elindul a hangfelvétel, és ilyenkor tiltásra kerül és a Hang gombban megjelenik egy „Felvétel” felírat. A másik gomb felvétel 39
Újságíró-alkalmazás fejlesztése Windows Phone-ra
12. ábra Hangfelvétel
elindítása esetén természetesen engedélyezésre kerül, mivel azzal fogjuk majd leállítani a felvételt. Utoljára a videó felvétel maradt, amit a Videó feliratú gombra kattintva ismételten elnavigál minket az alkalmazás a megfelelő oldalra (13. ábra). Itt szintén az emulátoron megszokott kockát látjuk. A felvétel elindításához és leállításához szükséges gombok az
13. ábra Videó felvétel
alsó sávban kaptak szintén helyet. Hasonló képen, mint a hangfelvételnél itt is először a felvétel gomb van engedélyezve, miután elindítottuk a felvételt a leállításhoz szükséges gomb lesz engedélyezet, a másik tiltva. Itt sem navigál vissza leállítás esetén az alkalmazás, hanem több videó felvételét tesszük lehetővé.
40
Újságíró-alkalmazás fejlesztése Windows Phone-ra Végül elérkeztünk az archívumhoz. A kezdő oldalon a legalsó gombra kattintva elnavigálunk az archívum oldalra, ahol szépen felsorolva láthatjuk a már elkészített eseményeket (14. ábra). A listában szereplő valamelyik sort kiválasztva és rákattintva átnavigálunk az eseményhez tartozó fájlokhoz. Először a jegyzetek listáját látjuk (15. ábra)
14. ábra Archívum eseménylistája
15. ábra Jegyzetek listája
majd meg. Listák között a kijelzőn vízszintes irányban történő újmozdulattal tudunk váltani. Az egyes listákban szintén a tetszőleges sorra kattintva vagy megjelenik a megfelelő tartalom. Ez alól kivétel a hangok listája, mert itt a tetszőleges hangfájlra rákattintva kiválasztjuk lent található gombok közül a „Play” (Lejátszás) feliratú gombra kattintva meghallgathatjuk a felvételt. Természetesen ezt le is pillanat stoppolhatjuk lejátszás közben. Visszanavigálás itt is a hardveres gombbal történik a kívánt helyre, vagy éppen ki is léphetünk az alkalmazásból ennek segítségével.
41
Újságíró-alkalmazás fejlesztése Windows Phone-ra
5.
Továbbfejlesztési lehetőségek
Az alkalmazás tovább fejlesztésére olyan lehetőségek nyílnak, mint például az adatmegosztás. Ez alatt azt értem, hogy a tetszőleges eseménynek a fájlait feltölthetnénk a felhőbe. Akár még a felhőben futó alkalmazás ezeket feldolgozva közzé is tehetné az egyes hírportálokon, vagy éppen a sajátunkon is. De akár visszafele is működhet, hogy értesítést kaphatna a felhasználó egy éppen akkor történt fontos eseményről, ami eddig nem volt várható. Megvalósítható lenne még az alkalmazásba integrálni a Live ID-t, ami azonosítást tesz lehetővé. Ezzel együtt, ha rendelkezünk Hotmail-es e-mail címmel, integrálva a rendszerbe ezen keresztül is küldhetünk és fogadhatunk adatok. Nem is beszélve e mellett a Gmail és a Facebook lehetőségeiről. Utóbbin megoszthatnánk könnyen és egyszerűen az éppen pár perce elkészült riportjainkat. E mellett még be lehetne iktatni a GPS koordinátás meghatározást is, hogy könnyebb lehessen bármilyen rendszernek felismernie hol is készültek éppen az adott eseményhez tartozó fájlok. Ezt az információt feltöltve a felhőbe, létrehozhatunk olyan rendszert is, ami értesítést küld egy frissen történt eseményről a legközelebb lévő felhasználóknak. Akár új funkciókkal is bővíthetnénk az alkalmazást, mint például útvonaltervezés, éppen kilométer díj kiszámolás, kulcsszó keresés, vagy éppen néhány rendezési módszer. Végül, ami még egy nagyobb fejlesztés lenne, ezt az egész alkalmazást megvalósítani Windows 8-ra, ami már nem lenne egy bonyolult dolog. Sok lehetőség nyílik egy komplett alkalmazás megvalósításához, és valószínű, hogy nem tudtam felsorolni, az összes lehetőséget, ami nyitva áll.
42
Újságíró-alkalmazás fejlesztése Windows Phone-ra
6.
Összefoglalás
A szakdolgozat írása közben, leginkább az alkalmazás fejlesztésének kezdeteinél voltak problémáim, hogy hogyan is fogjak hozzá. Kettő próbálkozás után, a harmadiknál eldöntöttem, hogy megpróbálom az alkalmazásomat az MVVM (Model View ViewModel) modell alapján fejleszteni. Eleinte túl bonyolultnak tűnt, de ahogy belekóstoltam, sikerült valamilyen szinten megtapasztalnom, hogy egy ilyesfajta alkalmazás fejlesztő modell milyen előnyökkel rendelkezik. Mégpedig a könnyű továbbfejlesztésben rejlik ez. Könnyen kiegészíthetővé, módosíthatóvá teszi alkalmazásainkat. E mellett a Visual Studio eddig nem ismert részeit is sikeresen felfedeztem a bemutatás és az alkalmazás fejlesztése során. Bár biztosan van olyan része, amit még nem sikerült használnom. Természetesen e mellett könnyű fejlesztést biztosított végig, míg az alkalmazást fejlesztésével foglalkoztam. Új tapasztalataim közzé sorolnám még, hogy ha valamilyen problémával szembeütközünk bármilyen programozási feladat során, biztosan találunk valami féle segítséget a világhálón. Valamilyen leírásban, vagy éppen valamelyik fórumon, de akár az én példámon alapulva a Microsoft honlapján is. Bőséges tárházat biztosít az egyes osztályok és funkcióik leírására, akár példával együtt. És a fejlesztő eszközeiről még nem is esett szó. Az újságíró alkalmazás fejlesztése során nagy ismeretanyagra sikerült szert tennem, többek között egy komplett alkalmazás fejlesztésével járó problémákba. Az alkalmazás sikeres befejezésével,
elkészült
egy újságírók számára könnyen kezelhető alkalmazás.
Természetesen tovább fejlesztésre szükség van, mivel ebben csak az alap funkciókat tudtam megvalósítani. A szakdolgozat és az alkalmazás megírása után, merem ajánlani azok számára a fejlesztőkörnyezet és a Silverlight technológia megismerését, akik érdeklődnek a web- és mobil alkalmazásfejlesztés iránt. Egyszerű, átlátható és könnyű akár bonyolultabb alkalmazást is létrehozni ezek segítségével.
43
Újságíró-alkalmazás fejlesztése Windows Phone-ra
7.
Summary
The first problem I had on writing my thesis, was the starting process at the application developement. After trying some other methods, that didn’t suceed, I resolved to try developing my application on the MVVM (Model View VewModel) model. It seemed to be complicated for the first time, but I learned its benefits during the developing process. For example, this model makes easier to expand, or change things in applications. After all, I managed to learn new things from Visual Studio, while I developed, and represented my application. Surely, it has some parts, what I didn’t get to know. Although, this developement environment lets us develop in an easy way. Speaking about other experiences I had, if we meet a problem during the developing process, we surely find some solution on the Internet. On tutorials, IT-based forums, or, learning from my example, on the Official Web Page of Microsoft. It provides lots of description about the classes, and its functions. And I didn’t mention its developing devices. Developing a journalist application, lets me to gain a big base of knowledge. For instance, I got to know, what kind of problems can come up during a whole developing process. With this successful finish, I made an application, that can be operated easily by jourmalists. Certainly, it needs some more improvements, because this application can only work out the basic functions. After writing this thesis, and the application, I really recommend working with this developing enviroment, and the Silverlight, for those, who are interested in web- and mobile application developing systems. It makes really easy to create even a difficult application with it.
44
Újságíró-alkalmazás fejlesztése Windows Phone-ra
8.
Irodalom jegyzék
[1] Reither István, C# jegyzet, devPortal, 2010 [2] Microsoft .NET Framework 4.0, http://www.microsoft.com/downloads/huhu/details.aspx?familyid=9cfb2d51-5ff4-4491-b0e5-b386f32c0992 [3][4] devPortal Visual Studio Története, https://devportal.hu/blogs/novakistvan/pages/HistoryOfVisualStudio.aspx [5] Microsoft Visual Studio 2010, http://www.microsoft.com/hun/visualstudio/termekek/2010/ultimate/ [6]
MSDN
Visual
Studio
Application
Lifecycle
Management,
http://msdn.microsoft.com/en-us/library/fda2bad5 [7] MSDN Visual Studio Team Foundation Server, http://msdn.microsoft.com/enus/library/fda2bad5.aspx [8]
MSDN
Debugging
with
IntelliTrace,
http://msdn.microsoft.com/en-
us/library/dd264915 [9] MSDN Testing the Application, http://msdn.microsoft.com/en-us/library/ms182409 [10] MSDN Testing the Application, http://msdn.microsoft.com/en-us/library/57b85fsc [11] MSDN Integrated Development Environment, http://msdn.microsoft.com/enus/library/ms165088.aspx [12] Miscrosoft Visual Studio rendszerkövetelmény, http://www.microsoft.com/hun/visualstudio/termekek/2010/ultimate/ [13] Árvai Zoltán, Csala Péter, Fár Attila Gergő, Kopacz Botond, Novák István, Reiter István, Tóth László, Silverlight 4 A technológia, és ami mögötte van, Budapest, 2011 [14] Silverlight felépítése, http://msdn.microsoft.com/enus/library/bb404713%28v=vs.95%29.aspx [15] Microsoft Silverlight 5 rendszerkövetelmény, http://www.microsoft.com/getsilverlight/Get-Started/Install/Default.aspx 45
Újságíró-alkalmazás fejlesztése Windows Phone-ra [16] Árvai Zoltán, Fár Attila Gergő, Farkas Bálint, Fülöp Dávid, Komjáthy Szabolcs, Turóczy Attila, Valvárt András, Windows Phone fejlesztés lépésről lépésre, Budapest, 2012
46
Újságíró-alkalmazás fejlesztése Windows Phone-ra
9.
Mellékletek 1. melléklet
47