2014-12-02 2 views
3

Мне нужно получить точный угол моего устройства Android с каждой оси.Измерение точного угла поворота устройства в android

Во-первых, я должен сказать, что я искал через сеть, а также StackOverflow, и я видел, как эти страницы:

How to measure the tilt of the phone in XY plane using accelerometer in Android

Get Android rotation angle in x-axis

Но они не были полезны. Я использовал некоторые из них, но они дают неправильные значения.

Если ось в устройстве будет выглядеть следующим образом:

enter image description here

мне нужно, чтобы получить этот угол поворота:

enter image description here

Я не хочу использовать любое оборудование датчик, кроме акселерометра, и я работаю с API 17. Я думаю, что это возможно на основе гоночных игр, но я не знаю, как это сделать.

Буду признателен, если вы мне поможете. Спасибо

+0

Необходимо передать это. http://developer.android.com/reference/android/hardware/SensorEvent.html –

+0

Как я уже говорил ранее, я просто хочу получить ориентацию, используя акселерометр. У меня нет другого аппаратного сенсора. Также учтите, что TYPE_ORIENTATION устарел на уровне API 8, а также у меня нет доступа к датчикам, которые относятся к API 20, например STRING_TYPE_LINEAR_ACCELERATION. – Taher

ответ

0

Невозможно получить все вращения, используя только TYPE_ACCELEROMETER. Вам также понадобится TYPE_MAGNETIC_FIELD. Если вам неинтересно, насколько чувствительны значения в отношении быстрого движения, вам нужно TYPE_GRAVITY или TYPE_ACCELEROMETER вместе с TYPE_MAGNETIC_FIELD.
Для поворота относительно оси z вы можете следовать первой ссылке в своем вопросе.
Для поворота относительно осей x и y вы можете использовать поворот и рулон и экранную облицовку.

+0

Спасибо. Нужно ли иметь другой аппаратный датчик для доступа к TYPE_MAGNETIC_FIELD? – Taher

+0

Обычно большинство телефонов имеют TYPE_ACCELEROMETER и TYPE_MAGNETIC_FIELD. Если существует TYPE_GRAVITY, используйте его вместо TYPE_ACCELEROMETER. Если вы используете тип TYPE_ACCELEROMETER, тогда вам необходимо фильтровать нижний проход, чтобы отфильтровать ускорения x и y. –

+0

Я проверил их и, к сожалению, у меня нет доступа к TYPE_MAGNETIC_FIELD и TYPE_GRAVITY. – Taher