2011-01-14 9 views

risposta

9

Non ci sono "valori esatti" in generale - variano in base al dispositivo. La classe Sensor ha getMaximumRange(). Dato che l'accelerazione può essere positiva o negativa, suppongo che tu possa tranquillamente moltiplicare quel valore di -1 per ottenere il valore minimo.

+0

Sono d'accordo che il valore minimo è il negativo del valore restituito da getMaximumRange(). Sebbene sia troppo piccolo per fare la differenza nella maggior parte delle applicazioni, sospetto (a causa della rappresentazione a due complementi della lettura del sensore) che il valore massimo positivo reale sia un valore di risoluzione inferiore a getMaximumRange(). – gregS

+0

Beh in effetti, ho sulla mia scrivania un telefono con un 'accelerometro Bosch Sensortec GmbH' che restituisce' 156.88' per 'getMaximumRange()', ma non riesce a fornire vergognosamente, con un campo massimo totale di esattamente '39.225403' su ogni asse (Ho shakerato e fatto schiantare il dispositivo robusto più duramente possibile per testarlo). Quindi, ciò che questo metodo restituisce è inaffidabile, evento se i sensori riportano una precisione elevata (lo dicono sempre su questo dispositivo). D'altra parte, il mio Nexus 6P potrebbe riportare valori di intervallo su '150ms^2' per asse, con un'accelerazione totale massima di' 135.92858447775066ms^2'. –

1

Misura una grandezza fisica! Non so davvero se ci sia qualche limite pratico introdotto dal dispositivo hardware, ma non penso che sarai così veloce ... Dal momento che è una grandezza vettoriale, il segno indica il senso del tuo movimento .

PD: presumo che intendiate i valori degli eventi Sensor.TYPE_ACCELEROMETER.

+1

Ogni sensore hardware ha dei limiti. Gli sviluppatori di driver dovrebbero aver dichiarato questi limiti. Se viene raggiunto un valore oltre tale limite, il valore riportato verrà ritagliato. – NickSoft