Abbastanza curioso il
software sviluppato da
S. Senthil Kumar e pubblicato su
Code Project tempo fa: state facendo un viaggio e il vostro palmare, badate bene non dotato di GPS, è in grado di dirvi dove siete in un dato momento e, volendo, anche di mandare SMS a qualcuno per avvertire della vostra posizione nel tragitto.
Wami, questo il nome,
è sviluppato in C# con la versione 2008 di Visual Studio e poggia su .NET Compact Framework relativo alla versione 3.5 del .NET Framework di Microsoft; forse non ha una vera e propria utilità di per sé, ma è interessante il principio su cui si basa:
mentre siete in giro, a piedi o in auto, registra a intervalli di un minuto le informazioni sulle celle a cui il vostro telefono è, di volta in volta, collegato e le memorizza in un file. La volta successiva che si ripeterà lo stesso itinerario
Wami sarà in grado di dirvi dove siete grazie ai dati conservati; magari utilizzandolo contemporaneamente al GPS, che userete per raggiungere una destinazione, potrà esservi utile per spedire SMS ai vostri parenti o amici e segnalare loro che siete a metà strada o in prossimità dell'arrivo.
Wami ha un
modello ad oggetti molto semplice, contenuto in
wamilib.dll ed è suddiviso in tre componenti:
RouteLogger registra i ponti e le celle durante il percorso e li salva in un file;
Wami legge i dati nel file e mostra, sempre sul palmare, la posizione attuale;
RouteEditor edita il file con i dati dei ponti per permettere di associare questi ultimi a dei nomi di luoghi, facilmente riconoscibili dall'essere umano.
Il punto focale, che permette di fare quanto suddetto, risiede nel namespace
Microsoft.WindowsMobile.Status, che contiene la classe
SystemState, in grado di ricevere valori dallo stato di un sistema (quello mobile appunto) quando questo cambia; fra le sue proprietà vi è
PhoneCellBroadcast, che riceve le informazioni sulla cella corrente.
Tornando al sorgente di
Wami, l'autore ha incapsulato questa proprietà nella classe
LocationChangeNotifier, la quale, a sua volta, trasmette le notifiche alla classe
RouteTracker, mentre le classi
RouteManager, RoutePoint e
Route gestiscono i punti di distanza tra un ponte e l'altro. Il namespace
Microsoft.WindowsMobile.PocketOutlook.MessageInterception invece è stato utilizzato per
la spedizione di messaggi di tipo SMS a una lista di contatti; quest'ultima, non essendo gestibile direttamente dal
MessageInterception, è controllata dalla classe
NotificationManager, mantenendo in memoria una serie di trigger e le relative notifiche.
Infine, l'autore ha pensato anche di gestire una sorta di
allarmi sonori nel caso di arrivo a destinazione e altro; di tutto ciò si occupa la classe
CustomSoundPlayer, che contiene una serie di istruzioni
P/Invoke, le quali, in maniera asincrona, eseguono e terminano l'alert sonoro.