Merge "Settings for the screen magnification feature." into jb-mr1-dev

This commit is contained in:
Svetoslav Ganov
2012-09-07 16:20:36 -07:00
committed by Android (Google) Code Review
5 changed files with 341 additions and 200 deletions

View File

@@ -2976,30 +2976,52 @@
<string name="accessibility_settings">Accessibility</string> <string name="accessibility_settings">Accessibility</string>
<!-- Settings title for accessibility settings screen --> <!-- Settings title for accessibility settings screen -->
<string name="accessibility_settings_title">Accessibility settings</string> <string name="accessibility_settings_title">Accessibility settings</string>
<!-- Title for the accessibility preference category of accessibility services. [CHAR LIMIT=25] --> <!-- Title for the accessibility preference category of accessibility services. [CHAR LIMIT=25] -->
<string name="accessibility_services_title">Services</string> <string name="accessibility_services_title">Services</string>
<!-- Title for the accessibility preference category of system related preferences. [CHAR LIMIT=25] --> <!-- Title for the accessibility preference category of system related preferences. [CHAR LIMIT=25] -->
<string name="accessibility_system_title">System</string> <string name="accessibility_system_title">System</string>
<!-- Title for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
<string name="accessibility_screen_magnification_title">Screen magnification</string>
<!-- Summary for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
<string name="accessibility_screen_magnification_summary">
When screen magnification is on, you can:\n
\n
Temporary zoom-in: Triple-tap &amp; hold.\n
Toggle permanent zoom state: Triple-tap &amp; release.\n
\n
Adjust zoomed area: Triple-tap &amp; hold to zoom, then drag your finger across the screen.\n
Pan when zoomed-in: Drag two or more fingers across the screen.\n
\n
Adjust zoom level when zoomed-out: Triple-tap &amp; hold to zoom, then drag one or more fingers.\n
Adjust zoom level when zoomed-in: Pinch with two or more fingers.\n
</string>
<!-- Title for the accessibility preference to enable large text. [CHAR LIMIT=35] --> <!-- Title for the accessibility preference to enable large text. [CHAR LIMIT=35] -->
<string name="accessibility_toggle_large_text_title">Large text</string> <string name="accessibility_toggle_large_text_preference_title">Large text</string>
<!-- Title for the accessibility preference to enable screen magnification. [CHAR LIMIT=35] -->
<string name="accessibility_toggle_screen_magnification_preference_title">Screen magnification</string>
<!-- Title for the accessibility preference to auto update screen magnification. [CHAR LIMIT=35] -->
<string name="accessibility_toggle_screen_magnification_auto_update_preference_title">Auto
update screen magnification</string>
<!-- Summary for the accessibility preference to auto update screen magnification. [CHAR LIMIT=50] -->
<string name="accessibility_toggle_screen_magnification_auto_update_preference_summary">Update
screen magnification on app transitions</string>
<!-- Title for the accessibility preference to power button to end a call. [CHAR LIMIT=35] --> <!-- Title for the accessibility preference to power button to end a call. [CHAR LIMIT=35] -->
<string name="accessibility_power_button_ends_call_title">Power button ends call</string> <string name="accessibility_power_button_ends_call_prerefence_title">Power button ends call</string>
<!-- Title for the accessibility preference to speak passwords. [CHAR LIMIT=35] --> <!-- Title for the accessibility preference to speak passwords. [CHAR LIMIT=35] -->
<string name="accessibility_speak_password_title">Speak passwords</string> <string name="accessibility_toggle_speak_password_preference_title">Speak passwords</string>
<!-- Title for accessibility preference to choose long-press delay i.e. timeout before it is detected. [CHAR LIMIT=35] --> <!-- Title for accessibility preference to choose long-press delay i.e. timeout before it is detected. [CHAR LIMIT=35] -->
<string name="accessibility_long_press_timeout_title">Touch &amp; hold delay</string> <string name="accessibility_long_press_timeout_preference_title">Touch &amp; hold delay</string>
<!-- Title for accessibility preference to install accessibility scripts from Google. [CHAR LIMIT=35] --> <!-- Title for accessibility preference to install accessibility scripts from Google. [CHAR LIMIT=35] -->
<string name="accessibility_script_injection_title">Enhance web accessibility</string> <string name="accessibility_toggle_script_injection_preference_title">Enhance web accessibility</string>
<!-- Title for accessibility menu item to lauch a settings activity. [CHAR LIMIT=15] --> <!-- Title for accessibility menu item to lauch a settings activity. [CHAR LIMIT=15] -->
<string name="accessibility_menu_item_settings">Settings</string> <string name="accessibility_menu_item_settings">Settings</string>
<!-- Summary for the enabled state of an accessiblity serivce. [CHAR LIMIT=10] --> <!-- Summary for the enabled state of an accessiblity feature. [CHAR LIMIT=10] -->
<string name="accessibility_service_state_on">On</string> <string name="accessibility_feature_state_on">On</string>
<!-- Summary for the disabled state of an accessiblity serivce. [CHAR LIMIT=10] --> <!-- Summary for the disabled state of an accessiblity feature. [CHAR LIMIT=10] -->
<string name="accessibility_service_state_off">Off</string> <string name="accessibility_feature_state_off">Off</string>
<!-- Summary for the allowed state of script injection. [CHAR LIMIT=15] --> <!-- Summary for the allowed state of script injection. [CHAR LIMIT=15] -->
<string name="accessibility_script_injection_allowed">Allowed</string> <string name="accessibility_script_injection_allowed">Allowed</string>
@@ -3855,6 +3877,15 @@
<string name="show_all_anrs_summary">Show App Not Responding dialog <string name="show_all_anrs_summary">Show App Not Responding dialog
for background apps</string> for background apps</string>
<!-- Preference category for accessibility debugging development settings. [CHAR LIMIT=25] -->
<string name="debug_accessibility_category">Accessibility</string>
<!-- Accessibility debug setting: automatically update magnification state [CHAR LIMIT=50] -->
<string name="display_magnification_auto_update">Auto update magnification</string>
<!-- Accessibility debug setting: automatically update magnification state summary [CHAR LIMIT=100] -->
<string name="display_magnification_auto_update_summary">Zoom out on rotation or activity
start and pan to popped up windows.</string>
<!-- Activity title for network data usage summary. [CHAR LIMIT=25] --> <!-- Activity title for network data usage summary. [CHAR LIMIT=25] -->
<string name="data_usage_summary_title">Data usage</string> <string name="data_usage_summary_title">Data usage</string>
<!-- Title for option to pick visible time range from a list available usage periods. [CHAR LIMIT=25] --> <!-- Title for option to pick visible time range from a list available usage periods. [CHAR LIMIT=25] -->

View File

@@ -27,14 +27,19 @@
android:key="system_category" android:key="system_category"
android:title="@string/accessibility_system_title"> android:title="@string/accessibility_system_title">
<PreferenceScreen
android:fragment="com.android.settings.AccessibilitySettings$ToggleScreenMagnificationPreferenceFragment"
android:key="screen_magnification_preference_screen"
android:title="@string/accessibility_screen_magnification_title"/>
<CheckBoxPreference <CheckBoxPreference
android:key="toggle_large_text_preference" android:key="toggle_large_text_preference"
android:title="@string/accessibility_toggle_large_text_title" android:title="@string/accessibility_toggle_large_text_preference_title"
android:persistent="false"/> android:persistent="false"/>
<CheckBoxPreference <CheckBoxPreference
android:key="toggle_power_button_ends_call_preference" android:key="toggle_power_button_ends_call_preference"
android:title="@string/accessibility_power_button_ends_call_title" android:title="@string/accessibility_power_button_ends_call_prerefence_title"
android:persistent="false"/> android:persistent="false"/>
<CheckBoxPreference <CheckBoxPreference
@@ -44,15 +49,15 @@
<CheckBoxPreference <CheckBoxPreference
android:key="toggle_speak_password_preference" android:key="toggle_speak_password_preference"
android:title="@string/accessibility_speak_password_title" android:title="@string/accessibility_toggle_speak_password_preference_title"
android:persistent="false"/> android:persistent="false"/>
<PreferenceScreen android:key="tts_settings" <PreferenceScreen android:key="tts_settings_preference"
android:fragment="com.android.settings.tts.TextToSpeechSettings" android:fragment="com.android.settings.tts.TextToSpeechSettings"
android:title="@string/tts_settings_title" /> android:title="@string/tts_settings_title"/>
<ListPreference android:key="select_long_press_timeout_preference" <ListPreference android:key="select_long_press_timeout_preference"
android:title="@string/accessibility_long_press_timeout_title" android:title="@string/accessibility_long_press_timeout_preference_title"
android:entries="@array/long_press_timeout_selector_titles" android:entries="@array/long_press_timeout_selector_titles"
android:entryValues="@array/long_press_timeout_selector_values" android:entryValues="@array/long_press_timeout_selector_values"
android:persistent="false"/> android:persistent="false"/>
@@ -60,7 +65,7 @@
<!-- We want a dialog with no title, so use an empty string to avoid a fall back to the preference title. --> <!-- We want a dialog with no title, so use an empty string to avoid a fall back to the preference title. -->
<com.android.settings.AccessibilityEnableScriptInjectionPreference <com.android.settings.AccessibilityEnableScriptInjectionPreference
android:key="toggle_script_injection_preference" android:key="toggle_script_injection_preference"
android:title="@string/accessibility_script_injection_title" android:title="@string/accessibility_toggle_script_injection_preference_title"
android:dialogTitle="" android:dialogTitle=""
android:dialogIcon="@android:drawable/ic_dialog_alert" android:dialogIcon="@android:drawable/ic_dialog_alert"
android:dialogMessage="@string/accessibility_script_injection_security_warning_summary" android:dialogMessage="@string/accessibility_script_injection_security_warning_summary"

View File

@@ -202,4 +202,14 @@
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:key="debug_accessibility_category"
android:title="@string/debug_accessibility_category">
<CheckBoxPreference
android:key="accessibility_display_magnification_auto_update"
android:title="@string/display_magnification_auto_update"
android:summary="@string/display_magnification_auto_update_summary"/>
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -30,7 +30,6 @@ import android.content.SharedPreferences;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo; import android.content.pm.ServiceInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@@ -75,38 +74,42 @@ import java.util.Set;
public class AccessibilitySettings extends SettingsPreferenceFragment implements DialogCreatable, public class AccessibilitySettings extends SettingsPreferenceFragment implements DialogCreatable,
Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener {
private static final String DEFAULT_SCREENREADER_MARKET_LINK = private static final String DEFAULT_SCREENREADER_MARKET_LINK =
"market://search?q=pname:com.google.android.marvin.talkback"; "market://search?q=pname:com.google.android.marvin.talkback";
private static final float LARGE_FONT_SCALE = 1.3f; private static final float LARGE_FONT_SCALE = 1.3f;
private static final String SYSTEM_PROPERTY_MARKET_URL = "ro.screenreader.market"; private static final String SYSTEM_PROPERTY_MARKET_URL = "ro.screenreader.market";
// Timeout before we update the services if packages are added/removed since // Timeout before we update the services if packages are added/removed since
// the AccessibilityManagerService has to do that processing first to generate // the AccessibilityManagerService has to do that processing first to
// generate
// the AccessibilityServiceInfo we need for proper presentation. // the AccessibilityServiceInfo we need for proper presentation.
private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000; private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000;
private static final char ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR = ':'; private static final char ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR = ':';
private static final String KEY_INSTALL_ACCESSIBILITY_SERVICE_OFFERED_ONCE = private static final String KEY_INSTALL_ACCESSIBILITY_SERVICE_OFFERED_ONCE =
"key_install_accessibility_service_offered_once"; "key_install_accessibility_service_offered_once";
// Preference categories // Preference categories
private static final String SERVICES_CATEGORY = "services_category"; private static final String SERVICES_CATEGORY = "services_category";
private static final String SYSTEM_CATEGORY = "system_category"; private static final String SYSTEM_CATEGORY = "system_category";
// Preferences // Preferences
private static final String TOGGLE_LARGE_TEXT_PREFERENCE = "toggle_large_text_preference"; private static final String TOGGLE_LARGE_TEXT_PREFERENCE =
"toggle_large_text_preference";
private static final String TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE = private static final String TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE =
"toggle_power_button_ends_call_preference"; "toggle_power_button_ends_call_preference";
private static final String TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE = private static final String TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE =
"toggle_lock_screen_rotation_preference"; "toggle_lock_screen_rotation_preference";
private static final String TOGGLE_SPEAK_PASSWORD_PREFERENCE = private static final String TOGGLE_SPEAK_PASSWORD_PREFERENCE =
"toggle_speak_password_preference"; "toggle_speak_password_preference";
private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE = private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE =
"select_long_press_timeout_preference"; "select_long_press_timeout_preference";
private static final String TOGGLE_SCRIPT_INJECTION_PREFERENCE = private static final String TOGGLE_SCRIPT_INJECTION_PREFERENCE =
"toggle_script_injection_preference"; "toggle_script_injection_preference";
private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
"screen_magnification_preference_screen";
// Extras passed to sub-fragments. // Extras passed to sub-fragments.
private static final String EXTRA_PREFERENCE_KEY = "preference_key"; private static final String EXTRA_PREFERENCE_KEY = "preference_key";
@@ -125,12 +128,12 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
// Auxiliary members. // Auxiliary members.
private final static SimpleStringSplitter sStringColonSplitter = private final static SimpleStringSplitter sStringColonSplitter =
new SimpleStringSplitter(ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR); new SimpleStringSplitter(ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR);
private static final Set<ComponentName> sInstalledServices = new HashSet<ComponentName>(); private static final Set<ComponentName> sInstalledServices = new HashSet<ComponentName>();
private final Map<String, String> mLongPressTimeoutValuetoTitleMap = private final Map<String, String> mLongPressTimeoutValuetoTitleMap =
new HashMap<String, String>(); new HashMap<String, String>();
private final Configuration mCurConfig = new Configuration(); private final Configuration mCurConfig = new Configuration();
@@ -147,11 +150,11 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private final RotationPolicy.RotationPolicyListener mRotationPolicyListener = private final RotationPolicy.RotationPolicyListener mRotationPolicyListener =
new RotationPolicy.RotationPolicyListener() { new RotationPolicy.RotationPolicyListener() {
@Override @Override
public void onChange() { public void onChange() {
updateLockScreenRotationCheckbox(); updateLockScreenRotationCheckbox();
} }
}; };
// Preference controls. // Preference controls.
private PreferenceCategory mServicesCategory; private PreferenceCategory mServicesCategory;
@@ -164,6 +167,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private ListPreference mSelectLongPressTimeoutPreference; private ListPreference mSelectLongPressTimeoutPreference;
private AccessibilityEnableScriptInjectionPreference mToggleScriptInjectionPreference; private AccessibilityEnableScriptInjectionPreference mToggleScriptInjectionPreference;
private Preference mNoServicesMessagePreference; private Preference mNoServicesMessagePreference;
private PreferenceScreen mDisplayMagnificationPreferenceScreen;
private int mLongPressTimeoutDefault; private int mLongPressTimeoutDefault;
@@ -207,6 +211,12 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
return false; return false;
} }
@Override @Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (mToggleLargeTextPreference == preference) { if (mToggleLargeTextPreference == preference) {
@@ -220,6 +230,10 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
return true; return true;
} else if (mToggleSpeakPasswordPreference == preference) { } else if (mToggleSpeakPasswordPreference == preference) {
handleToggleSpeakPasswordPreferenceClick(); handleToggleSpeakPasswordPreferenceClick();
return true;
} else if (mDisplayMagnificationPreferenceScreen == preference) {
handleDisplayMagnificationPreferenceScreenClick();
return true;
} }
return super.onPreferenceTreeClick(preferenceScreen, preference); return super.onPreferenceTreeClick(preferenceScreen, preference);
} }
@@ -252,17 +266,29 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
mToggleSpeakPasswordPreference.isChecked() ? 1 : 0); mToggleSpeakPasswordPreference.isChecked() ? 1 : 0);
} }
private void handleDisplayMagnificationPreferenceScreenClick() {
Bundle extras = mDisplayMagnificationPreferenceScreen.getExtras();
extras.putString(EXTRA_TITLE, getString(
R.string.accessibility_screen_magnification_title));
extras.putString(EXTRA_SUMMARY, getString(
R.string.accessibility_screen_magnification_summary));
extras.putBoolean(EXTRA_CHECKED, Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1);
super.onPreferenceTreeClick(mDisplayMagnificationPreferenceScreen,
mDisplayMagnificationPreferenceScreen);
}
private void initializeAllPreferences() { private void initializeAllPreferences() {
mServicesCategory = (PreferenceCategory) findPreference(SERVICES_CATEGORY); mServicesCategory = (PreferenceCategory) findPreference(SERVICES_CATEGORY);
mSystemsCategory = (PreferenceCategory) findPreference(SYSTEM_CATEGORY); mSystemsCategory = (PreferenceCategory) findPreference(SYSTEM_CATEGORY);
// Large text. // Large text.
mToggleLargeTextPreference = mToggleLargeTextPreference =
(CheckBoxPreference) findPreference(TOGGLE_LARGE_TEXT_PREFERENCE); (CheckBoxPreference) findPreference(TOGGLE_LARGE_TEXT_PREFERENCE);
// Power button ends calls. // Power button ends calls.
mTogglePowerButtonEndsCallPreference = mTogglePowerButtonEndsCallPreference =
(CheckBoxPreference) findPreference(TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE); (CheckBoxPreference) findPreference(TOGGLE_POWER_BUTTON_ENDS_CALL_PREFERENCE);
if (!KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER) if (!KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
|| !Utils.isVoiceCapable(getActivity())) { || !Utils.isVoiceCapable(getActivity())) {
mSystemsCategory.removePreference(mTogglePowerButtonEndsCallPreference); mSystemsCategory.removePreference(mTogglePowerButtonEndsCallPreference);
@@ -270,15 +296,15 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
// Lock screen rotation. // Lock screen rotation.
mToggleLockScreenRotationPreference = mToggleLockScreenRotationPreference =
(CheckBoxPreference) findPreference(TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE); (CheckBoxPreference) findPreference(TOGGLE_LOCK_SCREEN_ROTATION_PREFERENCE);
// Speak passwords. // Speak passwords.
mToggleSpeakPasswordPreference = mToggleSpeakPasswordPreference =
(CheckBoxPreference) findPreference(TOGGLE_SPEAK_PASSWORD_PREFERENCE); (CheckBoxPreference) findPreference(TOGGLE_SPEAK_PASSWORD_PREFERENCE);
// Long press timeout. // Long press timeout.
mSelectLongPressTimeoutPreference = mSelectLongPressTimeoutPreference =
(ListPreference) findPreference(SELECT_LONG_PRESS_TIMEOUT_PREFERENCE); (ListPreference) findPreference(SELECT_LONG_PRESS_TIMEOUT_PREFERENCE);
mSelectLongPressTimeoutPreference.setOnPreferenceChangeListener(this); mSelectLongPressTimeoutPreference.setOnPreferenceChangeListener(this);
if (mLongPressTimeoutValuetoTitleMap.size() == 0) { if (mLongPressTimeoutValuetoTitleMap.size() == 0) {
String[] timeoutValues = getResources().getStringArray( String[] timeoutValues = getResources().getStringArray(
@@ -288,13 +314,17 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
R.array.long_press_timeout_selector_titles); R.array.long_press_timeout_selector_titles);
final int timeoutValueCount = timeoutValues.length; final int timeoutValueCount = timeoutValues.length;
for (int i = 0; i < timeoutValueCount; i++) { for (int i = 0; i < timeoutValueCount; i++) {
mLongPressTimeoutValuetoTitleMap.put(timeoutValues[i], timeoutTitles[i]); mLongPressTimeoutValuetoTitleMap.put(timeoutValues[i], timeoutTitles[i]);
} }
} }
// Script injection. // Script injection.
mToggleScriptInjectionPreference = (AccessibilityEnableScriptInjectionPreference) mToggleScriptInjectionPreference = (AccessibilityEnableScriptInjectionPreference)
findPreference(TOGGLE_SCRIPT_INJECTION_PREFERENCE); findPreference(TOGGLE_SCRIPT_INJECTION_PREFERENCE);
// Display magnification.
mDisplayMagnificationPreferenceScreen = (PreferenceScreen) findPreference(
DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);
} }
private void updateAllPreferences() { private void updateAllPreferences() {
@@ -313,7 +343,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getActivity()); AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getActivity());
List<AccessibilityServiceInfo> installedServices = List<AccessibilityServiceInfo> installedServices =
accessibilityManager.getInstalledAccessibilityServiceList(); accessibilityManager.getInstalledAccessibilityServiceList();
Set<ComponentName> enabledServices = getEnabledServicesFromSettings(getActivity()); Set<ComponentName> enabledServices = getEnabledServicesFromSettings(getActivity());
final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(),
@@ -334,11 +364,11 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
preference.setTitle(title); preference.setTitle(title);
final boolean serviceEnabled = accessibilityEnabled final boolean serviceEnabled = accessibilityEnabled
&& enabledServices.contains(componentName); && enabledServices.contains(componentName);
if (serviceEnabled) { if (serviceEnabled) {
preference.setSummary(getString(R.string.accessibility_service_state_on)); preference.setSummary(getString(R.string.accessibility_feature_state_on));
} else { } else {
preference.setSummary(getString(R.string.accessibility_service_state_off)); preference.setSummary(getString(R.string.accessibility_feature_state_off));
} }
preference.setOrder(i); preference.setOrder(i);
@@ -390,7 +420,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
super.onBindView(view); super.onBindView(view);
LinearLayout containerView = LinearLayout containerView =
(LinearLayout) view.findViewById(R.id.message_container); (LinearLayout) view.findViewById(R.id.message_container);
containerView.setGravity(Gravity.CENTER); containerView.setGravity(Gravity.CENTER);
TextView summaryView = (TextView) view.findViewById(R.id.summary); TextView summaryView = (TextView) view.findViewById(R.id.summary);
@@ -423,7 +453,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR, Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT); Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT);
final boolean powerButtonEndsCall = final boolean powerButtonEndsCall =
(incallPowerBehavior == Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP); (incallPowerBehavior == Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP);
mTogglePowerButtonEndsCallPreference.setChecked(powerButtonEndsCall); mTogglePowerButtonEndsCallPreference.setChecked(powerButtonEndsCall);
} }
@@ -443,9 +473,20 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
mSelectLongPressTimeoutPreference.setSummary(mLongPressTimeoutValuetoTitleMap.get(value)); mSelectLongPressTimeoutPreference.setSummary(mLongPressTimeoutValuetoTitleMap.get(value));
// Script injection. // Script injection.
final boolean scriptInjectionAllowed = (Settings.Secure.getInt(getContentResolver(), final boolean scriptInjectionAllowed = (Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0) == 1); Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0) == 1);
mToggleScriptInjectionPreference.setInjectionAllowed(scriptInjectionAllowed); mToggleScriptInjectionPreference.setInjectionAllowed(scriptInjectionAllowed);
// Screen magnification.
final boolean magnificationEnabled = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1;
if (magnificationEnabled) {
mDisplayMagnificationPreferenceScreen.setSummary(
R.string.accessibility_feature_state_on);
} else {
mDisplayMagnificationPreferenceScreen.setSummary(
R.string.accessibility_feature_state_off);
}
} }
private void updateLockScreenRotationCheckbox() { private void updateLockScreenRotationCheckbox() {
@@ -489,25 +530,28 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
switch (dialogId) { switch (dialogId) {
case DIALOG_ID_NO_ACCESSIBILITY_SERVICES: case DIALOG_ID_NO_ACCESSIBILITY_SERVICES:
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(getActivity())
.setTitle(R.string.accessibility_service_no_apps_title) .setTitle(R.string.accessibility_service_no_apps_title)
.setMessage(R.string.accessibility_service_no_apps_message) .setMessage(R.string.accessibility_service_no_apps_message)
.setPositiveButton(android.R.string.ok, .setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
// dismiss the dialog before launching the activity otherwise // dismiss the dialog before launching
// the dialog removal occurs after onSaveInstanceState which // the activity otherwise
// triggers an exception // the dialog removal occurs after
removeDialog(DIALOG_ID_NO_ACCESSIBILITY_SERVICES); // onSaveInstanceState which
String screenreaderMarketLink = SystemProperties.get( // triggers an exception
SYSTEM_PROPERTY_MARKET_URL, removeDialog(DIALOG_ID_NO_ACCESSIBILITY_SERVICES);
DEFAULT_SCREENREADER_MARKET_LINK); String screenreaderMarketLink = SystemProperties.get(
Uri marketUri = Uri.parse(screenreaderMarketLink); SYSTEM_PROPERTY_MARKET_URL,
Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri); DEFAULT_SCREENREADER_MARKET_LINK);
startActivity(marketIntent); Uri marketUri = Uri.parse(screenreaderMarketLink);
} Intent marketIntent = new Intent(Intent.ACTION_VIEW,
}) marketUri);
.setNegativeButton(android.R.string.cancel, null) startActivity(marketIntent);
.create(); }
})
.setNegativeButton(android.R.string.cancel, null)
.create();
default: default:
return null; return null;
} }
@@ -515,8 +559,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
private void loadInstalledServices() { private void loadInstalledServices() {
List<AccessibilityServiceInfo> installedServiceInfos = List<AccessibilityServiceInfo> installedServiceInfos =
AccessibilityManager.getInstance(getActivity()) AccessibilityManager.getInstance(getActivity())
.getInstalledAccessibilityServiceList(); .getInstalledAccessibilityServiceList();
Set<ComponentName> installedServices = sInstalledServices; Set<ComponentName> installedServices = sInstalledServices;
installedServices.clear(); installedServices.clear();
final int installedServiceInfoCount = installedServiceInfos.size(); final int installedServiceInfoCount = installedServiceInfos.size();
@@ -576,20 +620,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} }
} }
private static ToggleSwitch createAndAddActionBarToggleSwitch(Activity activity) {
ToggleSwitch toggleSwitch = new ToggleSwitch(activity);
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
toggleSwitch.setPadding(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(toggleSwitch,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END));
return toggleSwitch;
}
public static class ToggleSwitch extends Switch { public static class ToggleSwitch extends Switch {
private OnBeforeCheckedChangeListener mOnBeforeListener; private OnBeforeCheckedChangeListener mOnBeforeListener;
@@ -621,87 +651,21 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} }
public static class ToggleAccessibilityServicePreferenceFragment public static class ToggleAccessibilityServicePreferenceFragment
extends SettingsPreferenceFragment implements DialogInterface.OnClickListener { extends ToggleFeaturePreferenceFragment implements DialogInterface.OnClickListener {
private static final int DIALOG_ID_ENABLE_WARNING = 1; private static final int DIALOG_ID_ENABLE_WARNING = 1;
private static final int DIALOG_ID_DISABLE_WARNING = 2; private static final int DIALOG_ID_DISABLE_WARNING = 2;
private String mPreferenceKey;
private ToggleSwitch mToggleSwitch;
private CharSequence mEnableWarningTitle; private CharSequence mEnableWarningTitle;
private CharSequence mEnableWarningMessage; private CharSequence mEnableWarningMessage;
private CharSequence mDisableWarningTitle; private CharSequence mDisableWarningTitle;
private CharSequence mDisableWarningMessage; private CharSequence mDisableWarningMessage;
private Preference mSummaryPreference;
private CharSequence mSettingsTitle;
private Intent mSettingsIntent;
private int mShownDialogId; private int mShownDialogId;
// TODO: Showing sub-sub fragment does not handle the activity title
// so we do it but this is wrong. Do a real fix when there is time.
private CharSequence mOldActivityTitle;
@Override @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
getActivity());
setPreferenceScreen(preferenceScreen);
mSummaryPreference = new Preference(getActivity()) {
@Override
protected void onBindView(View view) {
super.onBindView(view);
TextView summaryView = (TextView) view.findViewById(R.id.summary);
summaryView.setText(getSummary());
sendAccessibilityEvent(summaryView);
}
private void sendAccessibilityEvent(View view) {
// Since the view is still not attached we create, populate,
// and send the event directly since we do not know when it
// will be attached and posting commands is not as clean.
AccessibilityManager accessibilityManager =
AccessibilityManager.getInstance(getActivity());
if (accessibilityManager.isEnabled()) {
AccessibilityEvent event = AccessibilityEvent.obtain();
event.setEventType(AccessibilityEvent.TYPE_VIEW_FOCUSED);
view.onInitializeAccessibilityEvent(event);
view.dispatchPopulateAccessibilityEvent(event);
accessibilityManager.sendAccessibilityEvent(event);
}
}
};
mSummaryPreference.setPersistent(false);
mSummaryPreference.setLayoutResource(R.layout.text_description_preference);
preferenceScreen.addPreference(mSummaryPreference);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
installActionBarToggleSwitch();
processArguments();
getListView().setDivider(null);
getListView().setEnabled(false);
}
@Override
public void onDestroyView() {
getActivity().getActionBar().setCustomView(null);
if (mOldActivityTitle != null) {
getActivity().getActionBar().setTitle(mOldActivityTitle);
}
mToggleSwitch.setOnBeforeCheckedChangeListener(null);
super.onDestroyView();
}
public void onPreferenceToggled(String preferenceKey, boolean enabled) { public void onPreferenceToggled(String preferenceKey, boolean enabled) {
// Parse the enabled services. // Parse the enabled services.
Set<ComponentName> enabledServices = getEnabledServicesFromSettings(getActivity()); Set<ComponentName> enabledServices = getEnabledServicesFromSettings(getActivity());
// Determine enabled services and accessibility state. // Determine enabled services and accessibility state.
@@ -722,16 +686,17 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} }
// Disabling the last service disables accessibility. // Disabling the last service disables accessibility.
accessibilityEnabled = enabledAndInstalledServiceCount > 1 accessibilityEnabled = enabledAndInstalledServiceCount > 1
|| (enabledAndInstalledServiceCount == 1 || (enabledAndInstalledServiceCount == 1
&& !installedServices.contains(toggledService)); && !installedServices.contains(toggledService));
enabledServices.remove(toggledService); enabledServices.remove(toggledService);
} }
// Update the enabled services setting. // Update the enabled services setting.
StringBuilder enabledServicesBuilder = new StringBuilder(); StringBuilder enabledServicesBuilder = new StringBuilder();
// Keep the enabled services even if they are not installed since we have // Keep the enabled services even if they are not installed since we
// no way to know whether the application restore process has completed. // have no way to know whether the application restore process has
// In general the system should be responsible for the clean up not settings. // completed. In general the system should be responsible for the
// clean up not settings.
for (ComponentName enabledService : enabledServices) { for (ComponentName enabledService : enabledServices) {
enabledServicesBuilder.append(enabledService.flattenToString()); enabledServicesBuilder.append(enabledService.flattenToString());
enabledServicesBuilder.append(ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR); enabledServicesBuilder.append(ENABLED_ACCESSIBILITY_SERVICES_SEPARATOR);
@@ -749,14 +714,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
Settings.Secure.ACCESSIBILITY_ENABLED, accessibilityEnabled ? 1 : 0); Settings.Secure.ACCESSIBILITY_ENABLED, accessibilityEnabled ? 1 : 0);
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
MenuItem menuItem = menu.add(mSettingsTitle);
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menuItem.setIntent(mSettingsIntent);
}
@Override @Override
public Dialog onCreateDialog(int dialogId) { public Dialog onCreateDialog(int dialogId) {
CharSequence title = null; CharSequence title = null;
@@ -776,13 +733,13 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(getActivity())
.setTitle(title) .setTitle(title)
.setIconAttribute(android.R.attr.alertDialogIcon) .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(message) .setMessage(message)
.setCancelable(true) .setCancelable(true)
.setPositiveButton(android.R.string.ok, this) .setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, this) .setNegativeButton(android.R.string.cancel, this)
.create(); .create();
} }
@Override @Override
@@ -806,8 +763,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} }
} }
private void installActionBarToggleSwitch() { @Override
mToggleSwitch = createAndAddActionBarToggleSwitch(getActivity()); protected void onInstallActionBarToggleSwitch() {
super.onInstallActionBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
@@ -833,28 +791,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
}); });
} }
private void processArguments() { @Override
Bundle arguments = getArguments(); protected void onProcessArguments(Bundle arguments) {
super.onProcessArguments(arguments);
// Key.
mPreferenceKey = arguments.getString(EXTRA_PREFERENCE_KEY);
// Enabled.
final boolean enabled = arguments.getBoolean(EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled);
// Title.
PreferenceActivity activity = (PreferenceActivity) getActivity();
if (!activity.onIsMultiPane() || activity.onIsHidingHeaders()) {
mOldActivityTitle = getActivity().getTitle();
String title = arguments.getString(EXTRA_TITLE);
getActivity().getActionBar().setTitle(title);
}
// Summary.
String summary = arguments.getString(EXTRA_SUMMARY);
mSummaryPreference.setSummary(summary);
// Settings title and intent. // Settings title and intent.
String settingsTitle = arguments.getString(EXTRA_SETTINGS_TITLE); String settingsTitle = arguments.getString(EXTRA_SETTINGS_TITLE);
String settingsComponentName = arguments.getString(EXTRA_SETTINGS_COMPONENT_NAME); String settingsComponentName = arguments.getString(EXTRA_SETTINGS_COMPONENT_NAME);
@@ -867,22 +806,157 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
} }
// Enable warning title. // Enable warning title.
mEnableWarningTitle = arguments.getCharSequence( mEnableWarningTitle = arguments.getCharSequence(
AccessibilitySettings.EXTRA_ENABLE_WARNING_TITLE); AccessibilitySettings.EXTRA_ENABLE_WARNING_TITLE);
// Enable warning message. // Enable warning message.
mEnableWarningMessage = arguments.getCharSequence( mEnableWarningMessage = arguments.getCharSequence(
AccessibilitySettings.EXTRA_ENABLE_WARNING_MESSAGE); AccessibilitySettings.EXTRA_ENABLE_WARNING_MESSAGE);
// Disable warning title. // Disable warning title.
mDisableWarningTitle = arguments.getString( mDisableWarningTitle = arguments.getString(
AccessibilitySettings.EXTRA_DISABLE_WARNING_TITLE); AccessibilitySettings.EXTRA_DISABLE_WARNING_TITLE);
// Disable warning message. // Disable warning message.
mDisableWarningMessage = arguments.getString( mDisableWarningMessage = arguments.getString(
AccessibilitySettings.EXTRA_DISABLE_WARNING_MESSAGE); AccessibilitySettings.EXTRA_DISABLE_WARNING_MESSAGE);
} }
} }
public static class ToggleScreenMagnificationPreferenceFragment
extends ToggleFeaturePreferenceFragment {
@Override
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, enabled? 1 : 0);
}
@Override
protected void onInstallActionBarToggleSwitch() {
super.onInstallActionBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked);
getArguments().putBoolean(EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked);
return false;
}
});
}
}
public static abstract class ToggleFeaturePreferenceFragment
extends SettingsPreferenceFragment {
protected ToggleSwitch mToggleSwitch;
protected String mPreferenceKey;
protected Preference mSummaryPreference;
protected CharSequence mSettingsTitle;
protected Intent mSettingsIntent;
// TODO: Showing sub-sub fragment does not handle the activity title
// so we do it but this is wrong. Do a real fix when there is time.
private CharSequence mOldActivityTitle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
getActivity());
setPreferenceScreen(preferenceScreen);
mSummaryPreference = new Preference(getActivity()) {
@Override
protected void onBindView(View view) {
super.onBindView(view);
TextView summaryView = (TextView) view.findViewById(R.id.summary);
summaryView.setText(getSummary());
sendAccessibilityEvent(summaryView);
}
private void sendAccessibilityEvent(View view) {
// Since the view is still not attached we create, populate,
// and send the event directly since we do not know when it
// will be attached and posting commands is not as clean.
AccessibilityManager accessibilityManager =
AccessibilityManager.getInstance(getActivity());
if (accessibilityManager.isEnabled()) {
AccessibilityEvent event = AccessibilityEvent.obtain();
event.setEventType(AccessibilityEvent.TYPE_VIEW_FOCUSED);
view.onInitializeAccessibilityEvent(event);
view.dispatchPopulateAccessibilityEvent(event);
accessibilityManager.sendAccessibilityEvent(event);
}
}
};
mSummaryPreference.setPersistent(false);
mSummaryPreference.setLayoutResource(R.layout.text_description_preference);
preferenceScreen.addPreference(mSummaryPreference);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
onInstallActionBarToggleSwitch();
onProcessArguments(getArguments());
getListView().setDivider(null);
getListView().setEnabled(false);
}
@Override
public void onDestroyView() {
getActivity().getActionBar().setCustomView(null);
if (mOldActivityTitle != null) {
getActivity().getActionBar().setTitle(mOldActivityTitle);
}
mToggleSwitch.setOnBeforeCheckedChangeListener(null);
super.onDestroyView();
}
protected abstract void onPreferenceToggled(String preferenceKey, boolean enabled);
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
MenuItem menuItem = menu.add(mSettingsTitle);
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menuItem.setIntent(mSettingsIntent);
}
protected void onInstallActionBarToggleSwitch() {
mToggleSwitch = createAndAddActionBarToggleSwitch(getActivity());
}
private ToggleSwitch createAndAddActionBarToggleSwitch(Activity activity) {
ToggleSwitch toggleSwitch = new ToggleSwitch(activity);
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
toggleSwitch.setPadding(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(toggleSwitch,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END));
return toggleSwitch;
}
protected void onProcessArguments(Bundle arguments) {
// Key.
mPreferenceKey = arguments.getString(EXTRA_PREFERENCE_KEY);
// Enabled.
final boolean enabled = arguments.getBoolean(EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled);
// Title.
PreferenceActivity activity = (PreferenceActivity) getActivity();
if (!activity.onIsMultiPane() || activity.onIsHidingHeaders()) {
mOldActivityTitle = getActivity().getTitle();
String title = arguments.getString(EXTRA_TITLE);
getActivity().getActionBar().setTitle(title);
}
// Summary.
String summary = arguments.getString(EXTRA_SUMMARY);
mSummaryPreference.setSummary(summary);
}
}
} }

View File

@@ -98,6 +98,8 @@ public class DevelopmentSettings extends PreferenceFragment
private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale"; private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale";
private static final String ANIMATOR_DURATION_SCALE_KEY = "animator_duration_scale"; private static final String ANIMATOR_DURATION_SCALE_KEY = "animator_duration_scale";
private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices"; private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices";
private static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE_KEY =
"accessibility_display_magnification_auto_update";
private static final String ENABLE_TRACES_KEY = "enable_traces"; private static final String ENABLE_TRACES_KEY = "enable_traces";
@@ -142,6 +144,7 @@ public class DevelopmentSettings extends PreferenceFragment
private CheckBoxPreference mShowHwScreenUpdates; private CheckBoxPreference mShowHwScreenUpdates;
private CheckBoxPreference mShowHwLayersUpdates; private CheckBoxPreference mShowHwLayersUpdates;
private CheckBoxPreference mDebugLayout; private CheckBoxPreference mDebugLayout;
private CheckBoxPreference mDisplayMangificationAutoUpdate;
private ListPreference mWindowAnimationScale; private ListPreference mWindowAnimationScale;
private ListPreference mTransitionAnimationScale; private ListPreference mTransitionAnimationScale;
private ListPreference mAnimatorDurationScale; private ListPreference mAnimatorDurationScale;
@@ -237,6 +240,9 @@ public class DevelopmentSettings extends PreferenceFragment
mAllPrefs.add(hdcpChecking); mAllPrefs.add(hdcpChecking);
} }
removeHdcpOptionsForProduction(); removeHdcpOptionsForProduction();
mDisplayMangificationAutoUpdate = findAndInitCheckboxPref(
ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE_KEY);
} }
private CheckBoxPreference findAndInitCheckboxPref(String key) { private CheckBoxPreference findAndInitCheckboxPref(String key) {
@@ -370,6 +376,7 @@ public class DevelopmentSettings extends PreferenceFragment
updateImmediatelyDestroyActivitiesOptions(); updateImmediatelyDestroyActivitiesOptions();
updateAppProcessLimitOptions(); updateAppProcessLimitOptions();
updateShowAllANRsOptions(); updateShowAllANRsOptions();
updateDisplayMagnificationAutoUpdate();
} }
private void resetDangerousOptions() { private void resetDangerousOptions() {
@@ -623,6 +630,12 @@ public class DevelopmentSettings extends PreferenceFragment
pokeSystemProperties(); pokeSystemProperties();
} }
private void writeDisplayMagnificationAutoUpdate() {
Settings.Secure.putInt(getActivity().getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE,
mDisplayMangificationAutoUpdate.isChecked() ? 1 : 0);
}
private void updateCpuUsageOptions() { private void updateCpuUsageOptions() {
updateCheckBox(mShowCpuUsage, Settings.System.getInt(getActivity().getContentResolver(), updateCheckBox(mShowCpuUsage, Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.SHOW_PROCESSES, 0) != 0); Settings.System.SHOW_PROCESSES, 0) != 0);
@@ -756,6 +769,12 @@ public class DevelopmentSettings extends PreferenceFragment
getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0); getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
} }
private void updateDisplayMagnificationAutoUpdate() {
updateCheckBox(mDisplayMangificationAutoUpdate,
Settings.Secure.getInt(getActivity().getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE, 0) != 0);
}
private void updateEnableTracesOptions() { private void updateEnableTracesOptions() {
long flags = SystemProperties.getLong(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS, 0); long flags = SystemProperties.getLong(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS, 0);
String[] values = mEnableTracesPref.getEntryValues(); String[] values = mEnableTracesPref.getEntryValues();
@@ -909,6 +928,8 @@ public class DevelopmentSettings extends PreferenceFragment
writeShowHwLayersUpdatesOptions(); writeShowHwLayersUpdatesOptions();
} else if (preference == mDebugLayout) { } else if (preference == mDebugLayout) {
writeDebugLayoutOptions(); writeDebugLayoutOptions();
} else if (preference == mDisplayMangificationAutoUpdate) {
writeDisplayMagnificationAutoUpdate();
} }
return false; return false;