即使设备方向锁定,应用程序也会自动旋转

App auto rotates even with device orientation locked

我正在开发基于 activity 的普通应用程序。 我已从设备设置中关闭设备方向。 当我 运行 我的应用程序在设备上时,该应用程序会根据设备的移动改变方向。 我不知道即使设备方向被锁定,应用程序如何旋转。 在堆栈溢出或任何其他论坛上没有这样的 instance/issue 报告或询问过。 请指出,我可能遗漏了什么?

您可以检查设备旋转是关闭还是打开,然后将其锁定,如下所示:

if (android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1){
    //Auto Rotate is on, so don't lock

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
else{
    //Auto Rotate is off, so lock

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

这是一个非常愚蠢的错误,但我想到在这里分享,以防其他人遇到这个问题。 有一次,在我的应用程序中,我以编程方式将设备方向设置为 SCREEN_ORIENTATION_FULL_SENSOR:

activityContext.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

这允许应用根据传感器更改方向,即使用户已锁定设备方向。