经过大量研究后,似乎超越设备锁定方向并将屏幕设置为反向纵向的唯一方法是强制启用设备自动旋转。
首先,必须在标记上方的清单文件中添加此权限:
然后,在mainActivity中定义类似的内容:
public boolean enableAutoRotate(){
boolean isAutoRotate = android.provider.Settings.System
.getInt(getContentResolver(),Settings.System.ACCELEROMETER_ROTATION, 1) == 1;
if (!isAutoRotate){
try {
android.provider.Settings.System
.putInt(getContentResolver(),Settings.System.ACCELEROMETER_ROTATION, 1);
} catch (Exception e){
e.printStackTrace();
}
}
isAutoRotate = android.provider.Settings.System
.getInt(getContentResolver(),Settings.System.ACCELEROMETER_ROTATION, 1) == 1;
return isAutoRotate;
}
如果用户没有提供或删除权限,则try和catch对于防止应用程序崩溃非常重要。
然后,在需要时使用以下内容设置方向:
public void rotateScreen(boolean reverse){
if (enableAutoRotate()){
if (reverse) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
如果需要,rotateScreen方法也可以是boolean而不是void。