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

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

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

Ответы

Ответ 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