Пример компаса для Android
Я ищу пример компаса для Android. Все, что мне нужно сделать, это получить правильный подшипник (в портретном и альбомном режимах).
Я уже нашел несколько образцов, некоторые используют только Sensor.TYPE_ORIENTATION
, некоторые используют комбинацию Sensor.TYPE_ACCELEROMETER
и Sensor.TYPE_MAGNETIC_FIELD
.
Каков правильный и распространенный способ получить опору для того, чтобы сказать Android 1.6 - 4.0?
Ответы
Ответ 1
Sensor.TYPE_ORIENTATION
устарел.
В документации указано, что вы должны использовать SensorManager.getOrientation()
.
Итак, вы должны читать от Sensor.TYPE_ACCELEROMETER
, а также от Sensor.TYPE_MAGNETIC_FIELD
, а затем вызвать SensorManager.getRotationMatrix()
и, наконец, SensorManager.getOrientation()
, который вернет вам ориентацию телефона.
Оттуда, если вы видите эту диаграмму, тривиально получить ориентацию телефона. Вероятно, это ваш второй пример, но я не знаю, потому что вы не показали мне, что это такое.
Ответ 2
Спасибо Dan за образец кода.
Но есть только небольшая коррекция: измените event.values
на event.values.clone()
в соответствии с этим обсуждение.
Это работает для меня сейчас после этой модификации.
Ответ 3
Использование комбинации методов Sensor.TYPE_ACCELEROMETER
и Sensor.TYPE_MAGNETIC_FIELD
и SensorManager.getOrientation()
не дает мне точных значений. Устаревший метод Sensor.TYPE_ORIENTATION
работает хорошо.:)