Как определить наклон телефона?

Как определить угол ориентации телефона в одной плоскости?

Сейчас делаю через SensorManager:

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

...

public void onSensorChanged(SensorEvent event) {
    xy_angle = event.values[0]; 
    xz_angle = event.values[1]; 
    zy_angle = event.values[2]; 

Здесь я получаю разные ракурсы, а мне нужен только один ракурс, который меняется при повороте телефона, при движении по синей линии.

Как вычислить или как получить этот угол?

http://i.stack.imgur.com/kCElj.jpg

Как я могу использовать SensorManager. getOrientation для элементов управления наклоном, таких как My Paper Plane? - аналогичный вопрос здесь, но я не понимаю, как автор решает свою проблему.


person user1367713    schedule 01.05.2012    source источник
comment
Поделитесь решением, если есть   -  person Aashish Bhatnagar    schedule 25.03.2013


Ответы (3)


Вам нужно SensorManager.getOrientation().

person Krishnakant Dalal    schedule 01.05.2012

Я вижу, что этот пост немного устарел, поэтому, возможно, на него уже был дан ответ, но Sensor.TYPE_ORIENTATION теперь устарел в пользу SensorManager.getOrientation().

Я сделал полное описание того, что вы ищете здесь: http://blog.samsandberg.com/2015/05/10/tilt-for-android/

Надеюсь, это поможет кому-то, кто ищет то же самое!

person Loisaida Sam Sandberg    schedule 10.05.2015
comment
Извините за это - блог был пронизан спамом, поэтому я удалил его, пока у меня не было возможности это исправить. Фиксированный! - person Loisaida Sam Sandberg; 15.12.2016

Автор этого вопроса решил свою проблему, изменив порядок параметров:

 if (SensorManager.getRotationMatrix(m_rotationMatrix, null,
                                    m_lastMagFields, m_lastAccels)) {

to:

if (SensorManager.getRotationMatrix(m_rotationMatrix, null,
                                m_lastAccels, m_lastMagFields)) {
person Yusuf X    schedule 01.05.2012