Как реализовать «калибруемый» слушатель ориентации в Android? - PullRequest
0 голосов
/ 04 декабря 2010

Пожалуйста, посмотрите код от здесь .

Чтобы суммировать код в приведенной выше ссылке, код объявляет интерфейс "OrientationListener" и "класс" OrientationManager ". OrientationManager прослушивает SensorEvent и вызывает один из четырех декальдированных методов в OrientationListenor, onTopUp (), onRightUp (), onBottomUp () и onLeftUp (), если верхняя, правая, нижняя или левая сторона устройства направлены вверх.

Это прекрасно работает, если вы предполагаете, что пользователи используют свои устройства только так, чтобы координаты xy устройства были параллельны земле. Реальность такова, что пользователи обычно используют свое устройство по усмотрению ангела, сидя или лежа, держа телефон вверх ногами.

Как я могу изменить этот код, чтобы пользователи могли "калибровать" свой телефон?

Помощь очень ценится, это мой второй день, изучающий это безрезультатно.

1 Ответ

0 голосов
/ 04 декабря 2010

@ Галлал, я полагаю, вы уже получили ответ на этот вопрос в предыдущем вопросе?

Однако, для этой проблемы, которую вы описали здесь (то есть, для определения, какая сторона «вверх», независимо от того, насколько), вы можете рассмотреть использование показаний акселерометра, а не матрицы вращения. Снова, прочитайте ваши аксели в Calibrate и сохраните 3 гравитационных компонента, которые вы прочитали как Axi, Ayi, Azi. Теперь, предполагая, что устройство всегда «вверх», вы можете сравнить текущие показания ускорения с начальными, чтобы определить, какая сторона пошла «вверх» (та, где компонент гравитации стал меньше), а какая «вниз» где гравитационная составляющая стала больше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...