Windows Mobile 6: Overview per sviluppatori

Windows Mobile 6: Overview per sviluppatori

Solo qualche mese fa, è stato rilasciato il nuovo sistema operativo Microsoft per i dispositivi mobili. Le novità introdotte da questo nuovo sistema operativo sono numerose, sia dal punto di vista dell’utente finale, sia dal punto di vista degli sviluppatori.

In questo articolo, ci concentreremo principalmente su questo secondo gruppo di novità, analizzando quelle più interessanti dal punto di vista degli sviluppatori.

Overview delle novità

Iniziamo subito col dare uno sguardo a quelle che sono le principali novità introdotte da questa nuova piattaforma.

Una delle prime cose a cui dobbiamo prestare attenzione sulla nomenclatura delle varie versioni di Windows Mobile 6.0 . Essa infatti differisce parecchio dalla precedente versione e, in alcuni casi, potrebbe generare confusione.

La prima cosa che salta all’occhio è l’assenza, nel nome, dalla tipologia di device a cui la versione è dedicata. In passato infatti avevamo le versioni Smartphone, Pocket PC e Pocket PC Phone Edition. Da esse si intuiva immediatamente il target device e di conseguenza, si potevano immediatamente intuire le funzionalità del sistema operativo. Al giorno d’oggi però, la quantità di dispositivi è notevolmente aumentata rispetto al passato. Sono cambiate le funzionalità, il form factor, l’hardware, rendendo meno marcata la distinzione tra la varie tipologie. Non è raro infatti, al giorno d’oggi, trovare sul mercato device molto simili a Smarphone ma dotati di un touch screen.

E’ per questo che, con l’introduzione di Windows Mobile 6.0, si è deciso di dare un taglio netto con il passato e di usare una nomenclatura diversa, e più vicina all’ambiente desktop. Tale nomenclatura, non fa più riferimento al tipo di device in cui sarà installata ma alle funzionalità del sistema operativo stesso.

Nella tabella 1, sono riportati i nuovi nomi, messi in relazione con quelli della versione 5.0.

Windows Mobile 6

Windows Mobile 5.0

Windows Mobile 6 Standard

Windows Mobile 5.0 for Smartphone

Windows Mobile 6 Professional

Windows Mobile 5.0 for Pocket PC Phone Edition

Windows Mobile 6 Classic

Windows Mobile 5.0 for Pocket PC

Tabella 1: le versioni di Windows Mobile 6

Per quanto riguarda le novità introdotte dal nuovo sistema operativo, continua la duplice strada intrapresa ormai da tempo da Microsoft. Se da un lato vengono introdotte funzionalità per gli utenti finali, dall’altro si tende a semplificare e migliorare la vita di noi sviluppatori, introducendo funzionalità, aumentando il numero di API esposte e migliorando la compatibilità dei sistemi.

Per quanto riguarda Windows Mobile 6, sono tre le famiglie in cui sono concentrate le novità: semplificare la creazione di applicazioni che possano funzionare sulle varie versioni di Windows Mobile 6, semplificare lo sviluppo e la distribuzione delle applicazioni e migliorare la User Experience.

Più in dettaglio:

·         Semplificare la creazione di applicazioni che funzionano sulle varie tipologie di device:

o   Gli emulatori sono stati arricchiti di funzionalità utili a testare le applicazioni su un numero maggiore di device, di svariati tipi

o   Le API esposte dal sistema operativo sono numerose, rendendo possibile la scrittura di applicazioni che funzionano indipendentemente su un numero maggiore di device

·         Semplificare lo sviluppo e la distribuzione delle applicazioni:

o   Per la prima volta, il .NET Compact Framework 2.0 Service Pack 1 e Microsoft SQL Server 2005 Compact Edition sono inclusi direttamente nella ROM. In questo modo, si riduce notevolmente il lavoro di distribuzione delle applicazioni, evitando tutti quei problemi dovuti all’installazione dei componenti di base

o   Potenziamento degli emulatori che adesso includono anche funzionalità avanzate, come l’emulazione del livello di carica della batteria o del passaggio da alimentazione di rete a batteria

o   Nuova funzionalità di test delle funzionalità di Global Position System (GPS)

o   E’ incluso un emulatore di telefonia cellulare che permette di simulare telefonate all’emulatori di Windows Mobile 6 (nella versione 5 era possibile solo simulare le telefonate in uscita). Questo consente di testare le applicazioni anche simulando l’arrivo di una telefonata.

·         Miglioramento della User Experience:

o   In linea generale, l’interfaccia di Windows Mobile 6 è stata migliorata sia per renderla più gradevole che più funzionale. Tali migliorie si riflettono anche sulle nostre applicazioni.

o   E’ stata aggiunta una versione ridotta delle API di riconoscimento della scrittura (disponibili sui dispositivi Tablet PC)

o   Sono presenti nuove API che permettono la riproduzione di una grande varietà di suoni.

Tools ed SDK

Per poter creare applicazioni per i dispositivi mobili, è necessario innanzitutto scaricare ed installare il relativo SDK. Per Windows Mobile 6, abbiamo a disposizione due distinti pacchetti scaricabili dal seguente indirizzo: http://www.microsoft.com/downloads/details.aspx?FamilyId=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en .

I due pacchetti permettono comprendono tutti i necessari tools e librerie necessari per creare e testare applicazioni per Windows Mobile 6 e sono:

·         Windows Mobile 6 Standard SDK per la versione Standard

·         Windows Mobile 6 Professional per le versioni Professional e Classic

Uno dei prerequisiti per l’installazione degli SDK, è la presenza del .NET Compact Framework 2.0 SP1 scaricabile dal seguente indirizzo: http://www.microsoft.com/downloads/details.aspx?familyid=7befd787-9b5e-40c6-8d10-d3a43e5856b2&displaylang=en .

Una volta installati i due pacchetti, in Microsoft Visual Studio 2005 saranno disponibili i project template per questo tipo di sistema operativo (vedi Fig. 1).

Figura 1: i nuovi project template per Windows Mobile 6

I nuovi emulatori

Quando si sviluppano applicazioni per dispositivi mobili, l’importanza degli emulatori è vitale per due semplici ragioni:

·         Non è pensabile che una azienda possa avere a disposizione tutte le tipologie di device in commercio per poter sviluppare e testare le applicazioni. E’ quindi indispensabile avere a disposizione una serie di emulatori che, almeno nella fase di sviluppo, possano essere usati al posto dei device reali.

·         L’emulatore deve essere quanto più possibile vicino al sistema reale, sia in termini di funzionalità che di comportamento del sistema emulato.

Con il passare degli anni (e con l’arrivo delle diverse versioni di Windows Mobile), gli emulatori si sono via via evoluti fino ad arrivare all’attuale versione denominata Device Emulator 2.0 . Questa versione emula infatti alla perfezione il device fisico reale, rendendo le operazioni di sviluppo e di testing estremamente realistiche. Il nuovo engine di emulazione, viene automaticamente installato con l’SDK e sostituisce quello precedente. In questo modo, tutte le applicazioni per dispositivi mobili che realizzeremo, useranno il nuovo engine, beneficiando sia delle nuove funzionalità, che di una maggiore ottimizzazione del codice dell’emulatore, rendendo più rapide le operazioni di deploy e testing dell’applicazione.

Oltre alle ottimizzazioni dell’engine, sono stati introdotti anche nuovi tipi di device emulati. In figura 2 i 3 più significativi.

Figura 2: tre emulatori disponibili

Funzionalità avanzate degli emulatori

Oltre alle tipologie di device, l’SDK di Windows Mobile 6 introduce, negli emulatori, una serie di funzionalità avanzate che ci permettono di testare le applicazioni in diverse condizioni. Abbiamo ad esempio la possibilità di simulare il livello della batteria del device, il passaggio dall’alimentazione a batteria a quella di rete e, cosa molto interessante, possiamo simulare anche l’arrivo di una chiamata.

Vediamo, di seguito, alcune di queste funzionalità avanzate.

Gestione dell’alimentazione

Su qualsiasi tipologia di device mobile, sia esso un notebook, un Pocket PC, un tablet PC etc., dovrebbe essere sempre gestita l’eventualità che la batteria del device sia scarica e che questo potrebbe causare una perdita dei dati su cui si stà lavorando. Sebbene Windows Mobile 6 notifichi questa eventualità all’utente, è sempre opportuno fare in modo che il nostro software reagisca in qualche modo quando il livello di batteria scende (magari al di sotto di una certa soglia).

Per intercettare questo tipo di eventi, possiamo affidarci alla classe SystemState del Namespace Microsoft.WindowsMobile.Status che espone un evento denominato appunto Changed.

Di seguito un breve esempio di codice che mostra il modo in cui utilizzare questo oggetto:

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.Status;

 

namespace MSDN.WM6.PPC {

    public partial class Form1 : Form {

        private SystemState systemState;   

          

        public Form1() {

            InitializeComponent();

            systemState = new SystemState(SystemProperty.PowerBatteryState);

            systemState.Changed += new ChangeEventHandler( systemState_Changed );

        }

 

        /// <summary>

        /// Gestore dell’evento changed

        /// </summary>

        /// <param name=”sender”></param>

        /// <param name=”args”>ChangeEvetArgs</param>

        void systemState_Changed( object sender, ChangeEventArgs args ) {

            lblBattery.Text = SystemState.PowerBatteryState.ToString();

        }

    }

}

 

In questo particolare caso, come è evidente dal codice, andrà simulato lo scaricamento della batteria dell’emulatore. Operazione fortunatamente possibile. Sarà necessario aprire l’emulatore, scegliere il menù File e la voce Configure, scegliendo poi il tab Peripherals (Fig. 3).

Figura 3: modifica del livello di batteria dell’emulatore

Modificando il livello di batteria dell’emulatore, verrà sollevato il relativo evento e sarà possibile eseguire correttamente  i nostri test (Fig. 5 ).

 

Figura 4: test dell’applicazione

Simulare la chiamata

Quando abbiamo a che fare con device dotati di funzionalità telefoniche, capita di avere l’esigenza di sviluppare applicazioni che interagiscono con tali funzionalità. Ad esempio, può tornare molto comodo avviare una chiamata ad un contatto presente nella nostra applicazione senza uscire da essa. Viceversa, può essere necessario far si che la nostra applicazione reagisca all’arrivo di una chiamata.

Non è scopo di questo articolo capire come fare, ma comprendere come gestire questi test con l’emulatore.

Sebbene nel primo caso, a partire da Windows Mobile 5.0 è semplice sia sul piano implementativo che su quello di test (l’emulatore simula a tutti gli effetti una chiamata), diverso è il caso in cui dobbiamo simulare una chiamata in arrivo.

L’SDK di Windows Mobile 6, in questo ci aiuta parecchio grazie alla presenza di un nuovo tool chiamato Cellular Emulator.

Figura 5: il cellular emulator tra i tool dell’SDK

Grazie a questo tool è infatti possibile sia far “vedere” al nostro device una rete GSM (o UMTS) fittizia, sia simulare chiamate verso l’emulatore, connessioni GPRS, inviare SMS all’emulatore etc.

Per attivare il Cellular Emulator e farlo dialogare con l’emulatore di Windows Mobile, è necessario seguire alcuni semplici passi.

Innanzitutto va avviato il Cellular Emulator cliccando sulla relativa icona. Una volta avviato, dalla status bar va letto il numero di porta COM su cui è in funzione.

Figura 6: la status bar del Cellular Emulator

A questo punto, non ci resta che avviare l’emulatore, scegliere il menù File e la voce Configure, scegliendo poi il tab Peripherals (Fig. 3) e, sulla Serial Port (0), inserire il numero di porta COM letto dal Cellular Emulator. Fatto questo, confermare l’operazione ed eseguire un Soft Reset dell’emulatore. Al riavvio, vedremo la presenza di una rete GSM (Fig. 7).

Figura 7: la presenza del segnale GSM sull’emulatore

A questo punto, non ci resta che effettuare la chiamata all’emulatore. Abbiamo a disposizione una serie di numeri telefonici fittizi che corrispondono ad altrettanti tipi di chiamata (Fig. 8).

Figura 8: i numeri telefonici da chiamare

Asseconda del numero chiamato, l’emulatore si comporterà esattamente come un device reale e ci permetterà di eseguire i nostri test (Fig. 9).

Figura 9: una simulazione di chiamata

Hopper

Sempre nell’ottica di effettuare un testing migliore delle nostre applicazioni, tra i tool dell’SDK è stato introdotto Hopper (il file è situato all’interno della directory di installazione dell’SDK sotto ToolsHopper).

Lo scopo di questo tool è quello di simulare, in rapida successione, dei click random nella nostra applicazione. In questo modo viene simulato un uso prolungato della stessa e possono emergere problematiche che durante i normali test non emergono. Non è raro infatti, che una applicazione per dispositivi mobili resti in esecuzione per lungo tempo sul device (se non viene esplicitamente chiusa o non viene fatto un soft reset del device). L’uso prolungato, fino ad oggi, non era possibile testarlo. Hopper ci aiuta proprio in questo tipo di testing.

Per usare questo tool, sarà sufficiente copiarne l’eseguibile nella root del device, avviare prima l’applicazione da testare e successivamente l’eseguibile di Hopper lasciandolo in esecuzione. Verrà creato un file di log da cui sarà poi possibile risalire ad eventuali problematiche emerse durante il test.

Fake GPS

L’alta disponibilità di ricevitori GPS (molti device ne sono equipaggiati direttamente dalla fabbrica), il basso costo di questi dispositivi, il tutto unito al GPS Intermediate Driver introdotto da Windows Mobile 5.0, rendono molto semplice la creazione di applicazioni abilitate alla localizzazione.

Uno dei problemi maggiori è però quello di testarle. Sebbene si potesse eseguire un test limitato ad una zona circoscritta utilizzando un device reale, fino a poco fa non era possibile eseguire dei test con l’emulatore.

Windows Mobile 6 risolve questa problematica mediante una funzionalità chiamata appunto Fake GPS.

Sarà infatti sufficiente installare il tool presente nell’SDK sul device, creare un file che emuli i messaggi inviati dal ricevitore, copiare il suddetto file nella cartella Program FilesFakeGPSGPS dell’emulatore (o del device) ed abilitare il tool FakeGPS.

Un esempio di file è il seguente:

$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21

$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E

$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77

$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42

$GPGSV,3,3,9,134,0,0,0*46

$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21

$GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75

$GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21

$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E

$GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2A

 

Conclusioni

Windows Mobile 6 introduce numerose novità che migliorano l’usabilità dei dispositivi mobili, ma soprattutto rendono la vita più semplice a noi sviluppatori. In questo articolo abbiamo visto alcune delle nuove funzionalità più “developer oriented”. Funzionalità che ci permettono di scrivere software migliore e più facilmente testabile.

Riferimenti

Un esauriente articolo (in inglese) è disponibile al seguente indirizzo: http://msdn2.microsoft.com/en-us/library/bb278115.aspx