Да, я могу получать события обновления датчика с помощью SensorEventListener. Но у этого подхода есть 2 отзыва:
1) Для некоторых датчиков мне нужно дождаться обновления состояния. Например, температура может обновиться через минуту!
2) В некоторых случаях я могу получить неправильные показания. Например, телефон лежит на ровной поверхности и не двигается. Я получаю первое событие обновления ориентации после регистрации слушателя. Когда изменяется только часть вектора ориентации, другие части могут быть равны 0. И невозможно определить, является ли это истинным азимутом 0 градусов или просто неполным вектором. Если я немного передвину телефон, появится правильный ненулевой азимут.
Для решения этой проблемы можно создать отдельный поток, который постоянно контролирует датчики. Через некоторое время он, безусловно, будет содержать истинные значения. Но я думаю, что это такая непростая задача.
Есть ли другой способ получить текущие данные датчика?