我添加一個帶WindowManager的攝像頭覆蓋到一個正在運行的Activity。當我啓動相機並調用WindowManager時,即使將相應的縱向標籤分配給WindowManager.LayoutParams,它也會將我的屏幕從縱向更改爲橫向。無法通過谷歌找到任何解決方案。Android 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實例將其重新設置爲橫向。是的,我的Manifest中有肖像標籤。
編輯:隨着進一步的調查,windowmanager正在銷燬並重新創建我的活動正在運行,這導致一切恢復到橫向模式。我甚至嘗試在活動的onCreate中動態設置方向,但這也不起作用。當我停止使用上述所有窗口管理器代碼的服務時,我的活動會返回到肖像模式。
你有沒有找到任何解決方案,我面臨同樣的問題。 –