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
).