Android:如何强制整个Android设备只在横向或纵向上运行

时间:2016-11-29 22:33:23

标签: android rotation orientation lockscreen

有问题迫使设备锁定为横向/纵向模式吗?

我创建了一个启动器应用程序,活动本身被指定为横向屏幕方向,因为我的设备是仅景观设备。

进一步锁定屏幕,以便在横向屏幕中运行其他应用程序并运行时。

View orientationChanger = new LinearLayout(this);
    WindowManager.LayoutParams orientationLayout = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, PixelFormat.RGBA_8888);
    orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR;

    WindowManager wm = (WindowManager) this.getSystemService(Service.WINDOW_SERVICE);
    wm.addView(orientationChanger, orientationLayout);
    orientationChanger.setVisibility(View.VISIBLE);

它确实可以解决这个问题,例如:

现在我想允许用户旋转方向,以防某些应用程序需要以纵向模式运行。

I tried to run these command on adb shell before doing it on my code:

try {
        Process stopAccelerometer = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0");
        Process toProtrait = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:3");
    } catch (IOException ex) {
        ex.printStackTrace();
    }

是的,它在Portrait中运行应用程序,但是如果我应用命令转回横向,它确实会回到横向。

            Process toProtrait = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0");

在代码中,最后一个值为0作为横向。我认为应用程序本身不支持横向,因此当我应用命令时,应用程序停留在Portrait。

我在网上发现了一个正在这样做的应用程序。  Orientation Applications

1 个答案:

答案 0 :(得分:0)

请求将活动设置为横向模式

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

请求活动为纵向模式

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

把它放在你的oncreate();

或只是在清单活动中设置

<activity
    android:screenOrientation="portrait/landscape"
    android:name=".ui.MainActivity"
    android:windowSoftInputMode="stateHidden"/>