SystemUI中快捷菜单有 “方向锁定” 。
RotationLockTile
protected void handleClick() {
if (mController == null) return;
MetricsLogger.action(mContext, getMetricsCategory(), !mState.value);
final boolean newState = !mState.value;
mController.setRotationLocked(!newState);//这里执行方向锁定
refreshState(newState);
}
RotationLockControllerImpl
public void setRotationLocked(boolean locked) {
RotationPolicy.setRotationLock(mContext, locked);//执行方向锁定
}
这个快捷菜单只能在手机已经显示横屏或竖屏后,才能执行,无法预设锁定方向。
2,StatusBarWindowManager中设置锁屏横屏显示。
private void adjustScreenOrientation(State state) { if (state.isKeyguardShowingAndNotOccluded()) {
//注释掉源码中对方向的处理
// if (mKeyguardScreenRotation) {
// mLpChanged.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_USER;
// } else {
// mLpChanged.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
// }
mLpChanged.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; //指定锁屏模式下,固定横屏显示。
} else {
mLpChanged.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
}
}