Не срабатывает onConfigurationChanged при смене ориентации на 180 градусов

Рейтинг: 0Ответов: 0Опубликовано: 10.07.2023

Надо получить все четыре положения экрана телефона, через угол. Но проблема в том, что когда из горизонтальной ориентации (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);
        
    }

Ответы

Ответов пока нет.