Android WindowManager改变屏幕方向

问题描述:

我添加一个带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

你有没有找到任何解决方案,我面临同样的问题。 –

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

尝试在活动下的清单中定义此项。

+0

我已经有屏幕方向标签,添加了configChanges,并没有帮助 –