12

Nov

Demo 3 – Interazione con il Sistema – Mandare un SMS

Mandare un SMS con windows mobile e il Compact Framework è questione di una riga di codice (senza esagerare). Il bello è ciò che ci sta dietro e la curiosità sale quando a giocare con noi si unisce anche un altro amico, il Cellular Emulator.

Cellular Emulator

Cercherò di essere breve poichè di materiale sul CE ce n’è molto in giro. Innanzitutto:

  • é installato di default con una installazione full del Windows Mobile SDK
  • Quindi se avete VS Pro sicuramente l’avete già
  • Altrimenti scaricate un SDK nuovo a questo link (link utile anche per leggere le differenze tra i vari Target Platform su cui sviluppare)
  • Ora start => Cellular Emulator (si suppone usiate la fast search di vista/7)

In cosa consiste il Cellular Emulator? è un plugin (ma si dai, passi) per l’emulatore di Windows Mobile. In basso a SX vediamo che è in ascolto su una porta COMX (dove X è un numero).

image

NOTA: ho rubato lo screenshot a questo url perchè su sistemi a 64bit il cellualr emulator non funziona… si avete sentito bene, è scandaloso. Quindi, per evitare di cambiare macchina per il post ho rubato la jpeg :).

Per configurare la comunicazione con l’emulatore ci basta andare sulla finestra dell’emulatore WM e nelle impostazioni, collegare la periferica virtuale con il numero di porta COM vista prima:

image

A questo punto un riavvio di entrambi i tool non fa male.

Già con questa configurazione l’emulatore WM crede di essere anche un telefono e quindi potete giò cominciare a divertirvi facendo fittizie chiamate intercontinentali e/o mandando SMS. Il tutto ovviamente verrà intercettato dal CE che, tramite la sua GUI ci darà il dettaglio del traffico entrante e uscente verso/dal dispositivo. E come fa, del traffico, ad “entrare” nel dispositivo?

Si può usare il CE per iniettare SMS e/o chiamate sul terminale emulato, prassi utile per costruire applicazioni che reagiscano a chiamate e/o SMS entranti. Passiamo al codice.

Codice

Cominciamo da un dogma: Outlook in Windows Mobile, è sovrano.

Prima vi convincete di questo prima capirete che Outlook è così pervasivo nell’ambiente mobile, che potrete controllare quasi tutto con le librerie .NET di OutlookMobile, lasciando il resto a librerie pià di basso livello, ma sempre MAPI-based.

Quindi aggiungiamo una reference alla libreria necessaria:

image

image

Selezione multipla perchè per poter referenziare una libreria di nested-level superiore, bisogna sempre referenziare tutto il percorso dell’albero delle reference…. eh?!?!? :)

A questo punto il codice, in formato ultra-compatto:

image

Finito!!! Due note:

  1. Si può istanziare la classe SmsMessage prima e dare una occhiata alle proprietà che espone, che sono interessanti.
  2. L’oggetto SmsAccount è diverso da null solo se il WM ha un telefono, mi spiego: se il cellular emulator è staccato o se deployate l’applicazione su un PDA, l’oggetto SmsAccount è uguale a null.
by Roberto Freato on 11/12/2009
Post archive