Проблема с вращением активности по часовой стрелке на реальном устройстве - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть активность, на которой есть кнопка, я хочу изменить ориентацию на 90 градусов по часовой стрелке после того, как каждый раз, когда пользователь нажимает кнопку, я написал несколько кодов и работал на эмуляторе, но когда я тестировал его на реальном устройстве, его нетработал отлично, и когда мой код попал в случай 1, он вернулся в режим PORTRAIT вместо изменения поворота на REVERSE_PORTRAIT

Вот мой код:

btnchangeRotation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int rotation = getWindowManager().getDefaultDisplay().getRotation();
            Log.v("rotation--", ""+rotation);

            switch (rotation) {

                case 0:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    break;
                case 1:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
                    break;
                case 2:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                    break;
                case 3:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    break;
            }
        }
    });

Также я добавил разрешение на манифест НравитсяЭто:

<uses-permission
        android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

Обратите внимание, что он работает на эмуляторе полностью без проблем.Любые предложения будут полезны.Спасибо за любые предложения.

Примечание: Когда я включаю поворот экрана на реальном устройстве, он работает очень хорошо, но когда я выключаю его, он просто установлен в книжной и альбомной ориентации, я хочу сделать это сПриборы без датчика гироскопа.

1 Ответ

0 голосов
/ 16 декабря 2018
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Может быть, вы имеете в виду:

MyActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

У вас есть версия, которая просто вызывает метод и не имеет дескриптора самой операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...