From 3aa58b0f35c60f7bf4c97a6e12c201abf90824c7 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Tue, 29 May 2012 17:36:48 -0700 Subject: [PATCH] Lock screen rotation accessibility preference not updated. 1. If the lock screen rotation preference is changed from the status bar the checkbox in the accessibility settings was not updated. bug:6562028 Change-Id: I353e3ad59374ad207297d2a6682e50ed07df820c --- .../settings/AccessibilitySettings.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java index 7647d01014a..d2bfc0deecb 100644 --- a/src/com/android/settings/AccessibilitySettings.java +++ b/src/com/android/settings/AccessibilitySettings.java @@ -30,6 +30,7 @@ import android.content.SharedPreferences; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.res.Configuration; +import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -44,6 +45,7 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.provider.Settings; +import android.provider.Settings.SettingNotFoundException; import android.text.TextUtils; import android.text.TextUtils.SimpleStringSplitter; import android.util.Log; @@ -149,6 +151,25 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements } }; + private final Uri mLockScreenRotationUri = Uri.withAppendedPath(Settings.System.CONTENT_URI, + Settings.System.ACCELEROMETER_ROTATION); + + private final ContentObserver mSettingsContentObserver = new ContentObserver(mHandler) { + @Override + public void onChange(boolean selfChange, Uri uri) { + if (mLockScreenRotationUri.equals(uri)) { + try { + final boolean lockRotationEnabled = (Settings.System.getInt( + getActivity().getContentResolver(), + Settings.System.ACCELEROMETER_ROTATION) == 0); + mToggleLockScreenRotationPreference.setChecked(lockRotationEnabled); + } catch (SettingNotFoundException e) { + /* ignore */ + } + } + } + }; + // Preference controls. private PreferenceCategory mServicesCategory; private PreferenceCategory mSystemsCategory; @@ -179,11 +200,14 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements offerInstallAccessibilitySerivceOnce(); } mSettingsPackageMonitor.register(getActivity(), getActivity().getMainLooper(), false); + getActivity().getContentResolver().registerContentObserver(mLockScreenRotationUri, false, + mSettingsContentObserver); } @Override public void onPause() { mSettingsPackageMonitor.unregister(); + getContentResolver().unregisterContentObserver(mSettingsContentObserver); super.onPause(); }