Я хочу получить три значения координат магнитного поля, измеренные датчиком моего телефона. Для этого я получаю дескриптор 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
ничего не улучшает.
Чтобы проверить, связана ли проблема с магнитным датчиком, я таким же образом добавил прослушиватель датчика акселерометра. Результат очень сбивает с толку: теперь магнитный датчик генерирует обновления, а не акселерометр. И если я удалю прослушиватель событий датчика акселерометра, я все равно буду получать события магнитного датчика, которые отсутствовали до добавления прослушивателя событий датчика акселерометра. (???????????)
Любая идея о том, что не так в моем коде?