2012-05-04 11 views
22

Qual è la differenza tra i sensori di gravità e di accelerazione in Android? Dal mio punto di vista il valore fisico è lo stesso in entrambi i casi.Qual è la differenza tra i sensori di "gravità" e "accelerazione" in Android?

Quale misura la forza che agisce sulla massa unitaria all'interno del dispositivo?

INOLTRE

La domanda è: che quantità fisica è misurata da questi sensori? Secondo equivalence principle l'accelerazione e la gravità sono indistinguibili e l'unico modo per misurare entrambi è il solito (ma 3d) bilanciamento delle molle.

risposta

11

Il sensore di accelerazione restituisce la somma di tutte le forze applicate al dispositivo, mentre il sensore di gravità restituisce solo l'influenza della gravità. Se si desidera escludere la gravità dall'accelerazione, è possibile utilizzare un filtro passa-alto o semplicemente sottrarre i valori del sensore di gravità dai valori del sensore di accelerazione - non è sicuro quale metodo fornisca una precisione migliore.

Un altro metodo potrebbe utilizzare Sensor.TYPE_LINEAR_ACCELERATION, che fornisce esattamente (accelerazione - gravità), tuttavia è necessario verificare se è disponibile sul dispositivo. Ho trovato alcuni dispositivi che funzionano con il sensore ACCELERATION, ma nessuna risposta dai sensori GRAVITY o LINEAR_ACCELERATION.

+0

Quindi significa che il sensore di gravità è solo il sensore di accelerazione passato tramite filtro passa-basso? –

+2

molto probabilmente, dal momento che GRAVITY è diventato disponibile dalla versione API 9, e non penso che il mio telefono abbia cambiato l'hardware quando l'ho aggiornato =) – lenik

+0

beh, ho appena testato, il mio vecchio telefono non restituisce alcun aggiornamento GRAVITY, sebbene esegua il codice senza lamentarsi, forse GRAVITY è un sensore separato, ma se hai intenzione di supportare Android 2.1, probabilmente il filtro passa-alto sul sensore ACCELERATION è la soluzione migliore – lenik

3

Questo link potrebbe essere utile: http://www.sensorplatforms.com/which-sensors-in-android-gets-direct-input-what-are-virtual-sensors

Il seguente estratto riassume la risposta per la tua domanda:

"La lista ... comprende entrambi i sensori fisici e tipi di sensori con valori derivati ​​da sensori fisici, a volte questi sono chiamati sensori virtuali ... I tipi di sensori virtuali (gravità, accelerazione lineare e vettore di rotazione) forniscono valori derivati ​​combinando i risultati dei sensori fisici in modo intelligente ... Il vettore di rotazione è una combinazione dell'accelerometro, del magnetometro e a volte il giroscopio determina l'angolo tridimensionale lungo il quale il dispositivo Android pone rispetto le coordinate della cornice terrestre. Conoscendo la rotazione vettoriale di un dispositivo, dati dell'accelerometro possono essere separati in gravità e accelerazione lineare."

Questo link https://stackoverflow.com/a/8238389/604964 dice anche che i valori di gravità sono calcolati utilizzando un filtro Butterworth.

Problemi correlati