Я хочу получить три значения координат магнитного поля, измеренные датчиком моего телефона. Для этого я получаю ручку к SensorManager
с помощью sm=(SensorManager)getApplicationContext().getSystemService(Context.SENSOR_SERVICE)
, затем получаю датчик с cm=sm.getDefaultSensor(SensorManager.SENSOR_MAGNETIC_FIELD)
. Затем я регистрирую SensorEventListener
на SensorManager
с sm.registerListener(new SensorListener(),cm,SensorManager.SENSOR_DELAY_UI)
.
Класс SensorListener
- это мой собственный класс, реализующий интерфейс SensorEventListener
. В этом методе OnSensorChanged
я получаю значения от датчика и отображаю их. Проблема в том, что я получаю только значения 1,0 и 0. И они редко обновляются (я поставил счетчик на вызовы onSensorChanged
, чтобы посмотреть, как часто происходит обновление). Изменение времени на SENSOR_DELAY_NORMAL
ничего не улучшает.
Чтобы проверить, была ли проблема связана с магнитным датчиком, я также добавил слушателя датчика акселерометра. Результат очень запутанный: теперь магнитный датчик генерирует обновления, а не акселерометр. И если я удаляю прослушиватель событий датчика акселерометра, я все равно получаю события магнитного датчика, которых не было до добавления прослушивателя событий датчика акселерометра. (???????????)
Есть идеи о том, что не так в моем коде?