0

我添加一個帶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中動態設置方向,但這也不起作用。當我停止使用上述所有窗口管理器代碼的服務時,我的活動會返回到肖像模式。

+0

你有沒有找到任何解決方案,我面臨同樣的問題。 –

回答

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

嘗試在活動下的清單中定義此項。

+0

我已經有屏幕方向標籤,添加了configChanges,並沒有幫助 –