Пример Android компаса - PullRequest
       7

Пример Android компаса

10 голосов
/ 05 января 2012

Я ищу пример компаса для Android. Все, что мне нужно сделать, это получить правильную ориентацию (в портретной и альбомной ориентации).

Я уже нашел несколько образцов, некоторые используют только Sensor.TYPE_ORIENTATION, некоторые используют комбинацию Sensor.TYPE_ACCELEROMETER & Sensor.TYPE_MAGNETIC_FIELD.

Какой правильный и распространенный способ получить отношение, скажем, к Android 1.6 - 4.0?

Ответы [ 3 ]

19 голосов
/ 05 января 2012

Sensor.TYPE_ORIENTATION устарело.

В документации сказано, что вы должны использовать SensorManager.getOrientation().

Таким образом, вы должны прочитать с Sensor.TYPE_ACCELEROMETER, а также с Sensor.TYPE_MAGNETIC_FIELD, а затем позвонить SensorManager.getRotationMatrix() и, наконец, SensorManager.getOrientation(), который вернет вам ориентацию телефона.

Оттуда, если вы видите эту диаграмму, тривиально получить ориентацию телефона. Вероятно, это то, что делает ваш второй пример, но я не знаю, потому что вы не показали мне, что это такое.

5 голосов
/ 05 декабря 2012

Спасибо Дэну за пример кода.

Но есть только небольшое исправление : измените event.values на event.values.clone() в соответствии с этим обсуждением .
Теперь оно работает для меня после этой модификации.

0 голосов
/ 29 ноября 2012

Использование комбинации методов Sensor.TYPE_ACCELEROMETER и Sensor.TYPE_MAGNETIC_FIELD и SensorManager.getOrientation() не дает точных значений.Устаревший метод Sensor.TYPE_ORIENTATION работает хорошо.:)

...