Android WindowManager меняет ориентацию экрана

Я добавляю наложение камеры с помощью WindowManager к работающей активности. Когда я запускаю камеру и вызываю WindowManager, он меняет мой экран с портретного на альбомный, даже несмотря на то, что я назначил соответствующий тег портрета для WindowManager.LayoutParams. В гугле решения не нашел.

Вот мой код WindowManager, работающий в методе службы:

inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    View view;

    view = inflater.inflate(R.layout.camera, null, false);

    p = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);

    p.gravity = Gravity.TOP | Gravity.CENTER;
    p.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

    windowManager.addView(view,p);

Макет R.layout.camera — это просто представление FrameLayout, в которое я добавляю свою камеру. Камера работает нормально. Моя активность, выполняемая внизу, является портретной (как и должно быть), пока экземпляр WindowManager не вернет ее обратно в альбомную. И да, у меня есть тег портрета в моем манифесте.

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


person M. Smith    schedule 02.12.2016    source источник
comment
Вы нашли какое-либо решение, я столкнулся с той же проблемой.   -  person Irfan Ul Haq    schedule 07.12.2017


Ответы (1)


      android:screenOrientation="portrait"
      android:configChanges="orientation|keyboardHidden"

Попробуйте определить это в своем манифесте в разделе Activity.

person Laytan    schedule 02.12.2016
comment
У меня уже был тег ориентации экрана, я добавил configChanges, и это не помогло. - person M. Smith; 05.12.2016