Android - как запустить свой сенсор (сервис, нить, активность)?

Я пишу простую игру наклона. Заставьте мяч катиться по экрану в направлении наклона телефона.

Поэтому я скачал пример того, как получить данные датчика, и это прекрасно работает (я использую матрицу вращения, чтобы избежать проблемы угла Эйлера). Но затем я попытался поместить его в более крупное приложение, и у меня возникли некоторые проблемы с его работой.

Моей первой идеей было запустить датчик наклона в отдельном потоке, но мой класс: открытый класс TiltSensor расширяет поток, реализует, что SensorEventListener работает не очень хорошо. Я получаю один раунд значений, затем он останавливается.

Как бы вы реализовали это приложение?

Я не хочу блокировать поток пользовательского интерфейса, поэтому я думаю, что мне нужен отдельный поток (GameHandler) для запуска игры, а затем я вызываю runOnUithread и оттуда аннулирую View. Я бы также отделил представление доски от представления, чтобы представить экран в виде матрицы, а затем представление использовало бы эту матрицу, чтобы знать, как должен выглядеть экран. Но я не уверен, какой лучший способ реализовать TiltSensor. Должен ли он работать в отдельном потоке или в том же потоке, что и GameHandler? Как мне убедиться, что SensorManager действительно вызывает onSensorChanged в потоке GameHandler?

Ответы на вопрос(1)

Ваш ответ на вопрос