Не срабатывает onConfigurationChanged при смене ориентации на 180 градусов
Надо получить все четыре положения экрана телефона, через угол. Но проблема в том, что когда из горизонтальной ориентации (Landscape) быстро перевернуть телефон на 180 градусов, не происходит никакого события в onConfigurationChanged, то есть не отловить изменение угла и соответственно положения телефона. Есть решение?
ps. Интересно то, что если в вертикальной ориентации быстро переворачивать телефон на 180 градусов, то все определяется правильно и метод onConfigurationChanged срабатывает чётко, а когда в горизонтальной ориентации быстро перевернуть телефон на 180 градусов, то этот метод не срабатывает.
//Получить углы и ориентацие через них
public int getMyScreenOrientation1(){
int rotate = getWindowManager().getDefaultDisplay().getRotation();
switch (rotate) {
case Surface.ROTATION_0:
return 0 /*"Не поворачивали"*/;
case Surface.ROTATION_90:
return 90 /*"Повернули на 90 градусов по часовой стрелке"*/;
case Surface.ROTATION_180:
return 180 /*"Повернули на 180 градусов"*/;
case Surface.ROTATION_270:
return 270 /*"Повернули на 90 градусов против часовой стрелки"*/;
default:
return 0 /*"Не понятно"*/;
}
}
//отследить поворот экрана
@Override
public void onConfigurationChanged(Configuration newConfig) {
Toast.makeText(this, Integer.toString(getMyScreenOrientation1()), Toast.LENGTH_SHORT).show();
super.onConfigurationChanged(newConfig);
}
Источник: Stack Overflow на русском