La prima applicazione .NET per dispositivi mobili
a cura di Alessandro Del Sole (requisiti: conoscenze di base su .NET Framework)Introduzione
Ho recentemente acquistato uno Smart Phone, un telefono cellulare che racchiude funzionalità tipiche dei palmari e che utilizza il sistema operativo Windows Mobile 6 per il proprio funzionamento. Ne sono rimasto subito affascinato e, ovviamente, ho cominciato ad incuriosirmi su come sia possibile creare applicazioni per questo sistema operativo e per questi dispositivi. Come probabilmente molti di voi sanno, la programmazione .NET può essere destinata anche alla realizzazione di questo genere di applicazioni, sfruttando il .NET Compact Framework, una edizione più leggera della nota tecnologia di run-time e progettata, per l'appunto, per questo tipo di dispositivi.
In questo articolo ci proponiamo di illustrare la procedura per la creazione di una prima, semplice applicazione basata su .NET Compact Framework utilizzando l'ambiente di sviluppo di Visual Studio 2008, partendo dagli strumenti necessari fino ad arrivare alla procedura di distribuzione per l'applicazione stessa.
Il codice sorgente è disponibile in Area Download di VB T&T, ma se, come me, siete anche voi alle prime esperienze con questo tipo di programmazione, è bene che leggiate prima l'articolo per comprendere i punti salienti di questo interessante mondo.Cosa occorre
Per realizzare applicazioni per dispositivi mobili si utilizza, come di consueto, Visual Studio (sia la versione 2005 che la nuova 2008). Le edizioni Express non supportano questa funzionalità, pertanto è necessario avere a disposizione Visual Studio Standard o superiore.
Per questo articolo ho utilizzato l'edizione trial di Visual Studio 2008 Team System, in modo da prendere confidenza anche col nuovo ambiente.
In primo luogo, dovete accertarvi che i componenti per applicazioni Smart Device siano stati installati. Accertarsi di questo è molto semplice, poiché esiste una specifica categoria di progetti per dispositivi mobili che viene visualizzata quando create un nuovo progetto. Se questa categoria non è presente, dovete installare i componenti necessari. Potete farlo utilizzando il programma di installazione di Visual Studio in modalità di manutenzione, richiamando il Pannello di Controllo (Installazione Applicazioni su Windows XP, Programmi e funzionalità su Windows Vista) e selezionando Visual Studio dall'elenco dei programmi installati. Quando il programma di installazione viene avviato, dovrete selezionare il comando per l'aggiunta/rimozione di nuove funzionalità. Dall'elenco degli strumenti, dovrete selezionare i componenti per la programmazione Smart Device per ciascun linguaggio di vostro interesse, come nella seguente figura:![]()
Questa procedura installerà sul vostro pc alcuni importanti componenti, come l'emulatore di dispositivi mobili (che vi consentirà di testare le applicazioni prima di installarle sul cellulare) e Windows Mobile 5 SDK, un insieme di strumenti e documentazione necessario per lo sviluppo.
Visual Studio 2008 supporta, quindi, lo sviluppo per Windows Mobile 5. Se avete, come me, un dispositivo che ha Windows Mobile 6, dovrete scaricare Windows Mobile 6 SDK.
A seconda del tipo di dispositivo (PocketPC, Smart Phone ecc.) dovrete selezionare l'installer di vostro interesse.Non è superfluo precisare che su Windows Mobile 6 è già installato il .NET Compact Framework 2.0 SP1. Se utilizzate Windows Mobile 5, questo componente dovrà essere installato separatamente. Per tale fattispecie, vi rimando a questo articolo della libreria MSDN.
Analogamente, se volete sviluppare con .NET Compact Framework 3.5 dovrete installarlo separatamente anche su Windows Mobile 6. Per non complicarci troppo la vita con passaggi che possono essere approfonditi successivamente, in questo articolo realizzeremo una semplice applicazione basata su .NET Compact Framework 2.0, utilizzando Visual Studio 2008. I passaggi illustrati sono analoghi anche per la versione 2005.Creazione dell'applicazione
L'applicazione dimostrativa sarà molto semplice. Ci consentirà di aprire il motore di ricerca Google all'interno di un controllo WebBrowser e di andare avanti e indietro con le pagine visualizzate.
Dopo aver avviato Visual Studio, dal menu File selezionate il comando New|Project. Nella finestra che appare, selezionate la categoria di progetti Smart Device, quindi fate clic sul modello Smart Device Project, poi selezionate la versione 2.0 di .NET Framework in alto a destra e assegnate al progetto il nome MyWebBrowser, come nella seguente figura:![]()
Dopo aver fatto clic su OK, viene mostrata una finestra di dialogo per la selezione di alcune proprietà del progetto.
Nel mio caso, avendo Windows Mobile 6, ho selezionato Windows Mobile 6 SDK Standard come piattaforma di destinazione e il .NET Compact Framework 2.0 come run-time. Il modello di applicazione da selezionare è quello chiamato Device Application (vedi figura).![]()
Facendo clic su OK, la creazione del progetto viene avviata.
Come d'incanto, il designer si presenta sotto forma di dispositivo mobile, mostrando la consueta casella degli strumenti, che riporta tutti i controlli utilizzabili in questo tipo di applicazioni, come si può notare dalla seguente immagine:
Per default, Visual Studio 2008 aggiunge un controllo MainMenu al progetto (che in questo caso è posto in basso). Il menu è modificabile secondo le modalità che siete già abituati ad utilizzare in Windows Forms. Pertanto, fate clic sulla sinistra del menu per aggiungere una voce chiamata Web e tre sottovoci: una chiamata Home, una chiamata Indietro e una chiamata Avanti:
Aggiungete una seconda voce di menu, a destra della voce Web, chiamandola Esci. Successivamente, fate clic su Form1 e modificate la proprietà Text dell'oggetto, utilizzando la Finestra delle proprietà, in My Web Browser. Da ultimo, trascinate dalla toolbox un controllo WebBrowser all'interno del display del dispositivo. Il controllo si adatterà automaticamente alle dimensioni del display. Bene, la fase di design è così completata. Rendiamo ora operativa la nostra applicazione.
Get your hands dirty (sporchiamoci le mani col codice)
Fate doppio clic sulla voce di menu Esci. L'editor di codice viene attivato. Come potete notare, in maniera del tutto analoga alle applicazioni Windows classiche, l'IDE genera un gestore dell'evento Click al cui interno va specificato il codice da associare all'evento stesso. Il codice per terminare l'applicazione è il seguente:Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MenuItem5.Click Application.Exit() End SubOra non ci resta che scrivere il codice relativo ai comandi per la navigazione. Il primo snippet permette di aprire il sito Google:
Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MenuItem2.Click WebBrowser1.Navigate(New Uri("http://www.google.it")) End SubI due seguenti snippet consentono, rispettivamente, di tornare indietro e andare avanti tra le pagine visitate:
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MenuItem3.Click WebBrowser1.GoBack() End Sub Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MenuItem4.Click WebBrowser1.GoForward() End SubTutto è pronto per il test. Potete, eventualmente, modificare alcune proprietà dell'applicazione utilizzando la finestra My Project (nome dell'assembly, icona, autore), esattamente come siete abituati a fare nelle applicazioni classiche.
Bene, premete F5 per avviare l'applicazione. In primo luogo vi verrà richiesta, tramite una finestra di dialogo, la modalità di distribuzione dell'applicazione. Al momento accertatevi che sia selezionato il Device Emulator, come in figura, quindi fate clic su Deploy:![]()
Dopo diversi secondi ecco lo spettacolo che appare ai vostri occhi:
![]()
L'applicazione viene mostrata nell'emulatore Microsoft di dispositivi mobili, così come apparirà nel dispositivo, ed è perfettamente funzionante. Non facciamo qui il test della nostra applicazione, poiché l'emulatore va configurato per la connessione a Internet (potete consultare, al riguardo, la relativa documentazione).
Il passaggio successivo è quello di realizzare una procedura di distribuzione che permetta di installare l'applicazione sul dispositivo mobile.
Creazione di una procedura di distribuzione
Sui dispositivi basati su Windows Mobile, le applicazioni vengono installate sotto forma di archivi Cabinet (.cab). Fortunatamente, Visual Studio ci viene incontro ancora una volta nel rendere il più semplice possibile questo tipo di operazione, mediante uno specifico modello di progetto di distribuzione.
Dal menu File, selezionate il comando Add|New project. Nella finestra che appare, selezionate la cartella di modelli chiamata Setup and Deployment, quindi evidenziate il modello Smart Device CAB Project. Assegnate al progetto il nome InstallMyWebBrowser e fate clic su OK (vedi figura):![]()
Quando il progetto viene creato, viene mostrato l'editor del File System.
Trattandosi di una procedura manuale (diversa da un wizard) dobbiamo fare tutto a mano. In primo luogo, modificate la proprietà Manufacturer del progetto (vedi Finestra delle proprietà) assegnando il vostro cognome come valore (io ho utilizzato DelSole, senza spazi). Questo è importante poiché determina il nome della cartella di destinazione nel dispositivo, in cui verrà installata l'applicazione.Fatto questo, fate clic destro sulla cartella Program Files Folder e selezionate il comando Delete del menu di contesto per eliminarla. Fate poi clic sulla cartella Application Folder e, nell'area a destra, fate clic destro, selezionando dal menu contestuale il comando Add|Project output. Apparirà la seguente finestra di dialogo:
![]()
Fate clic su Primary Output (che si riferisce all'eseguibile dell'applicazione) quindi su OK. In questo modo, abbiamo detto al progetto di distribuzione qual è l'eseguibile da installare.
Oltre a specificare l'eseguibile da installare, vogliamo aggiungere un collegamento al menu Start di Windows Mobile per avviare il nostro programma. Fate clic destro sul nodo File System on Target Machine, selezionando il comando Add Special Folder|Start Menu Folder. Sulla destra, fate ancora clic destro, selezionando il comando Create New Shortcut. Nella finestra che appare, sfogliate la cartella Application Folder e selezionate l'output primario del progetto (come in figura), quindi fate clic su OK:![]()
Il collegamento viene aggiunto al progetto. Rinominatelo semplicemente in MyWebBrowser. Il progetto di distribuzione è così completato ed è possibile generare l'archivio CAB. Dal menu Build, selezionate il comando Build InstallMyWebBrowser e attendete che la generazione venga completata.
Installazione dell'applicazione sul dispositivo
L'ultimo passaggio è quello di copiare l'archivio CAB generato sul dispositivo e avviarlo. Collegate il dispositivo mobile al pc ed attendete che la sincronizzazione sia attiva. Copiate in una qualunque cartella del dispositivo i file CabWiz.txt, InstallMyWebBrowser.cab e InstallMyWebBrowser.inf, che trovate nella cartella Documenti\Visual Studio 2008\Projects\MyWebBrowser\InstallMyWebBrowser\Release (o Debug).Fatto questo, prendete il vostro Smart phone o PocketPC e, utilizzando l'applicazione File Explorer di Windows Mobile, aprite la cartella dove avete copiato i file predetti. Selezionate il file InstallMyWebBrowser.cab e seguite le indicazioni riportate sul dispositivo. Se non si verificano errori, l'applicazione viene installata nel dispositivo ed è raggiungibile dal menu Start e potete avviarla semplicemente selezionandola, come qualunque altra applicazione per Windows Mobile. Per disinstallare l'applicazione è sufficiente utilizzare lo strumento Rimuovi programmi disponibile nelle Impostazioni di Windows Mobile.
Conclusioni
Lo sviluppo per dispositivi mobili costituisce un'altra grande frontiera della programmazione .NET, che ci fa capire come, ancora una volta, questa tecnologia consenta di creare applicazioni di qualunque genere, con sforzi relativamente contenuti e con strumenti di eccezionale valore.
Sebbene questo articolo sia stato solo un assaggio, avete appreso i fondamenti per muovervi in questo nuovo mondo. Ovviamente, non dovete trascurare il fatto che il .NET Compact Framework non consente tutto ciò che è previsto dal fratello maggiore .NET Framework. In ogni caso, la documentazione MSDN (con particolare riferimento alla libreria di classi base di .NET) specifica sempre se una determinata classe è utilizzabile anche in .NET Compact Framework.
Per commenti e quant'altro di vostro interesse, potete contattarmi al mio indirizzo visitare il mio blog.