Use WM APIs to change rotation preference.

Bug: 5371750

Changing the system setting directly results in inconsistent
behavior among the three different places where "auto-rotate"
settings appear in the UI.  Use the WM APIs instead.

Change-Id: I1a8239af66b1cc3aeec8310383e72fc96c878d73
This commit is contained in:
Jeff Brown
2011-10-05 11:53:01 -07:00
parent 3f28ff1a06
commit cbf312ec29
2 changed files with 30 additions and 6 deletions

View File

@@ -35,6 +35,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
@@ -45,12 +46,15 @@ import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.TextUtils.SimpleStringSplitter;
import android.util.Log;
import android.view.Gravity;
import android.view.IWindowManager;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Surface;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@@ -72,6 +76,7 @@ import java.util.Set;
*/
public class AccessibilitySettings extends SettingsPreferenceFragment implements DialogCreatable,
Preference.OnPreferenceChangeListener {
private static final String TAG = "AccessibilitySettings";
private static final String DEFAULT_SCREENREADER_MARKET_LINK =
"market://search?q=pname:com.google.android.marvin.talkback";
@@ -230,9 +235,17 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
}
private void handleToggleAutoRotateScreenPreferenceClick() {
Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION,
(mToggleAutoRotateScreenPreference.isChecked() ? 1 : 0));
try {
IWindowManager wm = IWindowManager.Stub.asInterface(
ServiceManager.getService(Context.WINDOW_SERVICE));
if (mToggleAutoRotateScreenPreference.isChecked()) {
wm.thawRotation();
} else {
wm.freezeRotation(Surface.ROTATION_0);
}
} catch (RemoteException exc) {
Log.w(TAG, "Unable to save auto-rotate setting");
}
}
private void initializeAllPreferences() {