diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5839934d518..24161c236f4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2611,12 +2611,14 @@ found in the list of installed applications.
Accessibility
Accessibility settings
-
+
Manage accessibility options
-
- Accessibility
-
+
+ Large text
+
Accessibility services
+
+ Allow accessibility services
No installed accessibility services.
- Accessibility scripts
Download accessibility scripts
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index 771b69efb55..90aef847ff6 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -19,20 +19,23 @@
android:title="@string/accessibility_settings_title">
-
-
+ android:title="@string/accessibility_services_category">
+
+ android:persistent="false"
+ android:order="10000" />
mAccessibilityServices =
new LinkedHashMap();
@@ -100,6 +111,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
addPreferencesFromResource(R.xml.accessibility_settings);
+ mToggleLargeTextCheckBox = (CheckBoxPreference) findPreference(
+ TOGGLE_LARGE_TEXT_CHECKBOX);
+
mAccessibilityServicesCategory =
(PreferenceGroup) findPreference(ACCESSIBILITY_SERVICES_CATEGORY);
@@ -145,7 +159,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
@Override
public void onActivityCreated(Bundle savedInstanceState) {
- addAccessibilitServicePreferences();
+ addAccessibilityServicePreferences();
final HashSet enabled = new HashSet();
String settingValue = Settings.Secure.getString(getContentResolver(),
@@ -192,6 +206,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
showDialog(DIALOG_ID_NO_ACCESSIBILITY_SERVICES);
}
+ readFontSizePreference();
+
super.onActivityCreated(savedInstanceState);
}
@@ -251,10 +267,10 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
int count = mAccessibilityServicesCategory.getPreferenceCount();
for (int i = 0; i < count; i++) {
Preference pref = mAccessibilityServicesCategory.getPreference(i);
- pref.setEnabled(isEnabled);
+ if (pref != mToggleAccessibilityCheckBox) {
+ pref.setEnabled(isEnabled);
+ }
}
-
- mToggleScriptInjectionCheckBox.setEnabled(isEnabled);
}
@Override
@@ -263,6 +279,13 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
if (TOGGLE_ACCESSIBILITY_CHECKBOX.equals(key)) {
handleEnableAccessibilityStateChange((CheckBoxPreference) preference);
+ } else if (TOGGLE_LARGE_TEXT_CHECKBOX.equals(key)) {
+ try {
+ mCurConfig.fontScale = mToggleLargeTextCheckBox.isChecked()
+ ? LARGE_FONT_SCALE : 1;
+ ActivityManagerNative.getDefault().updateConfiguration(mCurConfig);
+ } catch (RemoteException e) {
+ }
} else if (POWER_BUTTON_ENDS_CALL_CHECKBOX.equals(key)) {
boolean isChecked = ((CheckBoxPreference) preference).isChecked();
// The checkbox is labeled "Power button ends call"; thus the in-call
@@ -355,20 +378,22 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
/**
* Adds {@link CheckBoxPreference} for enabling or disabling an accessibility services.
*/
- private void addAccessibilitServicePreferences() {
+ private void addAccessibilityServicePreferences() {
AccessibilityManager accessibilityManager =
(AccessibilityManager) getSystemService(Service.ACCESSIBILITY_SERVICE);
List installedServices =
accessibilityManager.getInstalledAccessibilityServiceList();
- if (installedServices.isEmpty()) {
- getPreferenceScreen().removePreference(mAccessibilityServicesCategory);
- return;
+ for (int i = 0; i < mAccessibilityServicesCategory.getPreferenceCount(); i++) {
+ Preference pref = mAccessibilityServicesCategory.getPreference(i);
+ if (pref != mToggleAccessibilityCheckBox
+ && pref != mToggleScriptInjectionCheckBox) {
+ mAccessibilityServicesCategory.removePreference(pref);
+ i--;
+ }
}
- getPreferenceScreen().addPreference(mAccessibilityServicesCategory);
-
for (int i = 0, count = installedServices.size(); i < count; ++i) {
AccessibilityServiceInfo accessibilityServiceInfo = installedServices.get(i);
String key = accessibilityServiceInfo.getId();
@@ -385,6 +410,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
SettingsCheckBoxPreference preference = new SettingsCheckBoxPreference(
getActivity(), settingsIntent);
preference.setKey(key);
+ preference.setOrder(i);
ServiceInfo serviceInfo = accessibilityServiceInfo.getResolveInfo().serviceInfo;
preference.setTitle(serviceInfo.loadLabel(getActivity().getPackageManager()));
mAccessibilityServicesCategory.addPreference(preference);
@@ -392,6 +418,16 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
}
}
+ public void readFontSizePreference() {
+ try {
+ mCurConfig.updateFrom(
+ ActivityManagerNative.getDefault().getConfiguration());
+ } catch (RemoteException e) {
+ }
+ mToggleLargeTextCheckBox.setChecked(Float.compare(mCurConfig.fontScale,
+ LARGE_FONT_SCALE) == 0);
+ }
+
@Override
public Dialog onCreateDialog(int dialogId) {
switch (dialogId) {