Condividi tramite


Scelta dei sensori da usare (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

I sensori permettono a un'app di conoscere la relazione tra un dispositivo e il mondo fisico circostante. Possono indicare a un'app la direzione, l'orientamento e il movimento del dispositivo. Questi sensori possono contribuire a rendere più utile e interattivo un gioco, un'app di realtà aumentata o un'app di utilità offrendo una forma unica di input, ad esempio usando il movimento del dispositivo per disporre i caratteri sullo schermo o per simulare una cabina di pilotaggio con il dispositivo usato come volante.

Come regola generale, decidi dall'inizio se l'app dipenderà esclusivamente da sensori oppure se i sensori offriranno semplicemente un meccanismo di controllo aggiuntivo. Ad esempio, un gioco di simulazione di corse che usa un dispositivo come volante virtuale può essere controllato anche tramite una GUI su schermo. In questo modo l'app funziona indipendentemente dai sensori disponibili nel sistema. D'altra parte, è possibile scrivere il codice di un labirinto inclinato con biglie in modo che funzioni solo in sistemi con sensori appropriati. Devi prendere la decisione strategica se basarti solo sui sensori. Considera che uno schema di controlli tramite mouse/tocco offre un maggiore controllo a discapito dell'effetto immersivo.

Invio in batch dei dati dei sensori

Alcuni sensori supportano il concetto di invio in batch. Questo varia a seconda del singolo sensore disponibile. Quando un sensore implementa l'invio in batch, raccoglie diversi dati in un intervallo di tempo specificato e trasferisce tutti questi dati in una sola volta. Questo è diverso dal normale comportamento, in cui un sensore segnala i risultati ottenuti non appena esegue una lettura. Considera il diagramma seguente, in cui è illustrato come vengono raccolti e quindi trasferiti i dati, prima con l'invio normale e quindi l'invio in batch.

Raccolta di dati del sensore in batch

Il vantaggio principale dell'invio in batch dei dati del sensore è il prolungamento della durata della batteria. Quando i dati non vengono inviati immediatamente, questo garantisce un risparmio di energia del processore ed elimina l'esigenza di elaborare immediatamente i dati. Alcune parti del sistema possono restare in sospensione finché non sono necessarie, generando un significativo risparmio di energia.

Puoi influenzare la frequenza con cui il sensore invia i batch regolando la latenza. Ad esempio, il sensore Accelerometer dispone della proprietà ReportLatency. Quando questa proprietà è impostata per un'applicazione, il sensore invia i dati dopo il periodo di tempo specificato. Puoi controllare la quantità di dati accumulati in una determinata latenza impostando la proprietà ReportInterval.

Ci sono un paio di aspetti da tenere presenti per quanto riguarda l'impostazione della latenza. Il primo è che ogni sensore ha un valore MaxBatchSize che può supportare in base al sensore stesso. Questo è il numero di eventi che il sensore può memorizzare nella cache prima di essere costretto a inviarli. Se moltiplichi MaxBatchSize per ReportInterval, puoi ottenere il valore ReportLatency massimo. Se specifichi un valore superiore a questo, verrà usata la latenza massima in modo da evitare perdite di dati. Inoltre, se sono presenti più applicazioni, ognuna può impostare la latenza desiderata. Per soddisfare le esigenze di tutte le applicazioni, verrà usato il periodo di latenza più breve. A causa di questi elementi, la latenza impostata nell'applicazione potrebbe non corrispondere alla latenza osservata.

Se un sensore usa il reporting in batch, la chiamata di GetCurrentReading cancellerà il batch di dati corrente e avvierà un nuovo periodo di latenza.

Accelerometro

Il sensore Accelerometer misura i valori della forza di gravità lungo gli assi X, Y e Z del dispositivo ed è eccezionale per applicazioni semplici basate sul movimento. I valori della forza di gravità includono l'accelerazione dovuta alla gravità. Se l'enumerazione SimpleOrientation del dispositivo è impostata su FaceUp in una tabella, l'accelerometro rileverà una forza di gravità pari a -1 sull'asse Z. Gli accelerometri pertanto non misurano necessariamente solo l'accelerazione delle coordinate, ovvero la percentuale di cambiamento della velocità. Quando usi un accelerometro, fai in modo di distinguere tra vettore gravitazionale e gravità e tra vettore di accelerazione lineare e movimento. Considera che il vettore gravitazionale dovrebbe normalizzarsi su 1 per un dispositivo immobile.

Le figure seguenti sono esplicative:

  • V1 = Vettore 1 = Forza dovuta alla gravità
  • V2 = Vettore 2 = -Asse Z dello chassis del dispositivo (punta verso l'esterno del retro dello schermo)
  • Θi = Angolo di inclinazione = Angolo compreso tra l'asse Z dello chassis del dispositivo e il vettore di gravità

AccelerometroMisurazione dell'accelerometro

Tra le app che possono usare il sensore accelerometro è incluso un gioco in cui una biglia sullo schermo rotola nella direzione in cui è inclinato il dispositivo (vettore gravitazionale). Questo tipo di funzionalità rispecchia da vicino quella del sensore Inclinometer e può essere implementata anche con tale sensore usando una combinazione di inclinazione e rollio. L'uso del vettore di gravità dell'accelerometro semplifica in qualche modo questo effetto poiché fornisce un vettore manipolato matematicamente per l'inclinazione del dispositivo. Un altro esempio è rappresentato da un'app che riproduce il suono scoppiettante di una frusta quando l'utente scuote il dispositivo in aria (vettore di accelerazione lineare).

Giroscopio

Il sensore Gyrometer misura le velocità angolari lungo gli assi X, Y e Z. Queste si rivelano particolarmente utili in app semplici basate sul movimento su cui non incide l'orientamento del dispositivo bensì la rotazione del dispositivo con velocità diverse. I giroscopi possono essere disturbati da interferenze nei dati o da un bias costante lungo uno o più assi. Dovresti interrogare l'accelerometro per verificare se il dispositivo è in movimento in modo da determinare se il giroscopio è disturbato da un bias e quindi determinare un controbilanciamento nell'app.

Giroscopio con inclinazione, rollio e imbardata

Un esempio di app che può usare il sensore giroscopio è rappresentato da un gioco che fa girare la ruota di una roulette in base a un rapido movimento rotatorio del dispositivo.

Bussola

Il sensore Compass restituisce una direzione 2D rispetto al Nord magnetico in base al piano orizzontale della Terra. Non usare questo sensore per determinare l'orientamento del dispositivo o per una rappresentazione su spazio 3D. Le caratteristiche geografiche possono determinare una declinazione naturale della direzione, per cui alcuni sistemi supportano sia HeadingMagneticNorth che HeadingTrueNorth. Valuta la scelta preferibile per la tua app, ma ricorda che non tutti i sistemi segnalano un valore di Nord effettivo. Il giroscopio e il magnetometro (dispositivo che misura la forza magnetica) combinano i relativi dati per produrre la direzione della bussola, con l'effetto netto di stabilizzare i dati (la forza del campo magnetico è molto instabile a causa dei componenti dei sistemi elettrici).

Misurazioni di una bussola per il Polo nord magnetico

Questo sensore viene usato in genere dalle app che visualizzano la rosa della bussola o che indicano un percorso su una mappa.

Inclinometro

Il sensore Inclinometer specifica i valori di imbardata, inclinazione e rollio di un dispositivo e funziona in modo ottimale con le app sensibili alla posizione del dispositivo nello spazio. Il calcolo dell'inclinazione e del rollio viene effettuato usando il vettore di gravità dell'accelerometro e integrando i dati forniti dal giroscopio. L'imbardata viene stabilita sulla base dei dati del magnetometro e del giroscopio (in modo simile alla direzione della bussola). Gli inclinometri forniscono dati di orientamento avanzati in un modo facilmente comprensibile. Usa gli inclinometri se necessiti di informazioni sull'orientamento del dispositivo senza l'esigenza di dover modificare i dati del sensore.

Inclinometro con dati di inclinazione, rollio e imbardata

Le app che cambiano la visualizzazione a seconda dell'orientamento del dispositivo possono usare questo sensore. Anche un'app che visualizza un aeroplano che simula l'imbardata, l'inclinazione e il rollio del dispositivo userà le misurazioni dell'inclinometro.

Sensore di orientamento

L'orientamento di un dispositivo viene espresso usando un quaternione e una matrice di rotazione. Il sensore OrientationSensor garantisce un elevato grado di precisione per determinare la posizione del dispositivo nello spazio rispetto a una direzione assoluta. I dati di OrientationSensor derivano dall'accelerometro, dal giroscopio e dal magnetometro. Pertanto, sia i dati dell'inclinometro che della bussola possono derivare dai valori del quaternione. I quaternioni e le matrici di rotazione si adattano alla manipolazione matematica avanzata e vengono usati spesso nella programmazione grafica. Le app che usano manipolazioni complesse dovrebbero propendere per i sensori di orientamento, poiché molte trasformazioni si basano su quaternioni e matrici di orientamento.

Dati del sensore di orientamento

Il sensore di orientamento viene usato spesso in app di realtà aumentata che riproducono una sovrimpressione dell'ambiente circostante secondo la direzione a cui punta la parte posteriore del dispositivo.

Orientamento semplice

Il sensore SimpleOrientationSensor rileva l'orientamento del quadrante corrente del dispositivo specificato oppure rileva se il dispositivo è rivolto verso l'alto o verso il basso. Presenta sei possibili stati SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Un'app di lettura che cambia visualizzazione a seconda che il dispositivo sia parallelo o perpendicolare al terreno userà i valori di SimpleOrientationSensor per determinare come è posizionato il dispositivo.

Argomenti correlati

Dati dei sensori e orientamento dello schermo