Android: получить текущую ориентацию устройства

У меня ориентация деятельности в манифесте установлена ​​как портретная. Поскольку я не хочу, чтобы мой экран вращался.

Но при нажатии кнопки я хочу получить текущую ориентацию устройства (книжную или альбомную) в Android? Мне не нужно постоянное обновление с датчиков; достаточно только текущей ориентации устройства, когда я нажимаю кнопку.

PS: Ориентация устройства - это то, как я держу свое устройство. Не путайте это с ориентацией экрана.

Это то, что я сделал до сих пор?

 int PORT=1,LAND=2;

 WindowManager windowService = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

 int rotation = windowService.getDefaultDisplay().getRotation();        

    if (Surface.ROTATION_0 == rotation) {
        rotation = PORT;
    } else if(Surface.ROTATION_180 == rotation) {
        rotation = PORT;
    } else if(Surface.ROTATION_90 == rotation) {
        rotation = LAND;
    } else if(Surface.ROTATION_270 == rotation) {
        rotation = LAND;
    }
 return rotation;

Даже использование следующего метода не помогает

getResources().getConfiguration().orientation

Он всегда возвращает 1, так как по умолчанию для моей активности задан портрет.

Мы будем очень признательны за образец / пример кода.

Спасибо.


person Kushal    schedule 20.01.2015    source источник
comment
stackoverflow.com/questions/2795833/ взял мне 10 сек. гуглить   -  person Bart Hofma    schedule 20.01.2015
comment
Барт: Ну, я прошел через то же самое. но это не удается, когда ориентация экрана фиксирована.Я хочу, чтобы ориентация устройства была нажата на кнопку   -  person Kushal    schedule 20.01.2015
comment
Вы можете запустить код в ActionListener для своей кнопки   -  person Bart Hofma    schedule 20.01.2015
comment
попробуй это. developer.android.com/reference/android/view/   -  person vincentzhou    schedule 20.01.2015
comment
@Kushal, я наблюдаю то же поведение, пытаюсь придумать решение, поскольку я хотел бы знать, почему это тоже происходит. Итак, извиняюсь за мой первый комментарий, похоже, он действительно не решает вашу проблему   -  person Bart Hofma    schedule 20.01.2015
comment
@Kushal вы тестируете на девайсе или эмуляторе?   -  person Bart Hofma    schedule 20.01.2015
comment
@ Барт: Нет проблем. В настоящее время я тестирую устройство.   -  person Kushal    schedule 20.01.2015
comment
Я думаю, что шансы на помощь других невысоки, так как это было помечено как повторяющееся, вы можете попробовать перефразировать вопрос, указав то, что вы пробовали.   -  person Bart Hofma    schedule 20.01.2015
comment
Ага. Придется сделать это   -  person Kushal    schedule 20.01.2015


Ответы (1)


Использовать это :)

getResources().getConfiguration().orientation
person Shirane85    schedule 20.01.2015
comment
Это не работает, когда ориентация экрана фиксирована. - person Kushal; 20.01.2015
comment
если это не удается, обновите свой вопрос, добавив код и трассировку стека. - person Bart Hofma; 20.01.2015
comment
Я имею в виду, что под ошибкой он всегда возвращает значение портретного режима, независимо от того, как я держу свое устройство. - person Kushal; 20.01.2015
comment
@Kushal, вероятно, потому что вы получаете ориентацию по умолчанию windowService.getDefaultDisplay (). GetRotation (); вы пробовали наше предложение? - person Bart Hofma; 20.01.2015
comment
Да, я сделал. int rot = getResources (). getConfiguration (). Ориентация; возвратная гниль; - person Kushal; 20.01.2015
comment
всегда возвращает 1, независимо от того, как я держу свое устройство - person Kushal; 20.01.2015
comment
Как это различает левый пейзаж / правый пейзаж? Или портрет / портрет вверх ногами? - person atreat; 17.03.2016