Sei sulla pagina 1di 80

UNIVERSITA DEGLI STUDI DI TRIESTE

FACOLTA DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica

Tesi di Laurea

PROGETTAZIONE E SVILUPPO DI UN MIDDLEWARE DI GEOREFERENZIAZIONE PER WINDOWS PHONE 7

Laureando Aldi Rama

Relatore Chiar.mo Prof. Maurizio Fermeglia

Anno Accademico 2010-2011

We are excited about the new Windows Phone 7 Series as it will establish a brand new user experience for our customers. Its simplicity will enable easy access to the mobile Internet and offer easy access to the growing number of Deutsche Telekom mobile services. Therefore, Windows Phone 7 Series is another step in our journey for connected life and work.

Michael Hagspihl Senior Vice President, Terminal Management Deutsche Telekom AG

Indice
Indice delle figure........................................................................................................... 4 Introduzione .......................................................................................................................... 6 Overview sulla construzione di questa tesi........................................................................... 11 Capitolo 1 Classificazione delle strategie architteturiali .................................................... 14 1.1 Introduzione ......................................................... Errore. Il segnalibro non definito. 1.2 Overview sull hardware ....................................... Errore. Il segnalibro non definito. 1.3 I servizi ............................................................... Errore. Il segnalibro non definito. 1.4 Gli eventi ............................................................. Errore. Il segnalibro non definito. Capitolo 2 Programmazione dei servizi di localizzazione ............................................. 3429 2.1 GeocoordinateWatcher ....................................... Errore. Il segnalibro non definito. 2.2 Uttilizzo dei servizzi di loczalizzazione ................. Errore. Il segnalibro non definito. 2.3 Display i data GPS...41. 2.2 Tracciare un indirizzio su una mappa Bing Maps ...................................................... 46 Capitolo 3 Model-View-ViewModel applicato al progetto..................................................60 3.1 Introduzione sul modello M-V-VMapplicato al progetto ..Errore. Il segnalibro non definito. 3.2 Libreria datti......................................................... Errore. Il segnalibro non definito. Capitolo 4 Overview Progetto Inserimento dati............. Errore. Il segnalibro non definito. 4.1 Intro .................................................................... Errore. Il segnalibro non definito. 4.2 UseCaes.............................................................. Errore. Il segnalibro non definito. Conclusioni ......................................................................................................................... 78 Ringraziamenti79 Bibliografia .......................................................................................................................... 80

Indice delle figure


Figura 1: Windows Phone 7 ----------------------------------- Errore. Il segnalibro non definito. Figura 2: Accessor----------------------------------------------- Errore. Il segnalibro non definito. Figura 2: Screenshot dal progetto--------------------------------------------------------------------------18. Figura 4: Progetto svilupando in Expression Blend------ Errore. Il segnalibro non definito. Figura 5: Progetto svilupando in Visual Studio ----------- Errore. Il segnalibro non definito. Figura 6: Il ciclo di vita del progetto ------------------------- Errore. Il segnalibro non definito. Figura 7: Servizio GeoCoordinate --------------------------- Errore. Il segnalibro non definito. Figura 8: Servizi sul progetto---------------------------------- Errore. Il segnalibro non definito. Figura 9: Visualizzazione della locazione ------------------ Errore. Il segnalibro non definito. Figura 10:Bing ---------------------------------------------------- Errore. Il segnalibro non definito. Figura 11: MVVM ------------------------------------------------ Errore. Il segnalibro non definito. Figura 12: Applicazione MVVM nel progetto -------------- Errore. Il segnalibro non definito. Figura 13: Classi del database ------------------------------- Errore. Il segnalibro non definito. Figura 14: Screenshot - indicazioni -------------------------- Errore. Il segnalibro non definito. Figura 15: Use Case -------------------------------------------- Errore. Il segnalibro non definito. Figura 16: Screenshot progetto aiutante ------------------- Errore. Il segnalibro non definito. Figura 17: Use Case 2 ----------------------------------------- Errore. Il segnalibro non definito. Figura 18: Website---------------------------------------------------------------------------------------------76.

Introduzione

uesta tesi consiste sulla progettazione e programmazione di un applicazione in grado di facilitare la nostra vita.Un programma semplice da usare e molto intuitivo. Il fatto che ogniuno di noi puo portare in tasca senza nessun problemo un smart phone ormai una realta (apparete il costo). Le sue dimensioni hanno aumentato il suo merchato e il
7

suo campo di utilizio. Il suo faccile utilizio il suo punto cruciale. Dotatti di tanti sensor (Wi-Fi , Camera , Accelometro,Vibrazione,FmRadio,Push Notification) questo dispositivo ti lascia anche un ampio gama dove puoi programmare. Prendendo spunto dai problemi che si afrontano quando si parte per un viaggio , questo applicazione si spera di diventare lamico migliore di tutti noi mentre viaggiamo. Questo applicazione sar in grado ,usando il sensore di locazione, di trovare la posizione corrente del viaggiatore e guidarlo su tutta la strada fin alla fine del suo viaggio.Ma non questo il suo punto di forza. Questo applicazione pensato di venire in contro proprio nei momenti piu difficili che si affrontano mentre si viaggia. Pensate per un attimo che vi trovate in mezzo alla stradda e la vostra machina puo fare solo pochi kilometri prima che il suo carburante arriva alla fine. Pensate anche che siete in un paese dove non conoscete la lingua. Pensate che avete dei problemi con la vostra machina e non sapete neanche dove vi trovate,se ce un mecchanico li vicino oppure no.Pensate se siete molti stanchi e non pottete piu guidare ma vi serve un posto sicuro per parcheggiare. Disegnatto proprio per questi casi questo applicazione riesce individuiare la vostra locazione, individuiare il punto di interese piu vicino possibile e disegnarvi la mappa fin alla destinazione. Lutilizio dei dervizi bing ha fatto la progettazione di questo programma molto piu semplice.La strada da percorrere si puo visualizare sia trammite la mappa che utilizzando il satelite. Bassato su un database (usato come dbms sqlServer) da dove si prelevano i dati questo applicazione utilizza i servizi per estrare i dati e per comunicare col database. Per trovare il punto piu viciono questi servizi sono in grado di calcolare la distanza (stradale) dal punto corrente fin alla destinazione e scegliere propio quello piu vicino alla locazione corrente. La struttura del progetto construito a moduli. Facile ed intuitivo. Facile per aggiungere altri moduli (componenti) ed intuitivo per essere letto.

Oltre ai obiettivi presentati precedentemente un altro obietivo importante di questa tesi e proprio quello di dare un aiuto a tutti i programmatori che pensano di cominciare a programare i windows phone 7. Una presentazione sull collegamento di SQL Server con i servici e poi la cattura di questi servizi dal windows phone 7. Inoltre questo progetto presentato nella forma di una

tesi puo essere visto (e mi farebbe molto piacere) come un spunto per tanti altri studenti , che possono portare questo progetto in un altro stato(aggiungendo altri moduli, altri servizi etc), aggungendo altre funzionalit, farlo piu richio nel suo contenuto e farlo piu utile per tutti i quelli che sarano interesati.

Nella programmazione di questa tesi sono statti tenutti presenti i seguenti principi. Pulito, leggero, aperto, veloce Anche se questo non si limita ad alcuni aspetti dell'interfaccia, possibile applicare questo principio facendo in modo che l'applicazione non ingombra di icone e immagini e che qualsiasi azione che l'utente si veloce e reattivo. Solo perch schermi sui telefoni cellulari sono diventati pi grandi negli ultimi due anni, ci non significa che si possono imballare ulteriori informazioni su una singola schermata. Ci rende il contenuto difficile leggere e difficile da navigare. Costruire una interfaccia pulita e leggera che consente di visualizzare solo l'importante e informazioni rilevanti per l'utente. Questo richieder i caratteri pi grandi e pi chiara, che dove ricchi tipografia diventa importante. L'introduzione del touch screen portato con s una necessit di aptico, o almeno reattivo, feedback. Se si immagina di toccare l'acqua in un bicchiere o in uno stagno, si pu immediatamente vedere l'acqua ripple di partenza da cui in primo luogo toccato l'acqua. Feedback istantaneo, come ad esempio la modifica delle colore di sfondo o una leggera vibrazione del dispositivo,d l'impressione che l'applicazione vivo e in attesa di istruzioni per l'utente. Si noter che il movimento costruito nella piattaforma core. Il Start costituita da piastrelle che si aggiornano dinamicamente e rispondere a essere toccato. Transitions forniscono indicatori visivi per l'utente non solo di dove stanno andando, ma dove sono venuti da. L'uso di animazione e altri effetti visivi che utilizzano il movimento essenziale per costruire per Windows Phone. All'interno di Windows Phone 7 il touch screen capacitivo e altri sensori permettono di controllare gesti accelerazione hardware animazioni e transizioni che esaltano l'applicazione. Hardware e caratteristiche del software si fondono insieme per offrire un'esperienza utente unificata.

Generazioni di applicazioni in tutti i tipi di sistemi informatici hanno adottato un approccio windowin g in cui il confine permette all'utente di controllare la finestra. SuWindows Phone, non vi alcuna chrome! Non esiste un confine sulla finestra, sui controlli, o anche sui contenuti. Chrome prende estate prezioso sullo schermo e per quello che, per dimostrare che un pezzo di contenuto terminata e la prossima cominciata. Se questo il caso, utilizzareil contenuto stesso per indicare dove tali transizioni. Ad esempio, quando si dispone di immagini adiacenti, invece di separarle di alcuni pixel, semplicemente sfumare il bordo d'uscita di un'immagine in modo che sia chiaro dove inizia la seconda immagine.

La tesi contiene i seguenti capitoli:

Capitolo 1 Classificazione delle strategie architteturiali Si presenter una classificazione delle strategie architetturali che che sono utilizzati per lo svilupo di questo tesi. Si descrive il windows phone 7 compressi tutti i suoi sensori che sono programmati in questa tesi.

Capitolo 2 Utilizzo di servizi di localizzazione In questo capitolo vengono presentati le tecnologie usate per questo progetto per il servizio di localizzazione (mischiatto con 200 grammi di codice estrapolato dal progetto).

Capitolo 3 Model-View-ViewModel applicato al progetto , Anche in questo capitolo vengono presentate una delle tecnologie cruciale per lo svilupto della tesi (mischiato di nuovo col 200 grammi di codice estrapolato dal progetto).

Capitolo 4 Progetto aiutante , In questo capitolo viene riportato un progetto aiutante che viene usate per linserimento sull database delle strutture

11

Conclusioni
In questa parte si far un riassunto per capire se gli obiettivi prefissati sono stati raggiunti e i requisiti che erano stati individuati sono stati soddisfatti. Inoltre si elencheranno eventuali sviluppi futuri per migliorare le prestazioni e altri ambiti desiderati.

13

Capitolo 1

Classificazione delle strategie architteturiali

Microsoft Windows Phone un grande telefono consumatore perch ha tutte le caratteristiche a cui gli utenti sono abituati con l'iPhone di Apple e Androidpowered smartphone, come il Motorola Droid e HTC Incredible. Queste caratteristiche includono multitouch, una bella interfaccia utente (UI) che implementa un design nuovo e moderno, Microsoft ha chiamato Metro, servizi

di social networking come Facebook, e il supporto per i pi popolari account di posta elettronica, come Yahoo, Hotmail, Google e AOL, o, se sei un utente aziendale, Microsoft Exchange. Eccezionalmente, le navi telefono con una versione di Microsoft Office che possibile utilizzare per leggere, modificare, salvare e sincronizzare i file di Word, fogli di calcolo Excel e formati di Office, che lo rende un telefono ideale per chi utilizza Office a casa o in ufficio. Windows Phonepu anche l'integrazione con Xbox LIVE, che lo rende la scelta ideale per i giocatori. Microsoft Windows Phone utilizza il software Zune per sincronizzare le applicazioni installate, immagini, musica, ed eseguire il backup e aggiornamenti del sistema operativo flash. Come sviluppatore, si puo anche utilizzare Zune in combinazione con Visual Studio per eseguire il debug delle applicazioni su un dispositivo reale. Microsoft introduce anche il concetto di hub con il Windows Phone: People hub: in cui gli utenti sono in grado di memorizzare tutti i loro contatti e connessioni di social networking, hub musicale in cui i consumatori possono ascoltare, scaricare e acquistare musica, e App hub, noto anche come il Market-place, che si saranno pi interessati, dal momento che pubblicher l'applicazione creata. Avere un telefono che un successo presso i consumatori importante perch il mercato consumer dove le maggiori opportunit per le applicazioni che si scrivono si trovano. Una delle grandi cose a proposito di Windows Phone che Microsoft impone le specifiche hardware del telefono produttore, il che rende facile per sviluppare un'applicazione, senza preoccuparsi di scrivere speciale codici per i dispositivi specifici. Per qualsiasi futura versione del telefono, si ha la garanzia che il applicazione che si scrive oggi lavorer indipendentemente dalla marca del telefono.

1. 1 Windows Phone Specifiche hardware


Sapere cosa incluso nelle specifiche hardware per Windows Phone di Microsoft aiuta a prepararsi per le esigenze particolari dei progetti che si cercare. Tabella 1-1 sono elencati i requisiti hardware minimi requisiti
15

di qualsiasi produttore Windows Phone deve soddisfare, e include anche suggerimenti su come possono avere un impatto sviluppatori .

1.2 Windows Phone Application Platform

Microsoft non ha inventato i nuovi linguaggi o quadri per la piattaforma applicativa Windows Phone. L'azienda semplicemente adattato le sue strutture esistenti. Questo significa che siamo in grado di programmare utilizzando C # con .NET Framework. . NET fornisce una comune libreria di classi di base che ogni programmatore Microsoft .NET sar familiari, in particolare supporto per il multithreading, XML, LINQ, collezioni, eventi, dati, eccezioni, IO, modello di servizio, networking, il testo, la posizione, la riflessione, la globalizzazione, risorse, autonomia, sicurezza, e la diagnostica. Sulla cima del nucleo. NET Framework, la piattaforma Windows Phone applicazione costituita da due grandi quadri: Silverlight e XNA. Potrai utilizzare Silverlight principalmente per applicazioni aziendali e semplice 2D giochi. Silverlight utilizza l'Extensible Application Markup Language (XAML) che markup dichiarativo linguaggio per la creazione dell'interfaccia utente convincente. Microsoft ha messo a disposizione (per noi futuri svilupatori) anche una grande flessibilit nella creazione di UI per Windows Phone utilizzando strumenti familiari come Adobe Illustrator, Photoshop eMicrosoft Expression Design per creare vector-based UI che pu essere facilmente esportati in XAML. XNA utilizzato principalmente per la creazione di giochi, e il quadro dotato di un motore di gioco che ti permette di creare loop-based giochi eanche fornisce un motore 3D, che consente di creare giochi 3D.

1.3 Silverlight per Windows Phone


La cosa interessante che Silverlight utilizzato nella tecnologia web che il browser plug-in che consente l'applicazione Internet ricca di contenuti, proprio come la tecnologia Flash. Silverlight offre con esperienza sandboxed, e la limitazione di Silverlight rispetto al operativo sottostante sistema chiaramente borderline. All'interno di una applicazione Silverlight, non possibile accedere a qualsiasi operativo nativo se non attraverso sistemi API fornite, se del caso. Questa architettura di Silverligh trende molto interessante sicurezza-saggio per essere utilizzato in Windows Phone, perch Windows Phone fornisce la stessa restrizione di solo fornendo le API agli sviluppatori e limitando l'accesso al sistema operativo nativo. Inoltre utilizza Silverlight XAML, che pu essere utilizzato per dichiarare la grafica vettoriale e creare animazioni. Chiunque sia familiare con le
17

applicazioni basate su vettori, come AdobeIllustrator e Microsoft Expression Design, possono facilmente creare elementi ad alto impatto visivo invettoriale e pu essere esportati in XAML. Questo significa che i progettisti hanno il pieno controllo sul layout, look and feel, e le attivit grafiche, rendendo Silverlight una scelta estremamente potente per la creazione di applicazioni orientate al consumatore. anche XAML fornisce una potente funzionalit di associazione dati ai controlli che lo rendono idealeper la creazione di business oriented applicazioni.

1.4 XNA per Windows Phone


Come Silverlight, XNA non una nuova tecnologia. XNA utilizzato nella creazione di giochi Xbox, utilizzando il codice gestito. Si tratta di una scelta naturale per la creazione di giochi dal momento che Windows Phone l'integrazione di Xbox LIVE, consentendo XNA based Giochi Xbox per essere facilmente inviato verso Windows Phone. L'unica cosa che gli sviluppatori di giochi Xbox devono preoccupare la risoluzione dello schermo, che pu essere facilmente regolata e fissata. XNA fornisce un quadro ricco perfetto per gli sviluppi del gioco, come un motore ciclo di gioco, 2D e 3D motori, e la capacit di gestire le risorse del gioco come i modelli, trame, sprite, texture, effetti, terreni, e animazioni. possibile scaricare gli strumenti necessari per lo sviluppo di applicazioni Windows Phone da http://create.msdn.com/enus/home/getting_started V. Anche su questa pagina introduttiva, si trovano ricca documentazione e tutorial (che non sono statti fondamentali per il sviluto di questo progetto). Includi anche il download del design dell'interfaccia utente e interazione Guida alla comprendere le linee della metropolitana di progettazione che Microsoft incoraggial'utilizzo in via di sviluppo applicazioni.

Visual studio

Per la progettazione e la programmazione di questo progetto (tesi) utilizato Visual Studio Ultimate comunque se non si dispone di una versione a pagamento di Visual Studio 2010 sul computer di sviluppo, il strumento di sviluppo che stato scaricato da Microsoft installer una versione gratuita di Visual Studio 2010 Express per Windows Phone come mostrato nella Figura sottostante. Visual Studio assolutamente necessario perch pu essere usato per progettare, eseguire il debug, creare progetti, package e generare automaticamente manifesti dei pacchetti. Essa include anche un emulatore di telefono su cui testare i risultati del vostro lavoro.

Expression Blend

Avrete bisogno di Expression Blend, se si desidera sviluppare applicazioni convincenti utilizzando Silverlight per Windows Phone come mostrato nella Figura sottostante. Tipicamente Expression Blend viene utilizzato dai progettisti, e molti dei Funzionalit di Expression Blend sono simili a Adobe Illustrator, Photoshop, oExpression Design. Anche da Expression Blend possibile importare qualsiasi Illustrator, Photoshop e file, e se si utilizza Expression Design, possibile esportare file di design Expression direttamente in un file XAML.

19

Expression Blend fornisce anche un modo per creare sequenze di animazione. Sebbene sia possibile ottenere in la creazione di animazioni in Visual Studio utilizzando XAML, sarebbe molto difficile scrivere complesso codice XAML per rappresentare grafiche complesse o sequenze di animazione. E 'meglio lasciaregrafici complessi e animazioni per Expression Blend

Windows Phone Emulator

L'emulatore Windows Phone,come si vede nella figura,che integrato in Visual Studio simula una vera e propria dispositivo. Tuttavia, ci sono cose che non puoi fare nell'emulatore, come testare l'accelerometro, GPS, bussola, radio FM, SMS, e-mail, chiamate telefono, l'elenco contatti, macchina fotografica, ed altre caratteristiche che richiedono un dispositivo fisico.

Vi , tuttavia, una tecnica chiamata Extensions reattivi, che sara in grado di utilizzare per simulare il feed di dati ci si pu aspettare su un telefono reale.Ad esempio, imparerete come, con estensioni reattivi, possibile simulare l'accelerometro e le letture GPS in modo da poter lavorare con l'emulatore senza la necessit del dispositivo.

Cloud Service

Lavorare con un'applicazione Windows Phone che richiede il salvataggio dei dati in un database una cosa difficile.Il primo grande problema che non sai quanto sia popolare la vostra applicazione sar,e se diventa popolare, si potrebbe trovare improvvisamente milioni di utenti che utilizzanol'applicazione e il salvataggio dei dati al suo banca dati a una velocit che richiedono un livello enterprise soluzione. Non solo database che avrebbe bisogno di preoccupare anche necessario considerare il servizio web in grado di fornire API perla vostra applicazione per salvare la Poich le applicazioni database di Windows Phone non possibile collegare direttamente al database.
21

Questo dove il cloud Microsoft Azure entra nella vostra soluzione. Microsoft Azurefornisce Windows Azure service per i servizi che implementano (WCF, Windows service) e SQLAzure per il database che ti permette di scalare infinitamente come la domanda cresce pi grande. Ci sono anche Bing Maps servizi che possibile utilizzare liberamente. Bing Maps gratuito solo se si sviluppo di un'applicazione Windows Phone. Insieme con i servizi Bing Maps, Microsoftoffre Bing Maps controlli di Silverlight che possibile utilizzare in Windows Phone.

Metro Design Microsoft si rivolge Windows Phone 7 verso professionisti impegnati, e per fornire UI convincente, Microsoft si avvicin con un design Metro. Design Metro deriva dal settore dei trasporti tipografia e design grafici, dove i professionisti impegnati costantemente la scansione e andare, e per questo motivo, Design Metro pone un forte accento sul design semplice e pulito. Design Metro seguire cinque principi. Primo principio accento sul pulito, veloce e leggero, aperto, per eliminare disordine, e la tipografia, i consumatori possono essere utilizzare il telefono cellulare per leggere email, SMS, Facebook, e Twitter, mentre in viaggio. Il secondo principio della progettazione Metro pone l'accento sui contenuti, dove la premessa il design deve marciare verso presentazione del contenuto. Il terzo principio si concentra su seamless integrazione di hardware e software. Il quarto principio pone l'accento sui gesti, dove il design consente un mondo di classe l'esperienza utente multitouch. Infine, il concetto di design Metro si concentra su un applicazione che soulful e vivo, in cui vengono presentate le informazioni che conta di pi per l'utente in modo che sia facilmente accessibile con un semplice clic del tocco. Potete saperne di pi sul design Metro scaricando il documento fornito da Microsoft all'indirizzo http://go.microsoft.com/fwlink/?LinkID=183218

Application Development Life Cycle

Comprendere il ciclo di vita dell'applicazione vi aiuter a capire ci che necessario preparare molto pi approfondita. Figura sottosstante illustra una alto livello vista del ciclo di vita di un'applicazione.

Come sviluppatore, si inizier presso l'Hub App registrazione con il tuo Windows Live ID (se lo crea non avete uno). Una volta firmato il App Hub, possibile registrare il dispositivo fisico in modo da poter eseguire il debug sul dispositivo reale. Ricordate che possibile aggiungere fino a tre dispositivi. Utilizzo di Visual Studio e / o Expression Blend, vi sar la creazione dell'applicazione e il debug con l'emulatore o il dispositivo ti sei registrato. Una volta che l'applicazione stato creato, necessario presentare la domanda per la certificazione processo. Al fine di garantire che l'applicazione passer il processo di certificazione Marketplace,sarebbe un buona idea per voi di leggere e comprendere il documento di certificazionedell'applicazione al http://go.microsoft.com/?linkid=9730558. Come parte del processo di certificazione, l'applicazione andr attraverso una serie di convalide contro
23

l'applicazione e politiche contenuti, imballaggio,codice, telefono funzione di divulgazione, la lingua, e di immagini. L'applicazione ricever anche testato su affidabilit, prestazioni, gestione delle risorse, utilizza la funzionalit del telefono cellulare, e la sicurezza. La certificazione processo in atto per aiutare a promuovere applicazioni di qualit per i consumatori,per proteggere i consumatori da malware, e proteggere i servizi Microsoft. Una volta che l'applicazione passa il processo di certificazione, verr distribuito al mercato e scaricati e utilizzati dal consumatore. Il consumatore dovr utilizzare l'applicazione e fornire valutazioni e commenti e report possono essere generati da voi dall'hub App per mostrare come la vostra applicazione esibendosi in Marketplace. Sulla base del feedback ricevuto, possibile scegliere di distribuire una versione aggiornata la versione che contiene le correzioni di bug e nuove funzionalit per gli utenti. Il tuo obiettivo finale quello di creare un interessante applicazione che sapete consumatori usare e pubblicare al Marketplace. La borsacoster $ 99 all'anno, che vi dar l'accesso al Marketplace Windows Phone e Xbox 360 Marketplace. Nel Marketplace Windows Phone, possibile inviare un numero illimitato di pagamento applicazioni e si pu presentare cinque applicazioni gratuite. Ulteriori osservazionicoster $ 19.99. Nel Xbox 360 Marketplace, possibile inviare fino a dieci giochi. Sarete in grado di osservare tutte le attivit di mercato attraverso la relazione prevista, come commenti, giudizi, e quanti in vendita, in modo che si possa effettivamente migliorare le vendite e marketing. A volte diventa evidente che gli approcci precedenti a un problema non hanno affatto funzionato il modo previsto. Forse sufficiente per eliminare il residuo fumosa del passato, fate un respiro profondo, e riprova con un nuovo atteggiamento e nuove idee. Nel golf, noto come un "mulligan", nello sport scuola, si chiama un "do-over", e nel settore informatico, si dicono che un "riavvio". Un riavvio ci che Microsoft ha avviato con il suo nuovo approccio al mercato della telefonia mobile. Con il suo look pulito, i caratteri sorprendenti e nuovi paradigmi organizzativi, Microsoft Windows Phone 7 non solo rappresenta una rottura con il passato, ma anche Windows Mobile differenzia da altri smartphone attualmente sul mercato. Windows Phone 7 dispositivi saranno realizzati da produttori diversi e disponibili con una variet di fornitori di cellule.

Per i programmatori, Windows Phone 7 anche entusiasmante, poich supporta due popolari e moderne piattaforme di programmazione: Silverlight e XNA. Silverlight, una spinoff del client basato su Windows Presentation Foundation(WPF)-ha gi dato i programmatori Web potenza senza precedenti per sviluppare utente sofisticato si interfaccia con un mix di controlli tradizionali, testo di alta qualit, grafica vettoriale, i media, animazione e l'associazione dati che girano su pi piattaforme e browser. Windows Phone 7 Silverlight si estende ai dispositivi mobili. XNA-le tre lettere stanno per qualcosa come "XNA non un acronimo"- di Microsoft piattaforma di gioco di supporto sia per la grafica 2D sprite-based e 3D con un tradizionale game-loop architettura. Anche se XNA principalmente associato con i giochi di scrittura per la Xbox 360, gli sviluppatori possono anche utilizzare XNA per indirizzare il PC stesso, cos come di Microsoft classe lettore audio, il Zune HD. O Silverlight o XNA avrebbe senso buono come l'unica piattaforma applicativa per la Windows Phone 7, ma i programmatori hanno una scelta. E questo che noi chiamiamo "l'imbarazzo della scelta." La versione gratuita di visual Studio 2010 Express ,scaricabile dal sito di Microsoft,per Windows Phone include XNA Game Studio 4.0 euno sullo schermo emulatore di telefono, e si integra con Visual Studio 2010. possibile sviluppare grafica e animazioni per le applicazioni Silverlight utilizzandoMicrosoft Expression Blend. Le piattaforme Silverlight e XNA per Windows Phone 7 condividono alcune librerie, ed possibile utilizzare alcune librerie XNA in un programma di Silverlight e viceversa.Ma non si pu creare un programma che mescola immagini da entrambe le piattaforme. Forse sar possibile in futuro, ma non ora. Prima di creare un progetto di Visual Studio, necessario decidere se un programma pe Silverlight o un programma per XNA. In genere si sceglie Silverlight per la scrittura di programmi che possibile classificare come applicazioni o utilit. Questi programmi sono costituiti da una combinazione di markup e codice. il markup l'Extensible Application Markup Language, o XAML e pronunciato "zammel." Il XAML per lo definisce un layout di interfaccia utente controlli e pannelli. Code-behind files pu anche eseguire alcune di inizializzazione e la logica, ma sono generalmente relegati ad eventi di movimentazione dai controlli. Silverlight grande per portare il Windows Phone lo stile di Rich
25

Applicazioni Internet (RIA), compresi i media e il web. Silverlight per Windows Phone una versione di Silverlight 3 escludere alcune funzioni non adeguate per il telefono, ma compensazione con alcuni miglioramenti. XNA principalmente per la scrittura di giochi con prestazioni elevate. Per i giochi2D, si defi sprite e ne sfondi basate su bitmap; per i giochi 3D ti definire modelli nello spazio 3D. L'azione del gioco, che include lo spostamento di oggetti grafici sullo schermo e sondaggiper l'utente ingresso, sincronizzato dal incorporato ciclo di gioco XNA. La differenziazione tra applicazioni basate su Silverlight e XNA parlando dei giochi comodo ma non restrittiva. Si pu certamente utilizzare Silverlight per la scrittura digiochi e anche possibile scrivere applicazioni tradizionali utilizzando XNA, anche se ci potrebbe a volte essere impegnativo. In particolare, Silverlight potrebbe essere ideale per i giochi che sono menograficamente orientate, o usare grafica vettoriale piuttosto che grafica bitmap, o sono percorso da parte dell'utente-time piuttosto che tempo dell'orologio. A Tetris-tipo di programma potrebbe funzionare abbastanza bene in Silverlight. Avrete probabilmente trovato XNA di essere un po 'pi difficile per allungare nel territorio Silverlight, comunque. Implementazione di una casella di riepilogo in XNA pu essere considerato "fun" da alcuni programmatori, ma una tortura da molti altri.Microsoft Silverlight stato posizionato come front-end o "face" della nube, cos cloud servizi e Windows Azure costituiscono una parte importante di Windows Phone 7 di sviluppo. Il Windows Phone "cloud-ready." I programmi sono location-aware e avere accesso a mappe e altri dati attraverso Bing e Windows Live. Uno dei servizi cloud disponibili XboxLive, che permette ai programmi basati su XNA a partecipare a giochi multiplayer online, e pu anche accessibile da applicazioni Silverlight. I programmi si scrivono per il telefono Windows 7 sar venduto e distribuito attraverso il Windows Marketplace Phone, che fornisce servizi di registrazione e certificazioneES che programmi soddisfino requisiti minimi di affidabilit, efficienza, e di buona condotta. Ho caratterizzata 7 Windows Phone a rappresentare una grave rottura con il passato. Se si confrontarlo con le versioni precedenti di Windows Mobile, che certamente vero.Ma il sostegno di Silverlight, XNA e C # non sono rotture con il passato, ma un equilibrio di continuit e innovazione. Giovani come

sono, Silverlight e XNA hanno gi dimostrato di essere piattaforme potenti e popolari. Molti programmatori esperti stanno gi lavorandocon entrambi un quadro o l'altro, probabilmente non cos tanti sia con appena ancora-e hanno hanno espresso il loro entusiasmo con una ricchezza di informazioni online ecomunit. C # diventato il linguaggio preferito di molti programmatori (me compreso), e gli sviluppatori possono utilizzare C # per condividere le librerie tra la loro Silverlight e XNA programmi, nonch programmi per altri ambienti NET.

Sensori e Servizi Un dispositivo Windows Phone 7 deve contenere diverse altre caratteristiche hardware-sensori-e a volte chiamati forniscono alcuni servizi software, magari attraverso la assistenza di hardware. Questi sono quelli che interessano gli sviluppatori di pi: WI-FI Il telefono dotato di WiFi per l'accesso a Internet per completarel'accesso ai dati tramite 3G la cella provider. Software sul telefono include una versione di InternetExplorer. Camera Il telefono dotato di almeno una fotocamera da 5 megapixel con la cenere fl. I programmi possono richiamare il programma di macchina fotografica per il proprio contributo, o registri stessi come una Foto Applicazione Extra e appaiono in un menu per ottenere l'accesso alle immagini fotografate, forse per qualche elaborazione delle immagini. Accelorometer Un accelerometro rileva l'accelerazione, che in fisica un cambiamento in velocit. Quando la fotocamera ancora, l'accelerometro rispondealla forza di gravit. programmi pu ottenere un vettore tridimensionale che indica come lafotocamera orientato con rispetto alla terra. L'accelerometro pu anche rilevare movimenti bruschi del telefono cellulare. Location Se l'utente lo desidera, il telefono pu utilizzare strategie multiple per determinare dove si trova geograficamente. I supplementi di telefono di undispositivo hardware con GPS

27

informazioni dal Web o ripetitori per i telefoni cellulari. Se il telefono in movimento, corso e velocit potrebbe anche essere disponibile. Vibration Il telefono pu essere fatto vibrare attraverso il controllo del programma. FM Radio Una radio FM disponibile e accessibile attraverso il controllo del programma. Push Notification Alcuni servizi web richiederebbe normalmente il telefono spesso interrogare il servizio per ottenere informazioni aggiornate.Ci pu privare la durata della batteria. Per dare una mano, una spinta servizio di notifica di cationi stato sviluppato, che permetter a qualsiasi richiesta polling avvenga al di fuori del telefono e il telefono per ricevere notificasolo cationi quando i dati sono stati aggiornati. Per impostazione predefinita, i programmi di Silverlight per Windows Phone 7 eseguito in modalit ritratto, e XNA programmi eseguiti in modalit orizzontale. Questo capitolo spiegacome superare tali valori ed esplora altre questioni che coinvolgono le dimensioni dello schermo, dimensioni degli elementi, e gli eventi.
Il TOUCH

Anche per i programmatori esperti Silverlight e XNA, Windows Phone 7 viene fornito con una caratteristica che probabile che sia nuovo e insolito. Lo schermo del telefono sensibile al tocho. E non come schermi touch vecchi che, in fondo imitanoun mouse o tavoletta che gli schermi riconoscere la calligrafia. Lo schermo multi-touch su un dispositivo Windows Phone 7 in grado di rilevare almeno quattro simultanea dita. E' l'interazione di queste dita che rende il multi-touch in modo impegnativo per programmatori.Comunque per il momente ci serve solo introdurre le interfacce touch nel contesto di programmi di esempio che rispondono ai rubinetti semplici. Per testare multi-touch codice, un vero e proprio dispositivo Windows Phone 7 essenziale. Nel interim, l'emulatore telefono risponder alle attivit del mouse e convertirlo a toccare input. Se si esegue l'emulatore in Windows 7 con un display multi-touch e un driver di Windows 7, possibile utilizzare anche contattare direttamentesull'emulatore.

In un programma di Silverlight, l'input tocco ottenuta attraverso gli eventi. In un programma XNA, toccare ingresso avviene attraverso una classe statica interrogato durante il metodo Update. Uno dei fini primari del metodo XNA aggiornamento quello di verificarelo stato di input tocco e apportare le modifiche che influenzano ci che esce allo schermo durante il metodo Draw. Come XNA, Silverlight supporta anche due diverse interfacce di programmazione per lavorare con multi-touch, che pu essere pi facilmente classificati come a basso livello e di alto livello. Il basso livello interfaccia si basa l'evento statico Touch.FrameReported, che molto simile al TouchPanel XNA eccezione del fatto che si tratta di unevento e non comprende gesti. L'interfaccia di alto livello si compone di tre eventi definito dalla classe UIElement:ManipulationStarted, ManipulationDelta, eManipulationCom pleted La manipolazione di eventi, come sono chiamati collettivamente, consolidarel'interazione di pi dita in movimento e fattori di scala.

Il cuore del basso livello di interfaccia touch in Silverlight una classe chiamata TouchPoint, un'istanza di cui rappresenta un dito particolare toccando lo schermo. TouchPoint ha quattro get-solo propriet:

Action of type TouchAction ,un'enumerazione con i membri di Down,Move e Up Position of type point rispetto all'angolo superiore sinistro di un elemento particolare. Facciamo chiamare questo elemento l'elemento di riferimento. Size of type Size Questo dovrebbe rappresentare la zona di contatto (e, quindi, dito pressione, pi o meno), ma Windows Phone 7 non restituisce valori utili. TouchDevice del tipo TouchDevice

L'oggetto TouchDevice dispone di due propriet di sola-get:

29

Id del tipo Int utilizzato per distinguere tra le dita. Un dito particolare associato un ID univoco per tutti gli eventi Lungo Up. DirectlyOver del tipo UIElement, l'elemento superiore sotto il dito.

Come si vede, il TouchPoint Silverlight e gli oggetti TouchDevice vi dar la maggior parte lo stesso informazioni come l'oggetto TouchLocation XNA, ma la propriet DirectlyOver diTouchDevice spesso molto utile per determinare quale elemento che l'utente tocca. Per utilizzare il basso livello di interfaccia touch, si installa un gestore per l'Touch.FrameReported statica evento: Touch.FrameReported += OnTochFrameReported Il metodo OnTouchFrameReported ha lo aspetto sotto portato. Void OnTouchFrameReported (object sender, TouchFrameEventargs args) { . } Il gestore eventi riceve tutti gli eventi touch in tutta l'applicazione Levento TouchFrameEventArgs ha una proprieta di tipo TimeStamp

Nel caso generale, si chiama GetTouchPoints, passando ad esso un elemento di riferimento. Il TouchPoint oggetti della collezione restituita hanno propriet di posizione rispetto a quella Elemento. possibile passare null per GetTouchPointsper ottenere le propriet di posizione relative allain alto a sinistra dell'applicazione. L'elemento di riferimento e l'elemento DirectlyOverhanno alcuna relazione fra loro. L'evento ottiene sempre tutte le attivit di contatto perl'intero programma. Chiamare o GetTouchPoints GetPrimaryTouchPoints con un particolare elementonon limitare gli eventi solo a coloro eventi che

coinvolgono tale elemento. Tutto ci che fa causa la propriet Position da calcolare rispetto a tale elemento. (Per questo motivo, le coordinate di posizione possono facilmente esserenegativo se l'dito a sinistra o sopra l'elemento di riferimento.) L'elemento DirectlyOver indica l'elemento sotto il dito. Una Discussione dei Metodi Secondo e il Terzo richiededelle Nazioni Unite sfondo Certo: The Touch. Evento FrameReported origine su Silverlight per il desktop, colomba e Conveniente per l 'La Logica del topo dei Controlli esistenti per utilizzareautomaticamente tatto. Per this Mo tivo, Sono eventi diTocco "Promossi" Agli eventi del mouse. Ma questa promozione coinvolge solo il punto "primario" touch, che l'attivit del primo dito che tocca lo schermo quando non altre dita stanno toccando lo schermo. Se non sidesidera che l'attivit di questo dito per essere promosso agli eventi del mouse, il gestore di eventi in genere comincia cos:

void OnTouchFrameReported(object sender, TouchFrameEventArgs args) { TouchPoint primaryTouchPoint = args.GetPrimaryTouchPoint(null); if (primaryTouchPoint != null && primaryTouchPoint.Action == TouchAction.Down) { args.SuspendMousePromotionUntilTouchUp(); } ... }

31

Il metodo SuspendMousePromotionUntilTouchUp pu essere chiamato solo quando un primo dito tocca lo schermo quando non altre dita stanno toccando lo schermo. Su Windows Phone 7, tale logica presenta una sorta di dilemma. Come scritto, fondamentalmente spazza via tutte le promozioni del mouse in tutta l'applicazione. Se l'applicazione telefono incorpora controlli Silverlight che sono stati originariamente scritti per l'input del mouse, ma non hanno stato aggiornato al tatto, si sta praticamente disabilitarei controlli. Lascio che la materia per la vostra considerazione e gli anziani il mousegestione dei controlli. Nel frattempo, il programma che voglio scrivere solointeressato al punto di contatto primario quando ha un TouchAction di Down, cos posso usare la stessa logica. SilverLight codice Si noti il valore Padding. So che il carattere visualizzatoqui ha una propriet FontSize di 20 pixel, che si traduce in realt in un TextBlock che di circa 27 pixel di altezza. So anche che si raccomanda che gli obiettivi non toccare essere inferiore a 9 millimetri. Se la risoluzione dei il display del telefono di 264 DPI, allora 9 millimetri di 94 pixel. (Il calcolo di 9 millimetri diviso per 25,4 millimetri al pollice, volte 264 pixel per pollice). TextBlock breve del 67 pixel. Cos mi sono messo un valore Padding che mette34 pixel pi sia alto e in basso (ma non i lati).

Ho usato Imbottitura piuttosto che Margin perch padding lo spazio all'interno del TextBlock. Il TextBlock diventa in realt pi grande della dimensione del testo comporterebbe. Il margine spazio esterno TextBlock. Non fa parte della stessa TextBlock e vieneescluso per fini di hit testing. Ecco l'intero file code-behind. Il costruttore della pagina principale installa il Touch. Gestore di eventi FrameReported. using System; <TextBlock Name="txtblk" Text="progetto tesi" Padding="0 34"

HorizontalAlignment="Center" VerticalAlignment="Center" /> </Grid>

using System.Windows.Input; using System.Windows.Media; using Microsoft.Phone.Controls; namespace SilverlightTouchHello { public partial class MainPage : PhoneApplicationPage { Random rand = new Random(); Brush originalBrush; public MainPage() { InitializeComponent(); originalBrush = txtblk.Foreground; Touch.FrameReported += OnTouchFrameReported; } void OnTouchFrameReported(object sender, TouchFrameEventArgs args) { TouchPoint primaryTouchPoint = args.GetPrimaryTouchPoint(null); if (primaryTouchPoint != null && primaryTouchPoint.Action == TouchAction. Down)
33

{ if (primaryTouchPoint.TouchDevice.DirectlyOver == txtblk) { txtblk.Foreground = new SolidColorBrush( Color.FromArgb(255, (byte)rand.Next(256), (byte)rand.Next(256), (byte)rand.Next(256))); } else { txtblk.Foreground = originalBrush; } } } } } Il gestore di eventi interessato solo a punti di contattoprimari con un azione di Down. Se l'DirectlyOver propriet l'elemento denominato txtblk,un colore a caso stato creato. Diversamente Struttura Color in XNA, la struttura Color Silverlight non dispone di un costruttore per impostare un colore rosso, verde, blu e valori, ma ha un metodo statico che FromArgb crea un oggetto a colori basato su alpha, rosso, verde,blu e valori, dove alfa l'opacit. Impostare il canale alpha a 255 per ottenere un coloreopaco. Anche se non affatto ovvio nella XAML files, la propriet Foreground effettivamente ditipo Brush, una classe astratta da cui SolidColorBrush scende.

Se non DirectlyOver txtblk, il programma non cambia il colore al bianco, perch che non funziona se l'utente sceglie un tema colore del testo nero su sfondo bianco. Invece, imposta la propriet Foreground al

pennellooriginariamente impostato sul TextBlock. Questo ottenuto nel costruttore

1.1 Il Manipulation Events


L'alto livello di interfaccia touch in Silverlight prevede tre eventi : ManipulationStarted, le ManipulationDelta, e ManipulationCompleted. Questi eventi non si preoccupano di riferire l'attivit di singole dita. Invece, essi consolidare l'attivit di pi ditanella traduzione e scala le operazioni. Gli eventi si accumulano anche le informazioni di velocit, cos mentre non supportano inerzia direttamente, possono essere utilizzati per implementare inerzia. Gli eventi di modifica riceveranno una maggiore copertura nei capitoli a venire. In questo capitolo sono andando ad attaccare con ManipulationStarted solo per rilevare il contatto di un dito sullo schermo, e non voglio perdere tempo con il dito quello che fa dopo. Mentre Touch.FrameReported informazioni tocco consegnato per l'intera applicazione, gli eventi di modifica si basano su singoli elementi, cos inSilverlightTapHello1, un gestore di eventi ManipulationStarted pu essere impostato sulTextBlock: <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Text="ricerca di strutture" Padding="0 34" HorizontalAlignment="Center" VerticalAlignment="Center" ManipulationStarted="OnTextBlockManipulationStarted" /> </Grid>

Le MainPage.xaml.cs contiene questo gestore di eventi:

35

public partial class MainPage : PhoneApplicationPage { Random rand = new Random(); public MainPage() { InitializeComponent(); } void OnTextBlockManipulationStarted(object sender, ManipulationStartedEventArgs args) { TextBlock txtblk = sender as TextBlock; Color clr = Color.FromArgb(255, (byte)rand.Next(256), (byte)rand.Next(256), (byte)rand.Next(256)); txtblk.Foreground = new SolidColorBrush(clr); args.Complete(); } }

Il gestore di eventi in grado di ottenere l'elemento che genera il messaggio dal mittente argomento.Questa sar sempre la TextBlock. Il TextBlock disponibile anche dalle args. OriginalSource propriet e la propriet args.ManipulationContainer. Notare la chiamata al metodo completa degli argomenti dell'eventoalla fine. Questo non richiesta ma dice effettivamente il sistema che gli eventi ulteriori manipolazioni che coinvolge questo dito non sar necessario. Questo programma fl reverenziale: Se lo provate, vedrete chefunziona solo parzialmente. toccando il TextBlock cambia il testo in un colore casuale. Ma se si tocca al di fuori del TextBlock, il testo non tornare indietro al bianco. Poich questo evento statoimpostato sul TextBlock, il gestore di eventi chiamato solo quando l'utente tocca il TextBlock. Nessun eventoaltra manipolazione vengono elaborati dal programma.

Un programma che funziona in modo corretto secondo il miospecifi cazione originale ha bisogno di ottenere tocco eventi che si verificano in qualsiasi

punto della pagina. Un gestore per le esigenze di eventi ManipulationStarted essere installato su MainPage piuttosto che sul TextBlock. Anche se questo certamente possibile, c' in realt un modo pi semplice. La classe UIElement definisce tutti gli eventi di modifica. Ma la classe di controllo (da cuideriva MainPage) integratori quegli eventi con metodi virtuali protetti. Non necessario installare un gestore per l'evento ManipulationStarted sul MainPage, invece possibile ignorare il OnManipulationStarted metodo virtuale.

Questo approccio implementato nel progettoSilverlightTapHello2. Il codice XAML fi le non fa riferimento a tutti gli eventi, ma d il TextBlock un nome in modo che possaessere denominata nel codice:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> La classe Page principale l'override del metodoOnManipulationStarted:

Nel ManipulationStartedEventArgs una propriet denominataOriginalSource indica dove questo manifestazione iniziata in altre parole, l'elemento pi in alto che l'utente sotto controllo. Se ci equivale alla txtblk oggetto, il metodo crea un colore a caso per la proprietForeground. Se no, allora la propriet Foreground impostata alla spazzola originale.

In questo metodo OnManiulationStarted stiamo MainPage per lagestione degli eventi, ma che OriginalSource propriet ci racconta l'evento in realt nato pi basso nella struttura visiva. Questo fa parte del beneficio della funzionalit Silverlight nota come la gestione degli eventi indirizzati.

1.2 Routed Events

37

In ingresso di programmazione Microsoft Windows, tastiera e mouse vanno sempre a particolari controlli. L'input della tastiera va sempre al controllo con il focus.Input del mouse sempre va al controllo pi in alto abilitato sotto il puntatore del mouse.Ingresso Stylus e touch gestiti allo stesso modo il mouse. Ma a volte questo scomodo.Talvolta il controllo sotto esigenze dell'utente-input pi che il controllo sulla parte superiore. Per essere un po 'pi flessibile, Silverlight implementa un sistema chiamato la gestione di eventi indirizzati. Pi eventi-tra cui input dell'utente i tre eventi di manipolazioneeffettivamente provengono utilizzando lo stesso paradigma di Windows. Gli eventi di modifica origine alabilitato pi in alto elemento toccato dall'utente. Tuttavia, se questo elemento non interessato al caso, la evento passa poi al genitore che dell'elemento, e cos via fino allastruttura visiva termina presso la PhoneApplicationFrame elemento. Ogni elemento lungo la stradapu afferrare l'ingresso e fare qualcosa con esso, e inibiscono anche ulteriori progressi della manifestazione l'albero. Per questo motivo possibile eseguire l'override del metodoOnManipulationStarted in MainPage e anche ottenere eventi di manipolazione per la TextBlock. Perimpostazione predefinita, il TextBlock non interessato a quelle eventi. L'argomento per l'evento ManipulationStartedManipulationStartedEventArgs, che deriva dalla RoutedEventArgs. E 'RoutedEventArgs che definisce il OriginalSource propriet che indica l'elemento su cui l'evento iniziata.
.

Un gestore per la ManipulationStarted evento impostato sul TextBlock come nel primo programma. Sia il gestore di eventi e un override di OnManipulationStarted appaiono nel file code-behind: public partial class MainPage : PhoneApplicationPage { Random rand = new Random(); Brush originalBrush; public MainPage() {

InitializeComponent(); originalBrush = txtblk.Foreground; } void OnTextBlockManipulationStarted(object sender, ManipulationStartedEventArgs args) { txtblk.Foreground = new SolidColorBrush( Color.FromArgb(255, (byte)rand.Next(256), (byte)rand.Next(256), (byte)rand.Next(256))); args.Complete(); args.Handled = true; } protected override void OnManipulationStarted(ManipulationStartedEventArgs args) { txtblk.Foreground = originalBrush; args.Complete(); base.OnManipulationStarted(args); } } La logica stata divisa tra i due metodi, rendendo il tutto un po 'pi elegante, credo. Il metodo OnTextBlockManipulationStarted ottiene solo quando gli eventi TextBlock viene toccato. L'evento si OnManipulationStarted tutti gli eventi di MainPage. In un primo momento potrebbe sembrare un bug qui. DopoOnTextBlockManipulationStarted chiamato, l'evento continua a viaggiare la struttura ad albero visuale eOnManipulationStarted imposta il
39

colore tornare al bianco. Ma non quello che succede: L'affermazionefondamentale che rende questo lavoro giusto questo alla fine del gestore OnTextBlockManipulationStarted perla TextBlock: args.Handled = true; Questa dichiarazione afferma che l'evento stato gestito e non deve viaggiare di pi la struttura ad albero visuale. Rimuovere questa affermazione e ilTextBlock non cambia mai dalla sua iniziale a colori, almeno non abbastanza a lungo da vedere.

Capitolo 2

Utilizzo di servizi di localizzazione

41

utti i dispositivi Windows Phone sono tenuti a spedire con un ricevitore GPS e quindi dotata, consentono di sviluppare applicazioni che sono Location Aware. Il ricevitore GPS in Windows Phone vi permetter di

ricevere i dati in forma di longitudine e latitudine.La longitudine e la latitudine rappresentano la mappatura coordinate che sono necessari per tracciare la posizione sulla Bing Maps Silverlight di controllo. Inoltre,al fine di tracciare un indirizzo, si avrebbe bisogno di convertire l'indirizzo in latitudine e longitudine utilizzando il BingMaps servizio. E proprio questo sensore servizio che ha portato anche sul svilupo di questa tesi. Anche i motori di ricerca approfittare di GPS del telefono, fornendo risultati di ricerca pertinenti in base la posizione del telefono. Applicazioni di social networking come Twitter eFacebook possono usufruire del tracking GPS sistema sul telefono codifica i tuoi tweets o foto caricate con le informazioni sulla posizione. Ci sono applicazioni che consentono anche di condividere la tua posizione attuale con i tuoi amici e familiari. Ci era un gran titolo: notizie su un mare perduto kayaker che stato scoperto nel mare perch aveva un telefono in suo possesso e la Guardia Costiera era in grado di localizzare lui la sua posizione GPS.

2.1 Comprendere i servizi di localizzazione Windows Phone architettura


Un dispositivo Windows Phone in grado di determinare la posizione attuale sulla superficie della terra in una delle tre modi. Il primo approccio quello di utilizzare il ricevitore GPS, che utilizza i satelliti ed la pi accurate, ma che consuma anche la maggior parte del potere. Gli approcci seconda e la terza di utilizzare Wi-Fi e la triangolazione dei ripetitori per i telefoni delle cellule,che sono molto meno precisi, ma poi il ricevitore GPS consumano meno energia. Forunamente il dispositivo riesce a trovare la sua posizione corrente. Con una lettura longitudine e latitudine in mano, un'applicazione pu tracciare su una mappa Bing Maps Silverlight controllo. Oppure si pu usare una strada o un indirizzo civico restituito dallaon-board posizione servizio per interrogare il web Bing Mapsservizio per la sua coordinate corrispondenti GPS(longitudine e latitudine) e tracciare su una mappa Bing Maps. Nelle sezioni successive, spieghero come si sfruttato il ricevitoreGPS del telefono di Windows per monitorare i movimenti e anche il codice per tracciare un indirizzo sul controllo Bing Maps Silverlight utilizzando il Microsoft Bing Maps servizio.
43

Per poter utilizzare il servizio di localizzazione su un dispositivo, necessario fare riferimento all'assemblySystem.Device e dichiarare System.Device.Locatio nel codice. E prima di poter usufruire del servizio di localizzazione, necessario abilitare il servizio di localizzazione del telefono andando a impostazioni di percorso turn on Servizi opzione. possibile rilevare se il phone sservizio di localizzazione viene attivato mediante ilStatusChanged evento di GeoCoordinateWatcher, come mostrato nel codice seguente.

GeoCoordinateWatcher geoCoordinateWatcher; geoCoordinateWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); geoCoordinateWatcher.MovementThreshold = 100; // in Meters geoCoordinateWatcher.StatusChanged += (s, e) => { if (e.Status == GeoPositionStatus.Disabled) { MessageBox.Show("Please enable your location service by going to Settings -> Location -> Turn on Location Services option."); } }; Another way to check if the location service is enabled is to use TryStart to see if the GeoCoordinateWatcher can be started. if (!_geoCoordinateWatcher.TryStart(true, TimeSpan.FromSeconds(5))) { MessageBox.Show("Please enable Location Service on the Phone.", "Warning", MessageBoxButton.OK); } Un altra classe usata anche setDesiredAccuracy e fornire MovementThreshold in GeoCoordinateWatcher come visto nel codice precedente. GeoPositionAccuracy.Default utilizzer Wi-Fi o le torri di telefono cellulare e dipende dalla disponibilit delle fonti. Windows Phone automaticamente sceglie uno da utilizzare e GeoPositionAccuracy.High user il ricevitore GPSincorporato nel dispositivo telefonico.MovementThreshold propriet molto importante per impostare perchMovementThreshold specifica la

variazione di distanza in metri prima dell'evento PositionChanged notifica l'applicazione che nuove coordinate sono disponibili;inferiore il valore della MovementThreshold, pi esattamente la posizione verr registrata, ma si pagher un prezzo nel consumo di energia superiore. Microsoft consiglia di impostare MovementThreshold ad almeno il 20 metri per filtrare questo rumore.

2.2 Simulare il servizio di localizzazione


Al fine di simulare l'utilizzo del servizio di localizzazione, verr intercettare la GeoCoordinateWatcher di Evento PositionChanged utilizzando un oggettoObservable. Con un oggetto Observable, possibile iscriversi ad un flusso di eventi e quindi i dati ricevuti ai delegati degli eventi sottoscritti. Per gli esempi, si sottoscrivere l'evento PositionChanged per alimentare dati GPS alle parti della vostra applicazioneche lo consumano. Ho aggunto un riferimento a Microsoft.Phone.Reactive al fine di utilizzare reattiva Extension. Inoltre si aggunto un riferimento a System.Device per utilizzare la posizione servizio. In seguito viene portata la foto del solution explorer con le modifiche fate.

45

2.3 Specificando il spazio dei nomi


Iniziamo con lelenco degli spazi dei nomi che l'applicazione utilizzer. Avremo bisogno di System.Device.Location in ordine per utilizzare il servizio di localizzazione. Dichiariamo Microsoft.Phone.Reactive al fine di utilizzare il ReactiveExtension Osservabile. Notiamo inoltre che sar necessario System.Threading al fine di inserire i dati GPS in servizio di localizzazione, si pu pensare di Extension reattiva osservabile come se fosse il satellite, Wi-Fi, o torre di comunicazione l'invio dei dati GPS.

47

using Microsoft.Phone.Controls; using System.Threading; using Microsoft.Phone.Reactive; using System.Device.Location; using System.Collections.Generic; using System;

2.4 Inizializzazione dei variabili


Il _geoCoordinateWatcher variabile un'istanza della classe location Windows Phone che verr utilizzato per accedere e recuperare i dati di localizzazione. Si noti nel costruttore abbiamo dichiarato l'evento inPositionChanged Per ricevere i dati GPS del servizio di localizzazione di.Inoltre si inizier il filo che simuler l' Dati GPS che viene inviato al delegato evento PositionChanged. GeoCoordinateWatcher _geoCoordinateWatcher; public MainPage() { InitializeComponent(); // initialize GeoCoordinateWatcher _geoCoordinateWatcher = new GeoCoordinateWatcher(); // PositionChanged event will receive GPS data _geoCoordinateWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate> > (_geoCoordinateWatcher_PositionChanged); // simulateGpsThread will start Reactive Extension // where EmulatePositionChangedEvents will be feeding // the data to PositionChanged event Thread simulateGpsThread = new Thread(SimulateGPS); simulateGpsThread.Start(); }

2.5 Simulazione di GPS data usando Reactive


Extensions Observable
Nel costruttore quanto precede, che ha avviato un thread che esegue il metodo SimulateGPS.NelMetodo SimulateGPS, Observable l'estensione reatti

va disottoscrive l'evento in PositionChanged Per inserire i dati GPS. GPSPositionChangedEvents invia costantemente GeoPositionChangedEventArgs ogni due secondi, che poi viene ricevuti da GeoCoordinateWatcher di Evento PositionChanged ei dati GPS. // Reactive Extension that intercepts the _geoCoordinateWatcher_PositionChanged // in order to feed the GPS data. private void SimulateGPS() { var position = GPSPositionChangedEvents().ToObservable(); position.Subscribe(evt => _geoCoordinateWatcher_PositionChanged(null, evt)); } private static IEnumerable<GeoPositionChangedEventArgs<GeoCoordinate>> GPSPositionChangedEvents() { Random random = new Random(); // feed the GPS data while (true) { Thread.Sleep(TimeSpan.FromSeconds(2)); // randomly generate GPS data, latitude and longitude. // latitude is between -90 and 90 double latitude = (random.NextDouble() * 180.0) - 90.0; // longitude is between -180 and 180 double longitude = (random.NextDouble() * 360.0) - 180.0; yield return new GeoPositionChangedEventArgs<GeoCoordinate>( new GeoPosition<GeoCoordinate>(DateTimeOffset.Now, new GeoCoordinate(latitude, longitude))); } }

2.6 Display i data GPS


Qui che si sta utilizzando Dispatcher.BeginInvoke per eseguire l'espressionelamda di un metodo anonimo. Utilizzo Dispatcher. BeginInvoke per aggiornare l'interfaccia utente con i dati GPS assolutamente necessario perch il PositionChanged evento viene eseguito in un threaddiverso da quello dell'interfaccia utente, e quindi necessario utilizzare in modo esplicito
49

Dispatcher.Invoke dell'interfaccia utente per eseguirecodici specifici..

private void _geoCoordinateWatcher_PositionChanged(object sender , GeoPositionChangedEventArgs<GeoCoordinate> e) { this.Dispatcher.BeginInvoke(() => { txtLatitude.Text = e.Position.Location.Latitude.ToString(); txtLongitude.Text = e.Position.Location.Longitude.ToString(); }); }

2.7 Utilizzando GeocoordinateWatcher e il controllo di BingMaps Monitorare i movimenti


Inizieremo con la costruzione di una domanda per lavorare con il servizio di localizzazione del telefono, GeoCoordinateWatcher. L'applicazione, Bing Map del progetto, mostrato in Figura sottostante e dimostra la funzioni di base disponibili tramiteGeoCoordinateWatcher, il servizio di localizzazione che abbiamo introdotto precedentemente. L'applicazione mostrer la posizione con una icona lampeggiante su una mappa e costantemente aggiornare la posizione mentre vi muovete. Quando si fa clic sul pulsante Start, inizier il servizio di localizzazione che invier notifica quando la posizione cambiata, e su l'eventoposizione cambiato, il Bing Maps la mappa sar essere aggiornato con la nuova posizione. Si pu effettivamente avviare l'applicazione, mentre si cammina e si guardare la posizione del locatore (punto rosso) sul cambiamento mappa durante gli spostamenti.

Per la construzione dellcodice si seguono dei fasi molti semplici. In primo luogo, necessario registrarsi con il servizioBing Maps portale e quindi creare un nuovo progetto di Visual Studio. Si proceder ora a costruire l'interfaccia utente del progetto e finiscono per l'aggiunta di codice per rispondere ai comandi da parte dell'utente.

2.8 Registrazione con il Bing maps Service Portal e Installazione Bing Maps SDK
Prima di poter utilizzare il Bing Maps Silverlightcontrollo e le sue offerte di servizi, necessario registrarsi Bing Maps a www.bingmapsportal.com/.

51

Una volta che si crea un servizio Bing Maps utente, necessario creare una chiave di applicazione in modo che possibile utilizzare il Bing Maps controllo e il servizio di Bing Maps Windows Phone. Accedendo al portale Bing Maps, e una volta effettuato l'accesso, fare clic sul collegamento ipertestuale "Crea ovisualizzare le chiavi".

Dopo aver creato l'applicazione Bing Maps chiave, necessario installare l'SDK di Windows Phone trovato alla http://developer.windowsphone.com/windows-phone-7/. Se avete installato con successo il Windows Phone SDK, i file binari (Microsoft.Phone.Controls.Maps) possibile fare riferimento dal progetto al fine di utilizzare ilBing Maps Silverlight controllo.

2.9 Tracciare un indirizio su una mappa Bing Maps e di lavorare con il servizio Bing Maps
Microsoft offre tre servizi principali ospitati sul cloud per essere utilizzati da qualsiasi client, tra cui Dispositivi telefonici Windows, come mostrato nella seguente.

GeoCodeService: Consente a un indirizzo da convertire in longitudine e


latitudine o convertire geocode nella barra degli indirizzi. ServizioWeb pu essere consumato da l'accesso alla

URL http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice

.svc.

RouteService: Comprende servizi quali il calcolo della distanza tra due


indirizzi, che forniscono indicazioni di guida e camminare da indirizzo per affrontare e fornisce istruzioni passo-passo servizio di navigazione. Servizio Web pu essere consumato da l'accesso alla

URL http://dev.virtualearth.net/webservices/v1/routeservice /routeservice.svc.

Searchservice:Fornisce location-based risultati della ricerca. Ad esempio,


basato sul presentato indirizzo, trover ristoranti in un raggio di cinque miglia. Web servizio pu essere consumato mediante l'accesso alla URL in.

http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc

Nella sezione seguente, si utilizzer GeoCodeService per convertire qualsiasi indirizzo in geocode (longitudine e latitudine) e tracciare l'indirizzo sul BingMaps Silverlight Control. Attraverso questo codice si puo accedere al servizio Bing Maps utilizzando le credenziali che hai ricevuto al momento registrati.

53

2.10 Creazione dell'applicazione AddressPlotting

Per impostare il progetto BingMap, si seguono i seguenti passagi. Per poter utilizzare Bing Maps controllo in Windows Phone, necessario fare riferimento Microsoft.Phone.Controls.Maps e System.Device.

2.11 Aggiungere un riferimento al servizio per il GeocodeService Bing Maps

Per poter utilizzare il GeoCodeService Bing Maps, necessario aggiungere un riferimento al servizio al progetto.

1. In Esplora soluzioni, fare clic destro sulla cartella Riferimenti e scegliere Aggiungi servizio riferimento 2. Quando la finestra Aggiungi riferimento al servizio si apre, digitare http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservi ce. svc nel campo Indirizzo e Go. 3. Verr visualizzato un elenco di servizi. Nella casella di testo Namespace, immett ere "BingMapGeoCodeService"

55

2.12 Dichiarazione delle risorse


Gli spazi dei nomi che vedi nell'immagine seguente frammento di codice sono tipicamente dichiarati per impostazione predefinita quando per la prima volta creare un progetto Windows Phone. In particolare, gli spazi dei nomi xmlns: phone = "clrnamespace: Microsoft.Phone.Controls; assembly = Microsoft.Phone"vi permettono di aggiungere Windows comuni Telefono controlli alla pagina principale dell'applicazione.

<phone:PhoneApplicationPage x:Class="AddressPlottingDemo.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clrnamespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clrnamespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markupcompatibility/2006" xmlns:BingMap="clrnamespace: Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Ma ps" 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">

Una delle cose pi importanti da notare in questa applicazione l'uso del geocode Bing Maps servizio per convertire un indirizzo di misure di latitudine e longitudine, in modo che possa essere tracciata sul mappa. Inoltre, al fine di utilizzare il geocode Bing Mapsservizio, necessario fornire le credenziali Bing Maps che si creato durante la registrazione.

Una volta che il servizio si fa riferimento, sar in grado di dichiarare lo spazio dei nomi del geocode Bing Maps servizio, AddressPlottingDemo.BingMapGeoCodeService. Si noti inoltre che si sta includendo System.Linq perch si prevede di utilizzare query LINQ toGeoCodeResults restituiti con la massima riservatezza. Il _svc GeocodeServiceClient variabile una classe proxy che consente di connettersi al geocode Bing Maps servizio geocode l'indirizzo in modo da tracciare sulla mappa. Si noti che si avrebbe bisogno di abbonarsi a GeocodeCompleted evento al fine di ricevere risultati che contiene latitudine e longitudine. .

GeocodeServiceClient _svc; public MainPage() { InitializeComponent(); // instantiate Bing Maps GeocodeService _svc = new GeocodeServiceClient(); _svc.GeocodeCompleted += (s, e) => { // sort the returned record by ascending confidence in order for // highest confidence to be on the top. // Based on the numeration High value is // at 0, Medium value at 1 and Low volue at 2 var geoResult = (from r in e.Result.Results orderby (int)r.Confidence ascending select r).FirstOrDefault(); if (geoResult != null) {
57

this.SetLocation(geoResult.Locations[0].Latitude, geoResult.Locations[0].Longitude, 10, true); } }; }

BtnPlot Quando si fa clic, si far una richiesta di servizioweb al servizio Bing Maps geocode per convertire txtAddress.Text per tornare geocoordinates inlongitudine e latitudine. Quando l'evento, GeoCodeCompleted, viene sollevato si ricever pi risultati che contengono solo la massima riservatezza livello. Utilizzando GeoCodeResult farete una chiamata aSetLocation che tracciare la posizione sulla Bing Maps Silverlight controllo.

private void SetLocation(double latitude, double longitude, double zoomLevel, bool showLocator) { // Move the pushpin to geo coordinate Microsoft.Phone.Controls.Maps.Platform.Location location = new Microsoft.Phone.Controls.Maps.Platform.Location(); location.Latitude = latitude; location.Longitude = longitude; bingMap.SetView(location, zoomLevel); bingMapLocator.Location = location; if (showLocator) { locator.Visibility = Visibility.Visible; } else { locator.Visibility = Visibility.Collapsed; } } private void btnPlot_Click(object sender, RoutedEventArgs e) {

BingMapGeoCodeService.GeocodeRequest request = new BingMapGeoCodeService.GeocodeRequest(); // Only accept results with high confidence. request.Options = new GeocodeOptions() { Filters = new ObservableCollection<FilterBase> { new ConfidenceFilter() { MinimumConfidence = Confidence.High } } }; request.Credentials = new Credentials() { ApplicationId = "Put-Your-BingMap-Credential-Id" }; request.Query = txtAddress.Text; // Make asynchronous call to fetch the geo coordinate data. _svc.GeocodeAsync(request); }

59

Capitolo 3

Model-View-ViewModel applicato al progetto

61

In un prodotto software ci sono due distinti moduli cui competenze sono ben definiti e dovrebbe chiaramente delimitati. Il modello una rappresentazione software di una soluzione di un problema noto che la vista consente all'utente di interagire con il modello di risolvere un problema specifico. Prima di discutere le specifiche di MVVM, necessario prendere in considerazione perch abbiamo bisogno di separare il modello e la vista, come possono essere separati, e ci che i loro rispettivi ruoli sono in un software prodotto. Non ci pu essere notevole carico di lavoro aggiunto a un progetto in armonia questi due sottosistemi scollegato, e tutte le parti interessate devono impegnarsi per la causa. In questo capitolo si sottolinea l'importanza di model-view separazione e spiegare perch considerato un paradigma significativo cos come delineano le opzioni possibili per separare i due in uno WPF o l'applicazione Silverlight. I problemi che possono verificarsi quando non separare il modello e la view- tale codice come strettamente accoppiati con bassa coesione-Sar inoltre esplorata. La separazione degli interessi (noto anche come SoC) non un termine nuovo, anche se ha recentemente ottenuto una buzzword reputazione. Ci significa semplicemente assicurare che il codice ha un unico,scopo ben definito, e che non si assume alcuna responsabilit superflui. Ci si applica a tutti i livelli di codice, da singoli metodi fino a interi sottosistemi, che dovrebbero concentrarsi sulle compiendo il loro unico scopo, o "preoccupazione". Una dipendenza codice non si riferisce necessariamente ad un riferimento a un assembly. Vi una dipendenza ovunque una unit di codice deve "sapere" di un'altra. Se una classe necessario utilizzare un'altra classe, l'ex diventa dipendente su quest'ultimo. In particolare, la dipendenza in classe di interfaccia dei suoi metodi, propriet, e il costruttore (s). Si raccomanda la pratica per separare l'interfaccia di una classe dalla sua attuazione. .

Col primo listato l'unica forma che viene accettata un cerchio. Per supportare forme alternative,il metodo deve essere sovraccaricato di accettare ogni tipo di ulteriore forma come un parametro. Ogni volta che una nuova forma viene aggiunto, il codice drawShape deve essere modificata, aumentando il lavoro di manutenzione. Il Classe Circle, pi eventuali ulteriori forme, deve essere visibile al momento della compilazione di questo codice. Infine, l' Metodo drawShape sa troppe cose in merito all'attuazione della classe Circle. Certo, inquesto breve esempio, ragionevole supporre che i cerchi andrebbero ad avere una posizione e le propriet Radius. Tuttavia, sono pubblicamente leggibili da chiunque, e questo rompe inutilmente incapsulamento.

Un'altra tecnica viene quindi utilizzato per conservare incapsulamento di ogni forma:inversione di controllo (ancheno to come IoC). Invece di interrogare i membri della forma al fine di disegnare la forma, il metodo chiede invece la forma da disegnare se stesso. Viene quindi utilizzato DependencyInjection (DI) per passare alla forma del IGraphicsContext interfaccia che richiede di disegnare se stesso. Da un punto di vista della manutenzione, questo implementazione molto pi estensibile. Aggiunta di una nuova forma facile solo implementare il Ishape interfaccia e scrivere il suo Draw (IGraphicsContext) metodo. importante notare che ci sono cambiamenti richiesto per il metodo drawShape o sua classe ogni volta che una nuova forma vieneintrodotto. Naturalmente, vi un evidente svantaggio per il codice nel Listato 3-2. pi complessa e meno intuitiva rispetto al codice del Listato 3-1. Tuttavia, questi problemi non sono insormontabili-dato tempo, la Quest'ultimo pu diventare pi intuitiva del primo. Un obiettivo chiave in SoC quello di limitare le dipendenze per quanto possibile e , se deve essere una dipendenza Esistono, Estratto via in modo che il codice client protetto dai cambiamenti. Il codice che troppo interdipendente difficile da mantenere, perch un singolo cambiamento pu spezzare in numerevoli parti. Il peggior tipo di codice dipendenza una dipendenza ciclica, per cui due metodi, o due classi, sono tra loro interdipendenti reciprocamente. Allo scopo di risolvere il problema delle dipendenze ciclici, occorre garantire che dipendenze un giusto ordine. In altre parole, che il codice forma una gerarchia dal basso verso l'alto,con il codice a livelli pi elevati dipendenti sul codice a livelli pi bassi. . .
63

La vista non a conoscenza del modello. Invece, acquista tutto ci di cui ha bisogno dal ViewModel. A sua volta, il ViewModel acquista tutto ci che serve dal modello, decorandoi dati e le operazioni con interfacce che la vista possa capire e utilizzare. I cambiamenti nella vista sono del tutto irrilevante per il modello, che non ha concetto dell'esistenza della vista. Cambiamenti nel modello sono mitigato dal ViewModel, che utilizza esclusivamente la vista. Idealmente, l'assemblea vista sar nemmeno includere un riferimento al modello del gruppo, tale la separazione prevista dalla ViewModel.

Anche nel progetto realizzato si puo vedere a ochio la divisione tra la visa e il view.Sotto si riporta il screenshot dell progetto.

LibreriaDati : Contiene Laccesso al databse. Per laccesso usato Entity Framework. Oviamente se si espande il progetto LibreriaDati troveremo tutte le reference. Tra tutte le referenze si trova anche la referenza ad System.data.Entity

65

Le classi che mappano le tabelle del database viene riportato in seguito

Si come ogni annuncio deve far parte di una regione allora gli viene associato una tabella per registrare tutte le comune dItalia. La stessa cosa si puo anche dire per le province. Ogni annuncio deve far parte di una provincia allora ho creato una tabella per registrare tutte le provincie ditalia. La tabella topologia contiene tutte le topologie del annuncio. Tra le diverse topologie si puo annunciare: 1- hotel 2- restaurant 3- casavacanza .... Oviamente ogni annuncio viene associato un indirizio ... indirizio che viene tornato all webservice nel caso di necessit. proprio questo indirizio che viene ustato dai diversi webService geoCode Webservice e routing

Webservice per tradure lindirizio in formato umano in un indirizio in formato che si puo capire dai webservice.

Nel progetto ServiceReferenze si trovano tutte le referenze ai diversi servizi. Per la realizzazione di questo progetto vengono untilizzati diversi servizi. BingGeocode: Come accenato anche prima un servizio che viene spesso utilizzato per la conversione dei indirizi in longitudine e latitudine BingRoute: Anche questo webService viene fornito dal Microsoft ed in grado di di fare il route di due indrizi in formato capibile dal pc (longitudine e latitudine) BingTranslate: Anche questo servizio viene fornito gia pronto e viene utilizzato per fare la traduzione dal inglese in italiano (nel nostro caso). Come si vede anche nella screenshot sottostante tutti gli indicazionei sono in Italiano.

Oltre alla libereria servizi Bing ce anche un altro servizio che si fa riferimento nel progetto LibreriaServiziImmobili. ServizioImmobile: Fa riferimento ad un servizio programmato dal programmatore che ha fatto il progetto. Questo servizio che viene definitio nell
67

progetto sottostante contiene molti metodi.Metodi utili per estrapolare dei datti dal database. Tra tutti questi datti che vengono estrapolati sono: 1- I nomi delle province 2- I nomi deelle comune Solo dopo aver estrapolati questi dati e solo dopo aver scelto se si preferisce una ricerca in base alla distanza (cerca le strutture che si trovano piu vicino possibile) oppure cerca le strutture che si trovano ad una localit specificata viene fatta una richiesta al servizio definito dal utente. Se la ricerca aviata dal utente quella in base alla distanza allora si trova la locazione dove si trova lutente e poi si fa una ricerca al database per cercare tutti gli annunci che si trovano in quella provinca. Dopo questi data vengono inviati ai servizi bing per fare la conversione e poi per tracciare anche la stradda da percorrere. In base a questa strada tracciata viene anche schelto quella con la distanza minore e poi quella che ha la distanza secondo minore e cosi via. In caso della ricerca delle strutture in una zona specificata allora viene fatto lo stesso raggionamento solo che in questo caso vengono cercati solo le strutture che sono in quell particolare provincia. Nel altro progetto WP7Client viene definito linterfaccia graffica del wp7. Oviamente tutti i risultati che vengono estrapolati dal database vengono visualizzati dal interfaccia utente. Per dare anche una idea piu chiara su come funziona tutto il progetto riporto un sotto il use case del progetto.

69

Capitolo 4

Progetto aiutante

71

In questo capitolo vorrei spiegare linserimento di un altro progetto. Questo progetto si puo utilizare per linserimento dei annunci. Come parte user interface viene utilizata il broswer. Piu sotto viene riportata una screenshoot del progetto da visual studio solution Explorer Solution.

Per capire meglio di cosa si tratta sotto viene riportato il useCase del progetto

Ogni utente prima dell utilizzo dei questo progetto serve registrarsi. Doppo la registrazione gli utenti possono aggungere delle strutture. Per la connesione con database viene utilizzato un altra tecnica (anche se molto simile ad altra ) per questo progetto ho utilizzato LINQ. Normalmente questo progetto ideato non solo per i usecase riportati sopra. In questo progetto ho programma un altro servizio. Questo servizio riesce riceve delle richiescte dal database e gli inoltra alla database. Piu specificamente questo servizio viene uttilizzato per: 12345Autentificare gli utenti Per visualizzare tutti gli annunci inseriti dai utenti Update dei annunci Delete dei annunci Visualizzazione di tutti i annunci inseritti da tutti i clienti

In questo progetto vengono definite i seguenti datacontract Annunci definito come segue: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace Contratti
73

{ // Use a data contract as illustrated in the sample below to add composite types to service operations // I CLASSI CHE SI POSSONO INVIARE AL CLIENTE [DataContract] public class Annunci { [DataMember] public string Cap { get; set; } [DataMember] public string Comune { get; set; } [DataMember] public string Regione { get; set; } [DataMember] public string Topologia { get; set; } [DataMember] public string Provincia { get; set; } [DataMember] public string Descrizione { get; set; } [DataMember] public string Cod { get; set; }

} } Con questo datacontract riesco a inserire nel database tutti i campi di un annuncio topologia provincia descrizione cod... Un altro datacontract definito DetagliAnnunci definito come segue: namespace Contratti { [DataContract]

public class DetagliAnnunci { // public b DetagliData { get; set; } [DataMember] public string DetagliTitle { get; set; } [DataMember] public string DetagliDescription { get; set; } [DataMember] public string DetagliFotoName { get; set; } } } Oviamente questo dataContract riesco a tracciare tutti i i detagli di un annuncio. Es: Fotoname descrizione foto etc. Sono proprio questi datacontract che riescono ad inserire nel database tutti i campi che ne futturo vengono estrapolati dal dai servizi bing. Oltre ai datacontract viene definitto anche il service contract. I service contract sono definitti nella cartela ServiceContract. Ci sono diverse pagine ASPX definite nella cartela WebSite10

75

Tutte queste pagine servono come UI per lutente.

77

Conclusioni
0692071569

Oviamente strada da percorrere fin all raggiungimento del treguardo per la programmazione di windows phone 7 lunga. E lunga ma riempita pieno di sodisfazioni. Alla fine ormai un fatto: I smart phone sono il futturo della nostra vita qutidiana. Questi dispositivi sono construiti per essere adeguati per ogni ocasione e per ogni eta. Allapplicazione che accompania questa tesi si possono aggiungere altri modulo in funzione della situazioni in cui verra utilizatto. Laggiungimento di questi moduli viene fatto in modo molto naturale senza tocare i moduli esistenti e senza nemeno influenzarle.

Ringraziamenti

e non avessi avuto un debito da onorare, e una promessa da mantenere, in assoluto le singole persone che pi di ogni altre avrebbero meritato che questo lavoro fosse loro dedicato sono certamente il mio amico Fede e la mia raggazza Aglinda ed oviamente alla mia famiglia. Ad essi vanno tutta la mia stima, il mio rispetto e la mia riconoscenza per il sostegno ed il grande aiuto che mi hanno dato.

***

***

***

***

Desidero innanzitutto ringraziare il Professor Maurizio Fermeglia per i preziosi insegnamenti, per avermi accolto come tesista e indirizzato sempre verso la strada giusta da intraprendere, e per le numerose ore dedicate alla mia tesi.

79

Bibliografia
Henry Lee, Eugene Chuvyrov (2008) - Beginning Windows Phone 7 Development Nick Randolph, Christopher Fairbairn (2010) - Professional Windows Phone 7 Application Development: Building Applications and Games Using Visual Studio, Silverlight, and XNA

Martin Fowler (2002) - Patterns of Enterprise Application Architecture


Matthew Miller - Windows Phone 7 Companion Gary Hall (2010)- Pro WPF and Silverlight MVVM: Effective Application Development with Model View - ViewModel Rob Cameron (2011) - Pro Windows Phone 7 Development

Potrebbero piacerti anche