0

実行中のアクティビティにWindowManagerを使用してカメラのオーバーレイを追加する。カメラを起動してWindowManagerを呼び出すと、適切なポートレートタグをWindowManager.LayoutParamsに割り当てたにもかかわらず、画面が縦長から横長に変更されます。 googleで解決策を見つけることができませんでした。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インスタンスがそれを風景に戻すまで、その下に向かって縦になっています。そして、はい、私はマニフェストにポートレートタグを持っています。

編集:さらに調査すると、ウィンドウマネージャが自分のアクティビティを破棄して再作成しているため、すべてがランドスケープモードに戻っています。私はアクティビティのonCreateでオリエンテーションを動的に設定しようとしましたが、それはどちらもうまくいきませんでした。上記のすべてのウィンドウマネージャコードでサービスを停止すると、私の活動はポートレートモードに戻ります。

+0

解決策を見つけましたか?私は同じ問題に直面しています。 –

答えて

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

マニフェストでこれをアクティビティで定義してみてください。

+0

私は既にOrientationタグの画面を持っていて、configChangesを追加してもそれは役に立たなかった –

関連する問題