Lo sviluppo su dispositivi mobili

Di Michele Locuratolo - Microsoft MVP

In questa pagina

Introduzione Introduzione
Microsoft Visual Studio 2005 Microsoft Visual Studio 2005
La creazione di un progetto La creazione di un progetto
Altre funzionalità dell’emulatore Altre funzionalità dell’emulatore
Emulazione di Smartphone Emulazione di Smartphone
Conclusioni Conclusioni

Introduzione

Lo sviluppo di una applicazione per dispositivi mobili, sebbene abbia molte similitudini con le classiche applicazione Windows Forms, differisce da esse per diverse caratteristiche da tenere in conto quando si lavora con il Microsoft .NET Compact Framework e con i relativi device.

Si va da differenze puramente “user oriented” (lo spazio limitato sul device, il tipo di utilizzo, la piattaforma limitata rispetto ai normali PC), a differenze di tipo puramente architetturale, come le risorse Hardware, i naturali limiti del Microsoft .NET Compact Framework, il device che deve essere emulato etc. Non sempre infatti possiamo avere a diposizione i dispositivi mobile per fare i test e, anche se possiamo utilizzarli, non è pensabile che ogni volta la soluzione debba essere distribuita sui device fisici per essere testata.

Fermo restando che, prima di distribuire un’applicazione per dispositivi mobili, essa debba sempre essere testa sui device fisici, per lo sviluppo useremo i comodi emulatori che, come vedremo in questo articolo, hanno pro e contro.

Nel primo articolo di questa serie, abbiamo visto in generale cosa sono i dispositivi mobili, quali sono le versioni del sistema operativo usate sui vari device e abbiamo dato uno sguardo alle caratteristiche principali che interessano noi sviluppatori.

In questo secondo articolo, inizieremo a dare uno sguardo ai tool che si usano per sviluppare applicazioni per dispositivi mobili. Parleremo di Microsoft Visual Studio 2005, di emulatori, di SDK e di sistemi per comunicare sia con i nostri device sia con gli emulatori.

Vedremo come sviluppare una semplice applicazione (il classico “Hello World”) per iniziare a prendere confidenza con l’ambiente di sviluppo e con alcune caratteristiche del Microsoft .NET Compact Framework 2.0 e degli emulatori.

Microsoft Visual Studio 2005

Per avvalersi di tutte le funzionalità introdotte da Windows Mobile 5.0 e dal .NET Compact Framework 2.0 è necessario utilizzare i corretti strumenti di sviluppo. Microsoft Visual Studio 2005, dalla versione Standard Edition, è lo strumento principale con cui sviluppare applicazioni anche per dispositivi mobili. Come evidenziato in questa tabella infatti, nelle versioni Express della famiglia Visual Studio, non c’è supporto per questa tipologia di progetti.

Di default, possiamo sviluppare applicazioni per dispositivi equipaggiati con Windows Mobile 2003 (Pocket PC e Smartphone) e Windows CE 5.0. Per lavorare su Windows Mobile 5.0 è necessario scaricare il relativo SDK per entrambe le tipologie di device:

Grazie all’utilizzo di Microsoft Visual Studio 2005, abbiamo un designer estremamente comodo in quanto ci da la possibilità di realizzare interfacce utente direttamente su un emulatore. Abbiamo inoltre pieno supporto per l’intellisense, possibilità di compilare e distribuire sia su emulatore sia direttamente sul device connesso, possibilità di lavorare direttamente sul Data Base etc.

Il nuovo IDE, insieme al nuovo sistema operativo e al Microsoft .NET Compact Framework 2.0, rendono lo sviluppo di applicazioni per dispositivi mobili molto più rapido e produttivo rispetto al passato. Chi ha sviluppato applicazioni con Microsoft Visual Studio 2003 e con il Microsoft .NET Framework 1,1, troverà nel nuovo ambiente molti elementi che in passato erano da ricercarsi in librerie esterne. La possibilità poi di sviluppare direttamente su un template che rappresenta il dispositivo, la possibilità di interagire con i pulsanti del device direttamente a design time, la possibilità di orientare il dispositivo per vedere l’applicazione in modalità landscape, renderanno lo sviluppo talmente comodo da rendere difficile l’abbandono di questa piattaforma.

La creazione di un progetto

Il primo passo per la creazione di un’applicazione per dispositivi mobili è la creazione di un progetto. In Microsoft Visual Studio 2005, dopo aver installato gli SDK per i device equipaggiati con Windows Mobile 5.0, avremo a disposizione diverse tipologie di progetto, sia per Visual Basic .NET che per C#.

Tra le tipologie di progetto selezionabili sotto la voce Smart Device, com’è facile immaginare, troviamo:

  • PocketPC 2003: per lo sviluppo su device equipaggiati con Windows Mobile 2003 per Pocket PC

  • Smartphone 2003: per lo sviluppo su device equipaggiati con Windows Mobile 2003 per Smarphone

  • Windows CE 5.0: per lo sviluppo su device equipaggiati con Windows CE 5.0

  • Windows Mobile 5.0 Pocket PC: per lo sviluppo su device equipaggiati con Windows Mobile 5.0 per Pocket PC

  • Windows Mobile 5.0 Smartphone: per lo sviluppo su device equipaggiati con Windows Mobile 5.0 per Smartphone

I primi tre tipi di progetto erano disponibili anche prima dell’installazione dei relativi SDK. Gli ultimi due sono stati aggiunti dopo i relativi setup.

In Figura 1 è visibile la finestra “New Project” di Microsoft Visual Studio 2005 con tutte le tipologie di progetto disponibili.

*

Figura 1: La finestra New Project di Microsoft Visual Studio 2005

Per la creazione della nostra prima applicazione, scegliamo come Project Type “Windows Mobile 5.0 Pocket PC” e come template “Device Application”.

Come accade per le classiche applicazioni Windows Forms, Microsoft Visual Studio 2005 creerà l’intera struttura di progetto, con la particolarità che, per il disegno dei forms, avremo a disposizione un template che rappresenta il tipo di device scelto (Figura 2).

*

Figura 2: Il nostro progetto

Come avviene per le applicazioni Windows Forms, possiamo trascinare dalla toolbox i vari elementi e comporre la nostra interfaccia utente. Iniziamo quindi a comporre la nostra interfaccia come avviene per le classiche applicazioni Windows Forms trascinando una Label, una TextBox ed un Button (Figura 3).

*

Figura 3: la composizione della nostra applicazione

Una volta composta la nostra applicazione, implementiamo l’evento Click del bottone inserito in questo modo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MSDN.HelloWorld {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        /// <summary>
        /// Evento click del bottone
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTest_Click( object sender, EventArgs e ) {
            MessageBox.Show( "Hello " + tbxNome.Text, "Hello Mobile World" );
        }
    }
}

Fin qui, nulla di diverso rispetto a quello che siamo abituati a fare con le classiche applicazioni Windows. Ma ora è il momento di eseguire il build della nostra soluzione e di vederla in esecuzione. Per le applicazioni Windows Forms, avviando l’applicazione dal menù Debug alla voce “Start Without Debugging” (o attraverso lo short cut CTRL + F5), l’applicazione era direttamente avviata. Lavorando con le applicazioni mobili invece, dobbiamo prima scegliere il target device su cui l’applicazione deve essere mandata in esecuzione. Avviando l’applicazione, infatti, attraverso la maschera di Figura 4, ci verrà chiesto dove distribuire la nostra applicazione.

*

Figura 4: i target device su cui distribuire l'applicazione

Avendo scelto, in fase di creazione del progetto, la piattaforma Windows Mobile 5.0 Pocket PC, in questa finestra ci verranno proposte tutte le soluzioni possibili per la specifica tipologia di progetto. Se avessimo scelto la piattaforma Windows Mobile 5.0 Smartphone, avremmo trovato le relative tipologie di device.

Oltre ai vari emulatori, è importante notare che possiamo distribuire l’applicazione anche ad un dispositivo reale, se collegato al PC.

Sia in caso di deploy su emulatore che su device fisico, Microsoft Visual Studio 2005 si occuperà di verificare la presenza di tutti componenti necessari al corretto funzionamento dell’applicazione (come il Microsoft .NET Compact Framework 2.0) e, in assenza di essi, si occuperà di installarli.

Verranno inoltre copiati tutti gli assembly nella directory di default MyDevice\Program Files\NomeApplicazione e l’aplicazione verrà avviata. In Figura 5, la nostra applicazione in esecuzione sull’emulatore.

*

Figura 5: l'applicazione in esecuzione sull'emulatore

I nuovi device, già da quelli equipaggiati con Windows Mobile 2003 SE, permettono di ruotare lo schermo per passare dalla modalità Portait (quella che abbiamo usato fino ad ora), alla modalità Landscape (con lo schermo in orizzontale).

Passando da una modalità all’altra, come è facile immaginare, lo spazio a disposizione dei nostri controlli cambia e, quello che va bene in una modalità, potrebbe essere inusabile nell’altra.
Sebbene la disposizione dei controlli, da sempre, può essere regolata dall’attributo Anchor (esposto praticamente da tutti), prima dell’arrivo di Microsoft Visual Studio 2005 è stato un problema testare le interfacce utente nelle due modalità. L’unica soluzione era quella di distribuire l’applicazione sul device fisico o sull’emulatore ed effettuare il test.

Oggi invece, è tutto molto più comodo e veloce. Direttamente nella finestra di progettazione dell’interfaccia, è possibile ruotare lo schermo per visualizzare l’applicazione nelle due modalità. Nella toolbar relativa al device infatti, sono presenti due icone (Figura 6) che permettono la rotazione della superficie di disegno, dandoci la possibilità di regolare i controlli direttamente a design time (Figura 7).

*

Figura 6: la toolbar relativa al device

*

Figura 7: il form in modalità landascape in design

Altre funzionalità dell’emulatore

Molte funzionalità sono state introdotte dai nuovi emulatori e dall’SDK. Funzionalità di che, di primo acchito, possono sembrare poco utili o scontate ma di cui si è sentita molto la mancanza in passato.

Una delle prime funzionalità è la possibilità di eseguire l’emulatore in modalità stand alone e senza la necessità di installare Microsoft Visual Studio 2005 (ovviamente deve essere installato l’SDK!). Grazie a questa funzionalità, abbiamo la possibilità di provare le nostre applicazioni anche su altri PC o effettuare demo senza la necessità di installare troppi programmi.

L’avvio dell’emulatore in modalità stand alone avviene grazie ad un tool chiamato “Device Emulator Manager”, installato nella directory C:\Program Files\Microsoft Device Emulator\1.0 . Una volta avviato, sarà possibile avviare uno qualsiasi degli emulatori presenti (Figura 8).

*

Figura 8: il Device Emulator Manager

Lo stesso sarà avviabile anche direttamente da Microsoft Visual Studio 2005 attraverso il menù Tools, selezionando la voce “Device Emulator Manager”.Un'altra funzionalità estremamente comoda è la possibilità di connettere l’emulatore al PC, esattamente come se si stesse collegando il device reale. Sebbene anche in passato fosse possibile, attraverso opportuni powertoys, fare la stessa operazione, oggi è molto più semplice ed immediata.Dare la possibilità di emulare la connessione al PC attraverso Active Sync (o Windows Mobile Device Center per i possessori di Windows Vista), consente un testing più approfondito di quelle applicazioni che hanno la necessità di comunicare con il PC per la sincronizzazione dei dati (e viceversa, permette di testare attraverso l’emulatore, quelle applicazioni Windows che devono comunicare con il device).La connessione del device avviene grazie al “Device Emulator Manager”, facendo click con il tasto destro del mouse sull’emulatore da connettere e selezionando la voce “Craddle”. Se è la prima volta che eseguiamo questa operazione, ci verrà chiesto di creare la partnership tra il device ed il nostro PC. Una volta completate le operazioni, ci troveremo l’emulatore correttamente collegato.

Emulazione di Smartphone

Nel precedente articolo, abbiamo visto quali sono le differenze tra le piattaforme Pocket PC, Pocket PC Phone Edition e Smartphone. Come è lecito aspettarsi, queste differenze si riflettono anche sugli emulatori.

Di particolare interesse è il discorso relativo agli Smartphone in quando, per essi, oltre alle normali funzionalità da emulare, va gestita anche l’emulazione delle telefonate (oltre ad un più massiccio uso dei tasti hardware data l’assenza del touch screen).

Creando un progetto per Smartphone, il designer si presenterà come in Figura 9.

*

Figura 9: il designer per Smartphone

Realizziamo una piccola applicazione di esempio che faccia uso delle funzionalità telefoniche. Trasciniamo quindi nella form una Label ed una TextBox in cui inseriremo il numero di telefono da comporre. Dato che, come abbiamo già visto, il display non è touch screen, non possiamo inserire i classici bottoni (che non potrebbero essere cliccati). Tutte le azioni andranno quindi svolte tramite i menù.

Aggiungiamo quindi una nuova voce chiamata Dial direttamente sotto bottone hardware di destra ed implementiamo l’evento click come segue:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsMobile.Telephony;

namespace MSDN.HelloWorldSmartphone {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        /// <summary>
        /// Evento click del menù
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuItem2_Click( object sender, EventArgs e ) {
            Phone _phone = new Phone();
            _phone.Talk( tbxNumero.Text, true );
        }
    }
}  

Come già fatto in precedenza, mandiamo in esecuzione l’applicazione e scegliamo come target device l’emulatore relativo a Windows Mobile 5.0 Smartphone.

Una volta avviata l’applicazione, si presenterà come in figura 10.

*

Figura 10: l'applicazione in esecuzione sull'emulatore

Alla pressione della voce di menù “Dial” verrà simulata una chiamata sull’emulatore (ovviamente non viene eseguita nessuna telefonata reale), dandoci la possibilità di testare effettivamente anche parte delle funzionalità telefoniche.

*

Figura 11: la simulazione di una chiamata

Conclusioni

In questo secondo articolo, abbiamo iniziato a vedere alcune delle caratteristiche relative allo sviluppo di applicazioni per dispositivi mobili. Abbiamo iniziato a toccare con mano i tool di sviluppo e gli emulatori, andando a considerare alcuni aspetti che, in futuro, ci serviranno molto durante lo sviluppo di applicazioni avanzate.


Page view tracker