Passa ai contenuti principali

Microsoft Band SDK–Accesso ai sensori

In questo post cominciamo a vedere quali cambiamenti e novità sono state introdotte nella nuova versione (la 1.3.10417) dell’SDK per il Band rilasciata il 30 aprile scorso.
In particolare, in questo post, prenderemo in esame la parte di accesso ai sensori e partiremo dal mio precedente post "Accesso ai sensori".
Per cominciare, la nuova versione dell’SDK espone un nuovo sensore, quello per il consumo calorico, il quale ci permette di conoscere il consumo di calorie a partire dall’ultimo reset del device.
Il suo funzionamento è analogo a quello degli altri (ad esempio quello di misurazione della temperatura corporea).
Come già mostrato nel precedente post, l’accesso ai sensori avviene tramite l’istanza dell’interfaccia ISensorManager esposta dall’istanza corrente di IBandClient.
In questa versione dell’SDK, oltre al già citato sensore per il consumo calorico, è stata rinominata la proprietà di ISensorManager che espone il sensore di esposizione agli UV.
Come possiamo vedere dalla successiva immagine, la proprietà che ci da accesso a tale sensore si chiama ora UV, anziché Ultraviolet come nella precedente versione.

image

Il sensore per l’esposizione UV, inoltre, prevede un cambiamento nell’interfaccia IBandUVReading restituita dall’evento ReadingChanged.

image

La proprietà IndexLevel è un’enumerazione che indica il livello di esposizione ai raggi UV (a differenza della versione precedente che restituiva un numero poco comprensibile).

image

Altra cosa che è stata cambiata riguarda la gestione della privacy nell’utilizzo dei dati provenienti dai sensori.
Come possiamo osservare dalla seguente immagine:

image

l’interfaccia IBandSensor espone due metodi per gestire il consenso dell’utente all’utilizzo dei dati del sensore.
Il metodo GetCurrentUserConsent ci fornisce la selezione dell’utente corrente in fatto di consenso all’utilizzo di quel determinato sensore ed è il metodo che dobbiamo utilizzare per verificare se l’utente ha dato il consenso o meno.
Il metodo RequestUserConsentAsync permette, invece, di richiedere l’autorizzazione all’utente. Nella realtà dei fatti, solo alcuni sensori hanno la richiesta esplicita all’utente, cioè, nel momento in cui si invoca tale metodo, si ha effettivamente la visualizzazione della finestra di richiesta del consenso.
Per capire quali sensori effettivamente mostrano il consenso all’utente, è sufficiente andare a decompilare la Microsoft.Band.dll (ad esempio con Reflector) e vedere che tutti i sensori derivano da una classe internal (Friend) chiamata BandSensorBase(Of T), la cui struttura è la seguente:

image

e, in particolare, il metodo RequestUserConsentAsync ha la seguente implementazione

image

che restituisce sempre true.
Il metodo è Overridable e, infatti, in alcuni sensori, come ad esempio l’HeartRate, viene ridefinito con la seguente implementazione:

image

cioè viene effettivamente richiesto il consenso all’utente.
In questa versione dell’SDK, l’unico sensore che richiede effettivamente il consenso all’utente è proprio l’heartrate.
In ogni caso è buona norma prevedere sempre l’utilizzo del metodo RequestUserConsentAsync a prescindere dal tipo di sensore in modo da non avere sorprese se in futuro cambiasse la situazione.

' Recupero il consenso precedentemente espresso dall'utente
Dim userConsent As UserConsent = bandClient.SensorManager.HeartRate.GetCurrentUserConsent()
If userConsent <> UserConsent.Granted Then
    ' se il consenso non e' concesso richiedo il consenso all'utente
    If Await bandClient.SensorManager.HeartRate.RequestUserConsentAsync() Then
        userConsent = UserConsent.Granted
    End If
End If
If userConsent = UserConsent.Granted Then
    AddHandler bandClient.SensorManager.HeartRate.ReadingChanged, AddressOf HeartRate_ReadingChanged
    Await bandClient.SensorManager.HeartRate.StartReadingsAsync()
Else
    ' Utente non ha concesso il consenso e la lettura non viene avviata
End If

Nell’esempio precedente di codice viene preso in esame il sensore del battito cardiaco, ma il meccanismo è lo stesso per qualsiasi altro sensore.


Commenti

Post popolari in questo blog

VB.NET: Convertire un file DOC in RTF e PDF con office interop

In questo post vorrei proporvi del codice per poter convertire un file .doc in un file .rtf oppure .pdf utilizzando le API di interoperabilità di Office.Creeremo una classe, DocConverter, che esporrà le due funzionalità sopra citate.Cominciamo con il prevedere un attributo privato della classe che rappresenterà l’applicazione Word che utilizzeremo per la conversione. Creeremo l’istanza dell’attributo privato all’interno del costruttore della classe:PublicSubNew()
IfNot CreateWordApp() Then
ThrowNew ApplicationException("Assembly di interoperabilità con Office non trovato!")
EndIf
EndSub
Private _wordApp As Word.ApplicationClass
ProtectedFunction CreateWordApp() AsBoolean
Dim retval = True
Try
_wordApp = New Word.ApplicationClass()
_wordApp.Visible = False
Catch ex As System.Exception
_wordApp = Nothing
retval = False
EndTry
Return retval
EndFunction

La conversione del file doc sarà effettuata aprendo il file stesso ed eseguendo un’operazione di SaveAs:

Pr…

Cambiare la lingua di Visual Studio 2008

Oggi ho avuto qualche problema installando Windows Mobile 6 Professional SDK Refresh e Windows Mobile 6 Standard SDK Refresh.Scaricati i file di installazione e installati, ho provato a creare un progetto di tipo Windows Mobile 6.0 e mi sono beccato questo errore:Dopo qualche smanettamento abbiamo scoperto (e ringrazio il mitico Matteo per l’aiuto) che il mio Visual Studio 2008, pur essendo in Inglese (prova ne era il fatto che gli hotfix e la SP installata erano nella lingua di Albione) aveva come lingua impostata quella del sistema operativo (italiano).Ovviamente, non avrebbe mai potuto trovare la cartella 1040 (italiano) visto che l’installazione dell’SDK aveva supposto che la lingua del Visual Studio fosse Inglese (1033).La soluzione del problema è duplice:1) Duplicate la cartella 1033 presente nel percorso evidenziato dall’errore e la rinominate 10402) cambiate la lingua di Visual Studio.Per questa ultima eventualità basta andare nel menù Strumenti/Opzioni:e cambiare il linguaggi…

Tascam DR-05 registratore digitale per tutti

Diverso tempo fa ho acquistato il registratore digitale Tascam DR-05 e, ora, dopo diversi mesi di utilizzo, posso dire la mia a proposito.

Si tratta di un ottimo registratore digitale con microfono stereo che permette di ottenere registrazioni di ottima qualitaà anche in ambienti non perfetti dal punto di vista acustico.

Interessante la possibilità di utilizzare un cavalletto di piccole dimensioni come HAMA Mini treppiede o Mini Cavalletto Universale per tenere il microfono sollevato dal tavolo in fase di registrazione grazie allàattacco universale per macchina fotografica che il microfono ha nella parte inferiore.

Da segnalare anche il menu’ ben fatto e la possibilita’ di utilizzare una scheda SD esterna per memorizzare i file audio. Anche a livello di consumo batterie non e’ niente male. Consiglio l’uso delle alcaline non ricaricabili.

Il mio utilizzo e’ stato prettamente di registrazione di podcast vocali (no musica) ma le recensioni confermano che se la cava egregiamente con la mu…