В Android можно ли программно определить, что компас еще не откалиброван?

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

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


person HappyEngineer    schedule 17.08.2011    source источник


Ответы (1)


В 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
person Matt K    schedule 17.08.2011