В Android я могу программно определить, что компас еще не откалиброван? - PullRequest
16 голосов
/ 18 августа 2011

Я обнаружил, что когда я запускаю свою игру, компас часто выходит из строя. Объекты будут летать вокруг, а не быть там, где они должны быть. Но если я перемещу телефон в восьмерке (или просто поверну его в случайных направлениях), все встанет на место, возможно, за полминуты.

Знает ли аппаратное обеспечение, когда компас не откалиброван? Могу ли я обнаружить это и открыть сообщение, говорящее пользователю: «Компас вашего андроида должен быть откалиброван. Пожалуйста, перемещайте телефон в горизонтальном движении по восьмерке, пока это сообщение не исчезнет».

1 Ответ

24 голосов
/ 18 августа 2011

В SensorEventListener есть функция onAccuracyChanged(Sensor sensor, int accuracy), в которой вы можете проверить точность магнитометра устройства. Существует 4 уровня точности (из класса SensorManager):

SENSOR_STATUS_ACCURACY_HIGH = 3
SENSOR_STATUS_ACCURACY_MEDIUM = 2
SENSOR_STATUS_ACCURACY_LOW = 1
SENSOR_STATUS_UNRELIABLE = 0
...