Add support for device state based auto-rotation preferences in Settings.
- Creates new preferences that are shown when device-state rotation is supported. - Hides standard preferences when device-state rotation is supported. - Controllers/Preferences for individual folded/unfolded rotation settings are created and added programatically based on the settable device states available. Test: Manually + Unit tests Bug: 195757480 Change-Id: I16f50fd3664756b363c7eb79e5c35eb0d3b6df17
This commit is contained in:
@@ -47,6 +47,7 @@ import com.android.settings.R;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
|
||||
|
||||
/**
|
||||
* SmartAutoRotateController controls whether auto rotation is enabled
|
||||
@@ -54,6 +55,8 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
public class SmartAutoRotateController extends TogglePreferenceController implements
|
||||
Preference.OnPreferenceChangeListener, LifecycleObserver {
|
||||
|
||||
protected Preference mPreference;
|
||||
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private final SensorPrivacyManager mPrivacyManager;
|
||||
private final PowerManager mPowerManager;
|
||||
@@ -63,7 +66,9 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
updateState(mPreference);
|
||||
}
|
||||
};
|
||||
protected Preference mPreference;
|
||||
private final DeviceStateRotationLockSettingsManager mDeviceStateAutoRotateSettingsManager;
|
||||
private final DeviceStateRotationLockSettingsManager.DeviceStateRotationLockSettingsListener
|
||||
mDeviceStateRotationLockSettingsListener = () -> updateState(mPreference);
|
||||
private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
|
||||
|
||||
public SmartAutoRotateController(Context context, String preferenceKey) {
|
||||
@@ -73,6 +78,8 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
mPrivacyManager
|
||||
.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> updateState(mPreference));
|
||||
mPowerManager = context.getSystemService(PowerManager.class);
|
||||
mDeviceStateAutoRotateSettingsManager = DeviceStateRotationLockSettingsManager.getInstance(
|
||||
context);
|
||||
}
|
||||
|
||||
public void init(Lifecycle lifecycle) {
|
||||
@@ -89,6 +96,9 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
}
|
||||
|
||||
protected boolean isRotationLocked() {
|
||||
if (DeviceStateAutoRotationHelper.isDeviceStateRotationEnabled(mContext)) {
|
||||
return mDeviceStateAutoRotateSettingsManager.isRotationLockedForAllStates();
|
||||
}
|
||||
return RotationPolicy.isRotationLocked(mContext);
|
||||
}
|
||||
|
||||
@@ -127,6 +137,8 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
};
|
||||
}
|
||||
RotationPolicy.registerRotationPolicyListener(mContext, mRotationPolicyListener);
|
||||
mDeviceStateAutoRotateSettingsManager.registerListener(
|
||||
mDeviceStateRotationLockSettingsListener);
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(ON_STOP)
|
||||
@@ -136,6 +148,8 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
|
||||
RotationPolicy.unregisterRotationPolicyListener(mContext, mRotationPolicyListener);
|
||||
mRotationPolicyListener = null;
|
||||
}
|
||||
mDeviceStateAutoRotateSettingsManager.unregisterListener(
|
||||
mDeviceStateRotationLockSettingsListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user