Google si impegna a far progredire equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

tipi di sensori

Questa sezione descrive assi sensori, i sensori di base, e sensori compositi (attività, atteggiamento, calibrato, e interazione).

assi sensori

valori degli eventi sensore provenienti da molti sensori sono espressi in un frame specifico che è relativamente statica al dispositivo.

assi dispositivi mobili

L'API sensore è relativa soltanto alla naturale orientamento dello schermo (assi non vengono scambiati quando cambia l'orientamento dello schermo del dispositivo.

sistema di sensori API per dispositivi mobili coordinate

Figura 1. Sistema di coordinate (rispetto ad un dispositivo mobile) utilizzato dall'API Sensor

assi Automotive

In implementazioni Automotive Android, assi sono definiti rispetto al telaio della carrozzeria.

sistema di sensori API per dispositivi automotive coordinate

Figura 2. Sistema di coordinate (relativa ad un dispositivo automobilistico) utilizzato dalla API Sensor

  • X aumenta verso destra del veicolo
  • Y aumenta verso il naso del telaio di carrozzeria
  • incrementi Z verso il tetto del telaio di carrozzeria

L'origine del sistema di coordinate è situato al centro dell'asse posteriore del veicolo. Quando cerchi dalla direzione positiva di un asse, rotazioni positive sono antiorario. Così, quando un veicolo sta compiendo una svolta a sinistra, il tasso giroscopio asse z del turno dovrebbe essere un valore positivo.

sensori di Base

tipi di sensori di base sono chiamati dopo i sensori fisici che rappresentano. Questi sensori relè dati da un singolo sensore fisico (in contrapposizione ai sensori composti che generano dati su altri sensori). Esempi di tipi di sensori di base includono:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

Tuttavia, i sensori di base non sono uguali e non deve essere confuso con il sensore fisico sottostante. I dati da un sensore di base non è l'uscita grezza del sensore fisico perché siano applicate correzioni (come la compensazione di polarizzazione e compensazione di temperatura).

Ad esempio, le caratteristiche di un sensore di base potrebbero essere differenti dalle caratteristiche del suo sensore fisico sottostante nei seguenti casi di utilizzo:

  • Un chip giroscopio valutazione di avere un intervallo di polarizzazione di 1 ° / sec.
    • Dopo la calibrazione di fabbrica, compensazione della temperatura e compensazione di polarizzazione sono applicati, la polarizzazione effettiva del sensore Android sarà ridotto, può essere ad un punto in cui la polarizzazione è garantito essere inferiore a 0,01 ° / sec.
    • In questa situazione, diciamo che il sensore Android ha una polarizzazione inferiore a 0,01 g / sec, anche se la scheda del sensore sottostante detto 1 ° / sec.
  • Un barometro con un consumo di 100 uW.
    • Perché le esigenze di dati generati da trasportare dal chip al SoC, il costo effettivo energia raccogliere dati dal sensore barometro Android potrebbe essere molto più elevata, ad esempio 1000 uW.
    • In questa situazione, diciamo che il sensore Android ha un consumo 1000 uW, anche se il consumo di potenza misurata ai conduttori di chip barometro è 100uW.
  • Un magnetometro che consuma 100uW quando calibrato, ma consuma più durante la calibrazione.
    • La sua routine di calibrazione potrebbe richiedere l'attivazione del giroscopio, consumando 5000 uW, e l'esecuzione di qualche algoritmo, che costa altri 900 uW.
    • In questa situazione, si dice che l'assorbimento massimo del (magnetometro) Android sensore è 6000 uW.
    • In questo caso, il consumo medio è la misura più utile, ed è ciò che è riportato nelle caratteristiche statiche sensore attraverso il HAL.

Accelerometro

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) restituisce un sensore non sveglia

Un sensore accelerometro riporta l'accelerazione del dispositivo lungo i tre assi sensore. L'accelerazione misurata comprende sia l'accelerazione fisica (cambio di velocità) e la gravità. La misura viene riportata nelle direzioni x, y, z e campi di sensors_event_t.acceleration.

Tutti i valori sono espressi in unità SI (m / s ^ 2) e misurare l'accelerazione del dispositivo meno la forza di gravità lungo i tre assi sensore.

Ecco alcuni esempi:

  • La norma di (x, y, z) dovrebbe essere vicino a 0 quando in caduta libera.
  • Quando il piatto menzogna dispositivo su un tavolo e viene spinto sul suo lato sinistro verso destra, il valore x accelerazione è positiva.
  • Quando il dispositivo si trova in piano su un tavolo, il valore di accelerazione lungo z è 9,81 alo, che corrisponde all'accelerazione del dispositivo (0 m / s ^ 2) meno la forza di gravità (-9,81 m / s ^ 2).
  • Quando il piatto menzogna dispositivo su un tavolo e viene spinto verso il cielo, il valore di accelerazione è maggiore di 9,81, che corrisponde all'accelerazione del dispositivo (+ A m / s ^ 2) meno la forza di gravità (-9,81 m / s ^ 2).

Le letture sono calibrati utilizzando:

  • Compensazione della temperatura
  • calibrazione pregiudizi online
  • calibrazione scala online

La taratura di polarizzazione e la scala deve essere aggiornato solo mentre il sensore è disattivato, in modo da non provocare salti nei valori durante lo streaming.

L'accelerometro riporta anche come precisa che si aspetta le sue letture ad essere attraverso sensors_event_t.acceleration.status . Vedere la SensorManager s' SENSOR_STATUS_* costanti per ulteriori informazioni sui possibili valori per questo campo.

Temperatura ambiente

Segnalazione-mode: on-change

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) restituisce un sensore non sveglia

Questo sensore fornisce la (camera) temperatura in gradi centigradi ambiente.

sensore di campo magnetico

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) restituisce un sensore non sveglia

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

Un sensore di campo magnetico (noto anche come magnetometro) riporta il campo magnetico ambientale, misurata lungo i tre assi sensore.

La misura viene riportata nelle direzioni x, y, z e campi di sensors_event_t.magnetic e tutti i valori sono in micro-Tesla (UT).

Il magnetometro riporta anche come precisa che si aspetta le sue letture ad essere attraverso sensors_event_t.magnetic.status . Vedere la SensorManager s' SENSOR_STATUS_* costanti per ulteriori informazioni sui possibili valori per questo campo.

Le letture sono calibrati utilizzando:

  • Compensazione della temperatura
  • Fabbrica (o on-line) di calibrazione in ferro dolce
  • In linea di calibrazione hard-ferro

Giroscopio

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) restituisce un sensore non sveglia

Un sensore giroscopio riporta la velocità di rotazione del dispositivo lungo i tre assi sensore.

La rotazione è positiva in senso antiorario (regola della mano destra). Cioè, un osservatore che guarda da qualche posizione positiva sulla x, y, o asse z su un dispositivo posizionato sull'origine sarebbe riferire rotazione positiva se il dispositivo sembrava essere a rotazione in senso antiorario. Si noti che questa è la definizione matematica di rotazione standard positiva e non è d'accordo con la definizione aerospaziale del rotolo.

La misura viene riportata nella x, y, z campi di sensors_event_t.gyro e tutti i valori sono in radianti al secondo (rad / s).

Le letture sono calibrati utilizzando:

  • Compensazione della temperatura
  • Fabbrica (o on-line) di compensazione scala
  • taratura di polarizzazione in linea (per rimuovere deriva)

Il giroscopio riporta anche come precisa che si aspetta le sue letture ad essere attraverso sensors_event_t.gyro.status . Vedere la SensorManager s' SENSOR_STATUS_* costanti per ulteriori informazioni sui possibili valori per questo campo.

Il giroscopio non può essere emulato basato su magnetometri e accelerometri, poiché ciò causerebbe ad aver ridotto consistenza locale e la reattività. Deve essere basato su un usuale circuito integrato giroscopio.

Frequenza del battito cardiaco

Segnalazione-mode: on-change

getDefaultSensor(SENSOR_TYPE_HEART_RATE) restituisce un sensore non sveglia

Un sensore della frequenza cardiaca segnala la frequenza cardiaca attuale della persona toccare il dispositivo.

La frequenza cardiaca corrente in battiti al minuto (BPM) è riportato in sensors_event_t.heart_rate.bpm e lo stato del sensore è riportato in sensors_event_t.heart_rate.status . Vedere la SensorManager s' SENSOR_STATUS_* costanti per ulteriori informazioni sui possibili valori per questo campo. In particolare, al momento della prima attivazione, a meno che il dispositivo è noto per non essere sul corpo, il campo di stato del primo evento deve essere impostato SENSOR_STATUS_UNRELIABLE . Poiché questo sensore è in cambiamento, eventi vengono generati quando e solo quando heart_rate.bpm o heart_rate.status sono cambiati dall'ultimo evento. Gli eventi non vengono generati più velocemente di ogni sampling_period .

sensor_t.requiredPermission è sempre SENSOR_PERMISSION_BODY_SENSORS .

Luce

Segnalazione-mode: on-change

getDefaultSensor(SENSOR_TYPE_LIGHT) restituisce un sensore non sveglia

Un sensore di luce riporta l'illuminazione corrente in unità SI lux.

La misura è riportato in sensors_event_t.light .

Prossimità

Segnalazione-mode: on-change

Di solito definito come sensore sveglia

getDefaultSensor(SENSOR_TYPE_PROXIMITY) restituisce un sensore sveglia

Un sensore di prossimità riporta la distanza dal sensore alla superficie visibile più vicino.

Fino ad Android 4.4, i sensori di prossimità sono stati sempre i sensori di sveglia, il risveglio il SoC quando rileva un cambiamento in prossimità. Dopo Android 4.4, si consiglia di implementare la versione sveglia di questo sensore prima, in quanto è quello che viene utilizzato per accendere lo schermo e disattivare, mentre le chiamate telefoniche.

La misura viene riportata in centimetri in sensors_event_t.distance . Si noti che alcuni sensori di prossimità supportano solo un binario "vicino" misurazione o "far". In questo caso, la relazione sensore suo sensor_t.maxRange valore nello stato "misura" e un valore inferiore sensor_t.maxRange nello stato "vicino".

Pressione

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_PRESSURE) restituisce un sensore non sveglia

Un sensore di pressione (noto anche come barometro) riporta la pressione atmosferica in ettopascal (hPa).

Le letture vengono calibrati usando

  • Compensazione della temperatura
  • calibrazione polarizzazione fabbrica
  • Taratura bilancia fabbrica

Il barometro viene spesso utilizzato per stimare elevazione modifiche. Per stimare elevazione assoluta, la pressione a livello del mare (cambiare a seconda delle condizioni climatiche) deve essere utilizzato come riferimento.

Umidità relativa

Segnalazione-mode: on-change

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) restituisce un sensore non sveglia

Un parente sensore misura l'umidità relativa umidità dell'aria ambiente e restituisce un valore in percentuale.

tipi di sensore compositi

Un sensore composito genera dati da elaborare e / o fondere dati da uno o più sensori fisici. (. Ogni sensore che non è un sensore di base è chiamato un sensore composito) Esempi di sensori compositi comprendono:

  • Rivelatore passo e movimento significativo , che sono generalmente basato su un accelerometro, ma potrebbe essere basato su altri sensori come pure, se il consumo di potenza e la precisione era accettabile.
  • Rotazione gioco Vector , sulla base di un accelerometro e un giroscopio.
  • Giroscopio non calibrata , che è simile al sensore di base giroscopio, ma con l'essere taratura di polarizzazione rilevare separatamente invece di essere corretto nella misurazione.

Come per i sensori di base, le caratteristiche dei sensori compositi provengono dalle caratteristiche dei loro dati finali. Ad esempio, il consumo di potenza di un vettore rotazione gioco è probabilmente uguale alla somma dei consumi di potenza del chip accelerometro, giroscopio chip, il chip elaborazione dei dati, e gli autobus che trasportano i dati. Come altro esempio, la deriva di un vettore rotazione gioco dipende tanto dalla qualità dell'algoritmo di calibrazione in base alle caratteristiche fisiche del sensore.

Nella tabella seguente sono elencati disponibili tipi di sensore compositi. Ogni sensore composito si basa sui dati provenienti da uno o più sensori fisici. Evitare di scegliere altri sensori fisici sottostanti ai risultati approssimativi in ​​quanto forniscono un'esperienza utente scadente.

tipo di sensore Categoria Sottostante sensori fisici modalità di segnalazione

Rotazione gioco Vector

Atteggiamento

Accelerometro, giroscopio, magnetometro NON DEVE USO

Continuo

Geomagnetic vettore di rotazione sensore di potenza bassa

Atteggiamento

Accelerometro, magnetometro, giroscopio NON DEVE USO

Continuo

gesto Glance sensore di potenza bassa

Interazione

Non definito

Un colpo

Gravità

Atteggiamento

Accelerometro, giroscopio

Continuo

giroscopio non calibrata

Non calibrato

Giroscopio

Continuo

accelerazione lineare

Attività

Accelerometro, giroscopio (se presente), oppure magnetometro (se giroscopio non presente)

Continuo

Campo magnetico non calibrati

Non calibrato

Magnetometro

Continuo

Orientamento (obsoleto)

Atteggiamento

Accelerometro, magnetometro, giroscopio (se presente)

Continuo

Pick up gesto sensore di potenza bassa

Interazione

Non definito

Un colpo

vettore di rotazione

Atteggiamento

Accelerometro, magnetometro, giroscopio

Continuo

movimento significativo sensore di potenza bassa

Attività

Accelerometro (o altro purché potenza molto bassa)

Un colpo

contapassi sensore di potenza bassa

Attività

Accelerometro

On-change

rilevatore di passo sensore di potenza bassa

Attività

Accelerometro

Speciale

sensore di inclinazione sensore di potenza bassa

Attività

Accelerometro

Speciale

Wake up gesto sensore di potenza bassa

Interazione

Non definito

Un colpo

sensore di potenza bassa = Sensore di potenza basso

Attività sensori compositi

accelerazione lineare

Sottostante sensori fisici: accelerometro e (se presente) giroscopio (o magnetometro se giroscopio non presente)

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) restituisce un sensore non sveglia

Un sensore di accelerazione lineare riporta l'accelerazione lineare del dispositivo nel telaio sensore, non compreso il peso.

L'uscita è concettualmente: uscita del dell'accelerometro meno l'uscita del sensore di gravità . E 'riportato in m / s ^ 2 nelle direzioni x, y, z e campi di sensors_event_t.acceleration .

Letture su tutti gli assi dovrebbe essere vicino a 0 quando il dispositivo è immobile.

Se il dispositivo possiede un giroscopio, il sensore di accelerazione lineare deve utilizzare il giroscopio e accelerometro come input.

Se il dispositivo non possiede un giroscopio, il sensore di accelerazione lineare deve utilizzare l'accelerometro e magnetometro come input.

movimento significativo

Sottostante sensore fisico: dell'accelerometro (o altro purché bassa potenza)

Segnalazione-mode: One-shot

Bassa potenza

Implementare solo la versione sveglia di questo sensore.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) restituisce un sensore sveglia

Un significativo movimento rivelatore attiva quando rileva un movimento significativo: un movimento che potrebbe portare ad un cambiamento nella posizione dell'utente.

Esempi di tali movimenti significativi sono i seguenti:

  • Piedi o in bicicletta
  • Seduto in un movimento auto, pullman o in treno

Esempi di situazioni che non innescano il movimento significativo:

  • Telefono in tasca e persona non si muove
  • Phone è su un tavolo e la tabella scuote un po 'a causa del traffico nelle vicinanze o lavatrice

A livello alto, il rilevatore di movimento significativo è utilizzato per ridurre il consumo di energia di determinazione di posizione. Quando gli algoritmi di localizzazione rilevano che il dispositivo è statica, che possono passare a una modalità a basso consumo, quando essi adducono movimento significativo per riattivare il dispositivo quando l'utente cambia posizione.

Questo sensore deve essere bassa potenza. Si fa un compromesso per un consumo energetico che può risultare in una piccola quantità di falsi negativi. Questo viene fatto per un paio di motivi:

  • L'obiettivo di questo sensore è quello di risparmiare energia.
  • Innescando un evento quando l'utente non è in movimento (falso positivo) è oneroso in termini di potenza, quindi dovrebbe essere evitato.
  • Non determina un evento quando l'utente è in movimento (falso negativo) è accettabile finché non è fatto ripetutamente. Se l'utente è stato piedi per 10 secondi, non dell'attivazione di un evento entro quei 10 secondi non è accettabile.

Ogni evento sensore segnala 1 in sensors_event_t.data[0] .

rilevatore di passo

Sottostante sensore fisico: dell'accelerometro (+ possibilmente altri fintanto bassa potenza)

Segnalazione-mode: Special (un evento per ogni passo fatto)

Bassa potenza

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) restituisce un sensore non sveglia

Un rilevatore di fase genera un evento ogni volta che un passo è presa da parte dell'utilizzatore.

Il timestamp dell'evento sensors_event_t.timestamp corrisponde a quando il piede colpito il terreno, generando una elevata variazione di accelerazione.

Rispetto al contapassi, il rivelatore passo dovrebbe avere una latenza bassa (meno di due secondi). Sia il rivelatore passo e il contapassi rilevare quando l'utente è camminare, correre, e salendo le scale. Non dovrebbero far scattare quando l'utente è in bicicletta, in auto o in altri veicoli.

Questo sensore deve essere bassa potenza. Cioè, se il rilevamento passaggio non può essere realizzata in hardware, non dovrebbe essere definito questo sensore. In particolare, quando il rivelatore passo viene attivato e l'accelerometro non è solo passaggi dovrebbero attivare allarmi (non ogni lettura accelerometro).

sampling_period_ns non ha alcun impatto su rivelatori passo.

Ogni evento sensore segnala 1 in sensors_event_t.data[0] .

contapassi

Sottostante sensore fisico: dell'accelerometro (+ possibilmente altri fintanto bassa potenza)

Segnalazione-mode: on-change

A bassa potenza

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) restituisce un sensore non sveglia

Un contapassi riporta il numero di passi effettuati dall'utente dall'ultimo riavvio durante attivato.

La misura viene segnalato come un uint64_t in sensors_event_t.step_counter ed è azzerato solo su un riavvio del sistema.

Il timestamp della manifestazione è impostata al momento in cui è stata presa l'ultimo passo per quell'evento.

Vedere il rivelatore Fase tipo di sensore per il significato del tempo di un passo.

Rispetto al rivelatore passo, il contapassi può avere una latenza elevata (fino a 10 secondi). Grazie a questa latenza, questo sensore ha una elevata precisione; il conteggio dei passi dopo una giornata piena di misure dovrebbe essere entro il 10% del conteggio effettivo passo. Sia il rivelatore passo e il contapassi rilevare quando l'utente è camminare, correre, e salendo le scale. Non dovrebbero far scattare quando l'utente è in bicicletta, in auto o in altri veicoli.

L'hardware deve garantire il conteggio dei passi interna mai trabocca. La dimensione minima del contatore interno dell'hardware è 16 bit. In caso di overflow imminente (al massimo ogni ~ 2 ^ 16 gradini), il SoC può essere riattivato in modo che il conducente possa fare la manutenzione contatore.

Come indicato in Interaction , mentre questo sensore opera, non deve disturbare altri sensori, in particolare, l'accelerometro, che potrebbero benissimo essere in uso.

Se un particolare dispositivo non può sostenere queste modalità di funzionamento, allora questo tipo di sensore non deve essere segnalato dal HAL. Cioè, non è accettabile "emulare" questo sensore nel HAL.

Questo sensore deve essere bassa potenza. Cioè, se il rilevamento passaggio non può essere realizzata in hardware, non dovrebbe essere definito questo sensore. In particolare, quando il contatore passo viene attivato e l'accelerometro non è solo passaggi dovrebbero attivare allarmi (non dell'accelerometro dati).

sensore di inclinazione

Sottostante sensore fisico: dell'accelerometro (+ possibilmente altri fintanto bassa potenza)

Segnalazione-mode: Speciale

A bassa potenza

Implementare solo la versione sveglia di questo sensore.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) restituisce un sensore sveglia

Un sensore di inclinazione genera un evento ogni volta che viene rilevato un evento di inclinazione.

Un evento di ribaltamento è definito dalla direzione della finestra 2 secondi densità media cambio di almeno 35 gradi dall'attivazione o dell'ultimo evento generato dal sensore. Ecco l'algoritmo:

  • reference_estimated_gravity = media delle misurazioni dell'accelerometro sul primo secondo dopo l'attivazione o la gravità stimato quando l'ultimo evento di inclinazione è stato generato.
  • current_estimated_gravity = media di misurazioni accelerometro nel corso degli ultimi 2 secondi.
  • Attiva quando angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

Grandi accelerazioni senza un cambiamento di orientamento del telefono non dovrebbero innescare un evento di inclinazione. Ad esempio, una curva stretta o forte accelerazione durante la guida di un auto non devono attivare un evento di inclinazione, anche se l'angolo della accelerazione media può variare di più di 35 gradi. Tipicamente, questo sensore è implementata con l'aiuto di solo un accelerometro. Altri sensori possono essere usati anche se non aumentano significativamente il consumo di energia. Questo è un sensore di bassa potenza che dovrebbe consentire il SoC di andare in modalità di sospensione. Non emulare questo sensore nel HAL. Ogni evento sensore segnala 1 in sensors_event_t.data[0] .

Attitude sensori compositi

vettore di rotazione

Sottostante sensori fisici: accelerometro, magnetometro e giroscopio

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) restituisce un sensore non sveglia

Un sensore di rotazione vettore riporta l'orientamento del dispositivo rispetto al telaio coordinate est-nord-Up. Di solito è ottenuta per integrazione di letture accelerometro, giroscopio, magnetometro e. sistema di coordinate nord-est-up è definito come una base ortonormale diretta dove:

  • X punti est e che è tangente al suolo.
  • Y punti nord e che è tangente al suolo.
  • Z punti verso il cielo ed è perpendicolare al terreno.

L'orientamento del telefono cellulare è rappresentato dalla rotazione necessaria per allineare le coordinate Est-Nord-up con le coordinate del telefono. Cioè, applicando la rotazione al telaio mondo (X, Y, Z) li allinearsi con le coordinate telefonici (x, y, z).

La rotazione può essere visto come gira il telefono da un angolo theta intorno ad un asse rot_axis andare dal riferimento (est-nord-Up allineato) orientamento del dispositivo per l'orientamento del dispositivo corrente. La rotazione è codificato come x quattro unità-meno, y, z, w componenti di un quaternione unità:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

Dove:

  • X, y, z e campi di rot_axis sono le coordinate est-nord-up di un vettore unità di lunghezza che rappresentano l'asse di rotazione
  • theta è l'angolo di rotazione

Il quaternione è un quaternione unità: Deve essere di norma 1 . La mancata per assicurare questo farà sì che il comportamento del cliente irregolare.

Inoltre, questo sensore segnala una precisione stimata titolo:

sensors_event_t.data[4] = estimated_accuracy (in radianti)

L'errore di rotta deve essere inferiore estimated_accuracy 95% del tempo. Questo sensore deve utilizzare un giroscopio come ingresso principale variazione dell'orientamento.

Questo sensore utilizza anche accelerometro e magnetometro ingresso per compensare la deriva giroscopio, e non può essere implementata utilizzando solo l'accelerometro e magnetometro.

Rotazione gioco Vector

Sottostante sensori fisici: accelerometro e giroscopio (senza magnetometro)

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) restituisce un sensore non sveglia

Un sensore di rotazione gioco vettore è simile ad un sensore di rotazione vettore ma non utilizzando il campo magnetico terrestre. Pertanto l'asse Y non punta nord ma invece di altri riferimenti. è consentito che il riferimento ad andare alla deriva dallo stesso ordine di grandezza delle derive giroscopio intorno all'asse Z.

Vedere il vettore di rotazione del sensore per i dettagli su come impostare sensors_event_t.data[0-3] . Questo sensore non segnala un Colpo di testa stimato: sensors_event_t.data[4] è riservato e deve essere impostato su 0 .

In un caso ideale, un telefono ruotato e tornò lo stesso orientamento del mondo reale dovrebbe riferire lo stesso vettore di rotazione gioco.

Questo sensore deve essere basato su un giroscopio e un accelerometro. Non può utilizzare magnetometro come ingresso, inoltre, indirettamente, attraverso la stima della distorsione giroscopio.

Gravità

Sottostante sensori fisici: accelerometro e (se presente) giroscopio (o magnetometro se giroscopio non presente)

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_GRAVITY) restituisce un sensore non sveglia

Un sensore di gravità riporta la direzione e la grandezza di gravità coordinate del dispositivo.

I componenti gravità vettoriali sono riportati in m / s ^ 2 nelle direzioni x, y, z e campi di sensors_event_t.acceleration .

Quando il dispositivo è a riposo, l'uscita del sensore di gravità dovrebbe essere identico a quello dell'accelerometro. Sulla Terra, la grandezza è di circa 9,8 m / s ^ 2.

Se il dispositivo possiede un giroscopio, il sensore di gravità deve utilizzare il giroscopio e accelerometro come input.

Se il dispositivo non possiede un giroscopio, il sensore di gravità deve utilizzare l'accelerometro e magnetometro come input.

Geomagnetic vettore di rotazione

Sottostante sensori fisici: accelerometro e magnetometro (senza giroscopio)

Segnalazione modalità: Continuo

A bassa potenza

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) restituisce un sensore non sveglia

Un vettore rotazione geomagnetico è simile ad un sensore di rotazione vettore ma usando un magnetometro e nessun giroscopio.

Questo sensore deve essere basata su un magnetometro. Non può essere implementato utilizzando un giroscopio, e ingresso giroscopio non può essere utilizzato da questo sensore.

Vedere il vettore di rotazione del sensore per i dettagli su come impostare sensors_event_t.data[0-4] .

Proprio come per il sensore di vettore di rotazione, l'errore di rotta deve essere inferiore alla precisione stimata ( sensors_event_t.data[4] ) il 95% del tempo.

Questo sensore deve essere bassa potenza, quindi deve essere implementato in hardware.

Orientamento (obsoleto)

Sottostante sensori fisici: accelerometro, magnetometro e (se presente) giroscopio

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_ORIENTATION) restituisce un sensore non sveglia

Nota: Questo è un tipo di sensore vecchio che è stato deprecato nel SDK di Android. È stato sostituito dal sensore di rotazione vettore, che è più chiaramente definito. Utilizzare il sensore di rotazione vettore sul sensore orientamento quando possibile.

Un sensore di orientamento riporta l'atteggiamento del dispositivo. Le misurazioni sono riportate in gradi in x, yez campi di sensors_event_t.orientation :

  • sensors_event_t.orientation.x : azimut, l'angolo tra la direzione nord magnetico e l'asse Y, attorno all'asse Z ( 0<=azimuth<360 ). 0 = Nord, 90 = Est, 180 = Sud, 270 = Ovest.
  • sensors_event_t.orientation.y : passo, rotazione attorno all'asse X ( -180<=pitch<=180 ), con valori positivi quando l'asse Z si sposta verso l'asse y.
  • sensors_event_t.orientation.z : rotolo, rotazione attorno all'asse Y ( -90<=roll<=90 ), con valori positivi quando l'asse X si sposta verso l'asse Z.

Si prega di nota, per ragioni storiche l'angolo di rollio è positivo in senso orario. (Matematicamente parlando, dovrebbe essere positivo in senso antiorario):

Rappresentazione di orientamento relativo ad un dispositivo

Figura 3. Orientamento relativo ad un dispositivo

Questa definizione è diverso da imbardata, beccheggio e rollio utilizzato in aviazione dove l'asse X è lungo il lato lungo del piano (coda naso).

Il sensore di orientamento riporta anche come precisa si aspetta sue letture siano attraverso sensors_event_t.orientation.status . Vedere la SensorManager s' SENSOR_STATUS_* costanti per ulteriori informazioni sui possibili valori per questo campo.

sensori non calibrati

I sensori non calibrati di risultati più prime e possono includere alcuni pregiudizi ma anche contengono meno "salti" di correzione applicati attraverso calibrazione. Alcune applicazioni potrebbero preferire questi risultati non calibrati come più liscia e più affidabile. Ad esempio, se un'applicazione sta tentando di condurre una propria fusione sensoriale, calibrazioni introduzione può effettivamente alterare i risultati.

accelerometro non calibrata

Sottostante sensore fisico: accelerometro

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) restituisce un sensore non sveglia

Un sensore accelerometro calibrato riporta l'accelerazione del dispositivo lungo i tre assi sensore senza alcuna correzione di polarizzazione (bias fabbrica e compensazione della temperatura sono applicati ai misurazioni calibrate), oltre ad una stima di polarizzazione. Tutti i valori sono espressi in unità SI (m / s ^ 2) e sono riportati nei campi di sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : accelerazione (senza compensazione bias) lungo l'asse X
  • y_uncalib : accelerazione (senza compensazione bias) lungo l'asse Y
  • z_uncalib : accelerazione (senza compensazione bias) lungo l'asse Z
  • x_bias : polarizzazione stimato lungo l'asse X
  • y_bias : polarizzazione stimato lungo l'asse Y
  • z_bias : polarizzazione stimato lungo l'asse Z

giroscopio non calibrata

Sottostante sensore fisico: Giroscopio

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) restituisce un sensore non sveglia

Un giroscopio uncalibrated riporta la velocità di rotazione attorno agli assi dei sensori senza applicare la compensazione di polarizzazione loro, insieme con una stima di polarizzazione. Tutti i valori sono in radianti / secondo e sono riportati nei campi di sensors_event_t.uncalibrated_gyro :

  • x_uncalib : velocità angolare (senza compensazione deriva) attorno all'asse X
  • y_uncalib : velocità angolare (senza compensazione deriva) intorno all'asse Y
  • z_uncalib : velocità angolare (senza compensazione deriva) attorno all'asse Z
  • x_bias : stima deriva intorno all'asse X
  • y_bias : stima deriva intorno all'asse Y
  • z_bias : stima deriva intorno all'asse Z

Concettualmente, la misura non calibrata è la somma della misura calibrata e la stima di polarizzazione: _uncalibrated = _calibrated + _bias .

I x_bias , y_bias e z_bias valori dovrebbero saltare appena la stima delle variazioni di polarizzazione, e dovrebbero essere stabile il resto del tempo.

Vedere la definizione del giroscopio sensore per dettagli sul sistema di coordinate utilizzato.

calibrazione di fabbrica e compensazione di temperatura devono essere applicate alle misurazioni. Inoltre, giroscopio deriva la stima deve essere attuata in modo che le stime ragionevoli possono essere riportati in x_bias , y_bias e z_bias . Se l'implementazione non è in grado di stimare la deriva, allora questo sensore non deve essere attuato.

Se questo sensore è presente, allora il sensore giroscopio corrispondente deve anche essere presente e entrambi i sensori devono condividere la stessa sensor_t.name e sensor_t.vendor valori.

Campo magnetico non calibrati

Sottostante sensore fisico: Magnetometer

Segnalazione modalità: Continuo

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) restituisce un sensore non sveglia

Un sensore di campo magnetico non calibrato riporta il campo magnetico ambiente insieme con una stima calibrazione duro ferro. Tutti i valori sono in micro-Tesla (UT) e sono riportati nei settori sensors_event_t.uncalibrated_magnetic :

  • x_uncalib : campo magnetico (senza compensazione duro-ferro) lungo l'asse X
  • y_uncalib : campo magnetico (senza compensazione duro-ferro) lungo l'asse Y
  • z_uncalib : campo magnetico (senza compensazione duro-ferro) lungo l'asse Z
  • x_bias : si prevede polarizzazione hard-ferro lungo l'asse X
  • y_bias : si prevede polarizzazione hard-ferro lungo l'asse Y
  • z_bias : si prevede polarizzazione hard-ferro lungo l'asse Z

Concettualmente, la misura non calibrata è la somma della misura calibrata e la stima di polarizzazione: _uncalibrated = _calibrated + _bias .

Il magnetometro non calibrata permette algoritmi di livello superiore per gestire male la stima duro ferro. I x_bias , y_bias e z_bias valori sono attesi a saltare non appena la stima dei cambiamenti hard-ferro, e dovrebbero essere stabile il resto del tempo.

calibrazione in ferro dolce e compensazione di temperatura devono essere applicate alle misurazioni. Inoltre, la stima hard-ferro deve essere implementato in modo che le stime ragionevoli possono essere riportati in x_bias , y_bias e z_bias . Se l'implementazione non è in grado di stimare la polarizzazione, allora questo sensore non deve essere attuato.

Se questo sensore è presente, allora il sensore di campo magnetico corrispondente deve essere presente e entrambi i sensori devono condividere la stessa sensor_t.name e sensor_t.vendor valori.

Interazione sensori compositi

Alcuni sensori sono principalmente utilizzati per rilevare le interazioni con l'utente. We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .