diff --git a/res/values/config.xml b/res/values/config.xml index 1dbe079c57b..a85636c44e0 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -104,6 +104,54 @@ --> + + + + + + + + + + + + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 00feb17f1b9..9bbf45955cd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4803,7 +4803,7 @@ Tap items on your screen to hear them read aloud - Captions + Caption preferences Magnification diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 478db9f298f..148e901f63c 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -660,6 +660,16 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements mServicePreferenceToPreferenceCategoryMap.put(preference, prefCategory); } + // Update the order of all the category according to the order defined in xml file. + updateCategoryOrderFromArray(CATEGORY_SCREEN_READER, + R.array.config_order_screen_reader_services); + updateCategoryOrderFromArray(CATEGORY_AUDIO_AND_CAPTIONS, + R.array.config_order_audio_and_caption_services); + updateCategoryOrderFromArray(CATEGORY_INTERACTION_CONTROL, + R.array.config_order_interaction_control_services); + updateCategoryOrderFromArray(CATEGORY_DISPLAY, + R.array.config_order_display_services); + // If the user has not installed any additional services, hide the category. if (downloadedServicesCategory.getPreferenceCount() == 0) { final PreferenceScreen screen = getPreferenceScreen(); @@ -676,6 +686,29 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements } } + /** + * Update the order of perferences in the category by matching their preference + * key with the string array of preference order which is defined in the xml. + * + * @param categoryKey The key of the category need to update the order + * @param key The key of the string array which defines the order of category + */ + private void updateCategoryOrderFromArray(String categoryKey, int key) { + String[] services = getResources().getStringArray(key); + PreferenceCategory category = mCategoryToPrefCategoryMap.get(categoryKey); + int preferenceCount = category.getPreferenceCount(); + int serviceLength = services.length; + for (int preferenceIndex = 0; preferenceIndex < preferenceCount; preferenceIndex++) { + for (int serviceIndex = 0; serviceIndex < serviceLength; serviceIndex++) { + if (category.getPreference(preferenceIndex).getKey() + .equals(services[serviceIndex])) { + category.getPreference(preferenceIndex).setOrder(serviceIndex); + break; + } + } + } + } + protected void updateSystemPreferences() { // Move color inversion and color correction preferences to Display category if device // supports HWC hardware-accelerated color transform.