Вернуть контроль над ориентацией экрана на устройство

Я пытаюсь создать приложение, которое всегда настроено на ландшафтный режим, и, поскольку в моем приложении нет никаких действий, я попытался изменить ориентацию своего приложения, изменив ориентацию устройства. Это хорошо сработало для моего приложения, но поскольку я контролирую ориентацию всего устройства, на некоторые места повлиял мой код, например (на моем устройстве домашний экран никогда не поворачивался, но когда я добавил свой код в приложение, он начал вращаться для пейзажа)

поэтому я хочу спросить (после того, как я закрыл свое приложение), как я могу заставить ориентацию устройства работать так, как обычно, до добавления моего собственного кода?

вот мой код:

WindowManager wm = (WindowManager) getSystemService(Service.WINDOW_SERVICE);

    orientationChanger = new LinearLayout(this);
    orientationChanger.setClickable(false);
    orientationChanger.setFocusable(false);
    orientationChanger.setFocusableInTouchMode(false);
    orientationChanger.setLongClickable(false);

    LayoutParams orientationLayout = new WindowManager.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.RGBA_8888);

    wm.addView(orientationChanger, orientationLayout);
    orientationChanger.setVisibility(View.GONE);

    orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
    wm.updateViewLayout(orientationChanger, orientationLayout);
    orientationChanger.setVisibility(View.VISIBLE);

person Ghadeer Walid    schedule 23.03.2014    source источник


Ответы (1)


Это полный перебор. Просто используйте атрибут screenOrientation для ваших тегов Activity в AndroidManifest.xml:

<activity
    android:name=".MyActivity"
    android:screenOrientation="landscape">
person Kevin Coppock    schedule 23.03.2014
comment
У меня нет действий в моем приложении! Я пытаюсь работать с сервисами Android специально InputMethodService, и поэтому я контролирую ориентацию всего устройства - person Ghadeer Walid; 23.03.2014
comment
Я в замешательстве, наверное. Если у вас нет пользовательского интерфейса, зачем вам контролировать ориентацию? - person Kevin Coppock; 23.03.2014
comment
Нет, у меня есть класс, который расширяет относительный макет, и я настраиваю его в файле main.xml, затем в своем классе InputMethodService я называю его: getLayoutInflater().inflate(R.layout.main, null); - person Ghadeer Walid; 23.03.2014
comment
Итак, вы пытаетесь создать метод ввода и хотите перевести любое приложение, использующее ваш метод ввода, в альбомную ориентацию? - person Kevin Coppock; 23.03.2014
comment
Я хочу заставить сам InputMethod быть в ландшафте каждый раз, когда он появляется - person Ghadeer Walid; 23.03.2014
comment
Что также потребует, чтобы приложение, использующее метод ввода, было в ландшафте. - person Kevin Coppock; 24.03.2014
comment
На самом деле моя InputMethod должна использоваться как клавиатура устройства по умолчанию. поэтому он будет использоваться каждым приложением на устройстве, которому требуется функция ввода текста. Я не знаю, могу ли я управлять каждым приложением, которое использует мой InputMethod, чтобы оно находилось в ландшафтном режиме только тогда, когда появляется InputMethod. Возможно ли это? - person Ghadeer Walid; 24.03.2014