2011-08-17 5 views
14

Descubrí que cuando inicio mi juego la brújula a menudo está fuera de control. Los objetos volarán y no estarán donde deberían estar. Pero, si muevo el teléfono en una figura ocho (o simplemente lo agito en direcciones aleatorias), todo encaja en su lugar en aproximadamente medio minuto.En Android, ¿puedo detectar mediante programación que la brújula aún no está calibrada?

¿Sabe el hardware cuando la brújula no está calibrada? ¿Sería posible para mí detectar esto y mostrar un mensaje que le diga al usuario "Tu brújula de android necesita ser calibrada. Mueva el teléfono con un movimiento horizontal de figura ocho hasta que desaparezca este mensaje".

Respuesta

18

En SensorEventListener existe una función onAccuracyChanged(Sensor sensor, int accuracy) en la que puede verificar la exactitud del magnetómetro del dispositivo. Hay 4 niveles de precisión (de la clase SensorManager):

SENSOR_STATUS_ACCURACY_HIGH = 3 
SENSOR_STATUS_ACCURACY_MEDIUM = 2 
SENSOR_STATUS_ACCURACY_LOW = 1 
SENSOR_STATUS_UNRELIABLE = 0 
Cuestiones relacionadas