Questo post è stato scritto da Matteo Tumiati, MVP Windows Platform Development, e Giancarlo Lelli, Software Developer in iCubed srl.
Lo scorso ottobre Microsoft ha presentato, cogliendo un po’ tutti di sorpresa, il Microsoft Band, uno smartband che segna l’ingresso di Microsoft nel mondo dei wearable.
Il Microsoft Band è un device che, una volta indossato al polso, ci permette di avere accesso a circa 10 sensori che raccolgono una quantità importante di informazioni che vengono poi elaborate dal servizio Microsoft Health. Oltre ai sensori, abbiamo accesso anche alle notifiche attraverso le applicazioni del calendario, del meteo, delle mail e dei messaggi. Non per ultimo dobbiamo ricordare che abbiamo completo supporto per Cortana, ovvero potremo avviare la nostra assistente personale direttamente dal Microsoft Band, avviare un comando e vedere come questo verrà eseguito sul nostro device.
L’SDK per il Microsoft Band è stato rilasciato da pochi giorni e ci dà l’accesso a ben 8 dei 10 sensori che sono installati sul device ed inoltre questo SDK è disponibile per Android, iOS e ovviamente Windows Phone. Da pochissime ore invece è ufficiale anche il rilascio come componente di Xamarin.
I sensori disponibili sul Microsoft Band sono i seguenti:
Sensore | Descrizione |
Accelerometro | Fornisce le coordinate X, Y, Z di accelerazione in metri per secondo quadro. |
Giroscopio | Fornisce le coordinate X, Y, Z di velocità angolare in gradi al secondo. |
Distanza | Fornisce la distanza totale in centimetri, velocita attuale in centimetri al secondo, la modalità di spostamento (corsa, camminata) e l’andatura in millisecondi al metro. |
Battito cardiaco | Fornisce il numero di battiti al minuto, inoltre indica se il sensore è in sync perfetto con il battito cardiaco di chi lo indossa. |
Pedometro | Fornisce il numero di passi che l’indossatore ha fatto. |
Temperatura della pelle | Fornisce la temperature attuale della pelle dell’indossatore in gradi Celsius. Da notare che la temperatura è quella esterna (non la stessa di quella che usiamo per misurarci la febbre). |
UV | Fornisce l’intensità di esposizione ai raggi UV. |
Contatto fisico | Permette allo sviluppatore di capire se il dispositivo è attualmente indossato. |
Installazione dell’SDK
Per leggere i dati dei sensori, la prima cosa che dobbiamo fare è creare una nuova applicazione Windows Phone da Visual Studio 2013, andare su NuGet ed installare il pacchetto Microsoft.Band. Da notare che questo pacchetto è una preview, quindi ricordatevi di abilitare le pre-release (-Pre se andate dalla console).
L’SDK scaricato dovrebbe abilitare in automatico la capability sul Bluetooth RFComm: per verificarlo basta aprire come XML il file package.appxmanifest e controllare che ci siano queste stringhe:
<DeviceCapability Name="bluetooth.rfcomm" xmlns="http://schemas.microsoft.com/appx/2013/manifest">
<Device Id="any">
<Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" />
<Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" />
</Device>
</DeviceCapability>
Una volta completato questo passaggio andremo ad abilitare anche la capability della Proximity e saremo quindi pronti a scrivere il vero codice.
Lettura dei sensori
La prima cosa che dobbiamo fare adesso è capire se il Band è connesso. Ci basterà usare questa riga:
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
All’interno di pairedBands avremo l’elenco dei Microsoft Band collegati. Chiaramente se il numero di elementi contenuti in questo array è zero, allora non avremo nessun device connesso, altrimenti dovremo scegliere a quale device connetterci attraverso questa riga (al posto di 0 ci va il device scelto):
IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);
Una volta ottenuto il Band del quale vogliamo leggere i valori dei sensori citati sopra, ci basterà registrarci agli EventHandler dei vari sensori per iniziare a ricevere i dati:
bandClient.SensorManager.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
await bandClient.SensorManager.Accelerometer.StartReadingsAsync();
In questo caso ci siamo registrati all’accelerometro e abbiamo creato un metodo Accelerometer_ReadingChanged che, ad esempio, mostrerà a video i dati ricevuti:
private async void Accelerometer_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandAccelerometerReading> e)
{
IBandAccelerometerReading accel = e.SensorReading;
Debug.WriteLine(accel.AccelerationX + ", " + accel.AccelerationY + ", " + accel.AccelerationZ);
}
Allo stesso modo, possiamo collegarci ad uno qualsiasi dei sensori che abbiamo elencato in precedenza.
N.B.: poiché questo SDK è una preview, possiamo testare l’applicazione solamente dal device e non sugli emulatori di Windows Phone già installati con Visual Studio. Sempre perché è una preview, è bene inserire tutto il codice elencato sopra in blocchi try-catch, che abbiamo evitato per semplificare la lettura del codice, ed inoltre lo stesso SDK potrebbe cambiare in vista del rilascio ufficiale.
In conclusione
Volendo è anche possibile leggere i valori delle versioni del firmware del Band, cambiare il tema, oppure creare una tile direttamente sul device per la nostra applicazione (attenzione: non stiamo ancora parlando di applicazioni ad hoc per il Band) che verrà usata solamente per mostrare le notifiche (di tipo messaggio o finestra di dialogo) o per mandare avvisi attraverso le vibrazioni (si può scegliere tra 9 differenti vibrazioni).
Per un maggiore approfondimento su questo SDK per il Microsoft Band vi invitiamo a leggere l’articolo completo pubblicato su ASPItalia.com e vi ricordiamo anche che terremo una sessione ai CommunityDays.
read full article