Remove Auto-rotate screen setting if a required feature is missing.
It is possible that a device running Android does not support rotation,
for example a Google TV box. The change adds a check to the rotation
policy to take this into account.
bug:8051556
Change-Id: I60a2a35da148271a18873f6c70556dacab29dae9
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java
index a4438d0..4ca98d8 100644
--- a/src/com/android/settings/AccessibilitySettings.java
+++ b/src/com/android/settings/AccessibilitySettings.java
@@ -200,16 +200,20 @@
mSettingsPackageMonitor.register(getActivity(), getActivity().getMainLooper(), false);
mSettingsContentObserver.register(getContentResolver());
- RotationPolicy.registerRotationPolicyListener(getActivity(),
- mRotationPolicyListener);
+ if (RotationPolicy.isRotationSupported(getActivity())) {
+ RotationPolicy.registerRotationPolicyListener(getActivity(),
+ mRotationPolicyListener);
+ }
}
@Override
public void onPause() {
mSettingsPackageMonitor.unregister();
- RotationPolicy.unregisterRotationPolicyListener(getActivity(),
- mRotationPolicyListener);
mSettingsContentObserver.unregister(getContentResolver());
+ if (RotationPolicy.isRotationSupported(getActivity())) {
+ RotationPolicy.unregisterRotationPolicyListener(getActivity(),
+ mRotationPolicyListener);
+ }
super.onPause();
}
@@ -320,6 +324,9 @@
// Lock screen rotation.
mToggleLockScreenRotationPreference =
(CheckBoxPreference) findPreference(TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE);
+ if (!RotationPolicy.isRotationSupported(getActivity())) {
+ mSystemsCategory.removePreference(mToggleLockScreenRotationPreference);
+ }
// Speak passwords.
mToggleSpeakPasswordPreference =
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index fb839a7..6c3a990 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -95,9 +95,11 @@
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
- if (RotationPolicy.isRotationLockToggleSupported(getActivity())) {
+ if (!RotationPolicy.isRotationSupported(getActivity())
+ || RotationPolicy.isRotationLockToggleSupported(getActivity())) {
// If rotation lock is supported, then we do not provide this option in
- // Display settings. However, is still available in Accessibility settings.
+ // Display settings. However, is still available in Accessibility settings,
+ // if the device supports rotation.
getPreferenceScreen().removePreference(mAccelerometer);
}