Android WindowManager меняет ориентацию экрана
Я добавляю наложение камеры с WindowManager для запуска Activity. Когда я запускаю камеру и вызываю WindowManager, он меняет мой экран с портретного на ландшафтный, хотя я назначил соответствующий тег портрета WindowManager.LayoutParams. Не удалось найти какие-либо решения через Google.
Вот мой код 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 of Activity, но это тоже не сработало. Когда я останавливаю службу со всем приведенным выше кодом менеджера окон, моя деятельность возвращается в портретный режим.
1 ответ
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
Попробуйте определить это в своем манифесте под действием.