禁用方向更改 - WindowManager

时间:2016-07-29 10:39:35

标签: android screen-orientation android-windowmanager

我正在开发一个锁屏应用程序,我在服务中使用WindowManager添加一个View。 我已在清单文件中为所有活动设置了Orientation PORTRAIT,但这似乎不适用于此动态添加的视图。

请参阅下面的代码段

    public class LockerService extends Service{
        @Override
            public void onCreate() {
                super.onCreate();
                windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
                lockScreenView = new LockScreenView(this, this);
                windowManager.addView(lockScreenView, params);
    }
}

锁屏视图如下:

public class LockScreenView extends RelativeLayout{
public LockScreenView(Context context, ScreenUnlockedDeligate screenUnlockedDeligate) {
        super(context);
         setSystemUiVisibility(SYSTEM_UI_FLAG_IMMERSIVE_STICKY | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        inflate(getContext(), R.layout.view_lock, this);

    }

}

有什么方法可以禁用此视图的方向更改?即Orientation.PORTRAIT

修改

  
    

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

  
     

似乎在此上下文中不可用

提前致谢!!

干杯

1 个答案:

答案 0 :(得分:1)

经过一番搜索,我找到了解决方案。

添加

  

params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

在添加视图之前

将解决问题并根据需要锁定方向。

像:

    public class LockerService extends Service{
            @Override
                public void onCreate() {
                    super.onCreate();
                    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
                    lockScreenView = new LockScreenView(this, this);
                    params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                    windowManager.addView(lockScreenView, params);
        }
    }