SCREEN_ORIENTATION_LANDSCAPE do góry nogami - Dlaczego?

Używam następującego kodu, aby ustawić blokowanie orientacji według preferencji użytkownika:

 private void doLock(boolean locked) {
     if (locked) {
       int o = getResources().getConfiguration().orientation;
       if (o == Configuration.ORIENTATION_LANDSCAPE)
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);       
       else if (o == Configuration.ORIENTATION_PORTRAIT)
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);       
     } 
     else {
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
     }
 }

Działa, z wyjątkiem przypadku, w którym jestem w trybie odblokowanym (SCREEN_ORIENTATION_SENSOR) z pokazanym ekranemLANDSCAPE poprawnie (!), a następnie wywołajdoLock(true) i...

zamiast blokowania ekranuLANDSCAPE w bieżącym (poprawnym) widoku krajobrazu blokuje siędo góry nogami widok krajobrazu. tj. dokładnie takie same, ale odwróć pionowo (y staje się-y).

Dlaczego tak i jak mam podejść do tego problemu, aby go naprawić?

Moje pierwsze zapytanie ujawnia, że ​​sącałkiem sporo możliwości inne niż wspólne dwa (portrait, landscape), włącznie zreverseLandscape, ale moje przeczucie mówi mi, że ten problem może byćzależne od urządzenia i dzięki temu mogę rozwiązać problem tylko dla mojego telefonu, ale nie dla wszystkich innych urządzeń.

Czy istnieje sposób wymuszenia poprawnościlandscape orientacja (po przełączeniu zsensor) we wszystkich urządzeniach?

Aby uczynić to jaśniejszym i łatwiejszym do odtworzenia, oto kroki, które pokazują problem:

Zacznij od telefonu obróconego w prawo (zgodnie ze wskazówkami zegara), w trybie odblokowanym (SCREEN_ORIENTATION_SENSOR) z pokazanym ekranemLANDSCAPE poprawnie (!),Następnie przywołajdoLock(true)Zamiast blokady ekranuLANDSCAPE w bieżącym (poprawnym) widoku krajobrazu blokuje siędo góry nogami widok krajobrazu. tj. dokładnie takie same, ale odwróć pionowo (y staje się-y).

questionAnswers(4)

yourAnswerToTheQuestion