19c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt/* 29c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Copyright (C) 2017 The Android Open Source Project 39c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * 49c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Licensed under the Apache License, Version 2.0 (the "License"); 59c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * you may not use this file except in compliance with the License. 69c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * You may obtain a copy of the License at 79c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * 89c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * http://www.apache.org/licenses/LICENSE-2.0 99c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * 109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Unless required by applicable law or agreed to in writing, software 119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * distributed under the License is distributed on an "AS IS" BASIS, 129c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * See the License for the specific language governing permissions and 149c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * limitations under the License. 159c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt */ 169c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 179c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtpackage com.android.settings.accessibility; 189c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 19bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.accessibilityservice.AccessibilityServiceInfo; 20bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.content.ComponentName; 219c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.content.Context; 22875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardtimport android.content.res.Resources; 239c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.os.Bundle; 249c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.provider.SearchIndexableResource; 259c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.provider.Settings; 269c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.support.v7.preference.Preference; 27bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.text.TextUtils; 289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.view.View; 29bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.view.accessibility.AccessibilityManager; 309c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 319c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.internal.logging.nano.MetricsProto.MetricsEvent; 329c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.R; 339c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.SettingsPreferenceFragment; 347ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritzeimport com.android.settings.core.PreferenceController; 359c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.search.BaseSearchIndexProvider; 369c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.search.Indexable; 379c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 387ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritzeimport java.util.ArrayList; 399c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport java.util.Arrays; 40875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardtimport java.util.Collections; 419c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport java.util.List; 429c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 439c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtpublic final class MagnificationPreferenceFragment extends SettingsPreferenceFragment implements 449c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Indexable { 459c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 469c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt // Settings App preference keys 477ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze private static final String PREFERENCE_TITLE_KEY = "magnification_preference_screen_title"; 489c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private static final String MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY = 499c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt "screen_magnification_gestures_preference_screen"; 509c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY = 519c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt "screen_magnification_navbar_preference_screen"; 529c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 53bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt // Pseudo ComponentName used to represent navbar magnification in Settings.Secure. 54bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt private static final String MAGNIFICATION_COMPONENT_ID = 55bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt "com.android.server.accessibility.MagnificationController"; 56bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt 579c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private Preference mMagnificationGesturesPreference; 589c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private Preference mMagnificationNavbarPreference; 599c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 609c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private boolean mLaunchedFromSuw = false; 619c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 629c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 639c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public void onCreatePreferences(Bundle bundle, String s) { 649c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt addPreferencesFromResource(R.xml.accessibility_magnification_settings); 659c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt mMagnificationGesturesPreference = findPreference( 669c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY); 679c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt mMagnificationNavbarPreference = findPreference(MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY); 689c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 699c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 709c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 719c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public void onViewCreated(View view, Bundle savedInstanceState) { 729c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt super.onViewCreated(view, savedInstanceState); 739c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 749c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt final Bundle args = getArguments(); 759c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt if ((args != null) && args.containsKey(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW)) { 769c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt mLaunchedFromSuw = args.getBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW); 779c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 789c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 799c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 809c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 819c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public void onResume() { 829c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt super.onResume(); 839c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt getActivity().setTitle(R.string.accessibility_screen_magnification_title); 849c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 859c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt mMagnificationGesturesPreference); 869c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 879c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt mMagnificationNavbarPreference); 889c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 899c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 909c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 919c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public int getMetricsCategory() { 929c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt return MetricsEvent.ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS; 939c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 949c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 959c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 969c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public boolean onPreferenceTreeClick(Preference preference) { 979c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt if (mLaunchedFromSuw) { 989c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt // If invoked from SUW, redirect to fragment instrumented for Vision Settings metrics 999c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt preference.setFragment( 1009c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt ToggleScreenMagnificationPreferenceFragmentForSetupWizard.class.getName()); 1019c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1029c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt if (mMagnificationGesturesPreference == preference) { 1039c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt handleMagnificationGesturesPreferenceScreenClick(); 1049c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt super.onPreferenceTreeClick(mMagnificationGesturesPreference); 1059c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt return true; 1069c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } else if (mMagnificationNavbarPreference == preference) { 1079c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt handleMagnificationNavbarPreferenceScreenClick(); 1089c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt super.onPreferenceTreeClick(mMagnificationNavbarPreference); 1099c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt return true; 1109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt return super.onPreferenceTreeClick(preference); 1129c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1139c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 1149c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private void updateFeatureSummary(String prefKey, Preference pref) { 1159c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt if (!mLaunchedFromSuw) { 1169c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt final boolean enabled = Settings.Secure.getInt(getContentResolver(), prefKey, 0) == 1; 1179c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt pref.setSummary(enabled ? R.string.accessibility_feature_state_on 1189c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt : R.string.accessibility_feature_state_off); 1199c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } else { 1209c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED.equals(prefKey)) { 1219c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt pref.setSummary(R.string.accessibility_screen_magnification_short_summary); 1229c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } else if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals( 1239c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt prefKey)) { 1249c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt pref.setSummary(R.string.accessibility_screen_magnification_navbar_short_summary); 1259c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1269c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1279c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 1299c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private void handleMagnificationGesturesPreferenceScreenClick() { 1309c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Bundle extras = mMagnificationGesturesPreference.getExtras(); 131875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt populateMagnificationGesturesPreferenceExtras(extras, getContext()); 1329c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw); 1339c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1349c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 1359c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt private void handleMagnificationNavbarPreferenceScreenClick() { 1369c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Bundle extras = mMagnificationNavbarPreference.getExtras(); 1379c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, 1389c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); 1399c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putString(AccessibilitySettings.EXTRA_TITLE, getString( 1409c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt R.string.accessibility_screen_magnification_navbar_title)); 1419c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, 1429c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt getActivity().getResources().getText( 1439c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt R.string.accessibility_screen_magnification_navbar_summary)); 1449c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, 1459c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Settings.Secure.getInt(getContentResolver(), 1469c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) 1479c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt == 1); 1489c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw); 1499c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1509c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 151bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt static CharSequence getConfigurationWarningStringForSecureSettingsKey(String key, 152bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt Context context) { 153bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt if (!Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) { 154bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt return null; 155bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt } 156bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt if (Settings.Secure.getInt(context.getContentResolver(), 157bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 0) { 158bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt return null; 159bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt } 160bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final AccessibilityManager am = (AccessibilityManager) context.getSystemService( 161bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt Context.ACCESSIBILITY_SERVICE); 162bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final String assignedId = Settings.Secure.getString(context.getContentResolver(), 163bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt Settings.Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT); 164bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt if (!TextUtils.isEmpty(assignedId) && !MAGNIFICATION_COMPONENT_ID.equals(assignedId)) { 165bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final ComponentName assignedComponentName = ComponentName.unflattenFromString( 166bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt assignedId); 167bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final List<AccessibilityServiceInfo> activeServices = 168bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt am.getEnabledAccessibilityServiceList( 169bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt AccessibilityServiceInfo.FEEDBACK_ALL_MASK); 170bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final int serviceCount = activeServices.size(); 171bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt for (int i = 0; i < serviceCount; i++) { 172bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final AccessibilityServiceInfo info = activeServices.get(i); 173bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt if (info.getComponentName().equals(assignedComponentName)) { 174bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt final CharSequence assignedServiceName = info.getResolveInfo().loadLabel( 175bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt context.getPackageManager()); 176bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt return context.getString( 177bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt R.string.accessibility_screen_magnification_navbar_configuration_warning, 178bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt assignedServiceName); 179bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt } 1809c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1819c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 182bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt return null; 1839c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 1849c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt 185875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) { 186875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, 187875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); 188875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString( 189875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt R.string.accessibility_screen_magnification_gestures_title)); 190875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText( 191875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt R.string.accessibility_screen_magnification_summary)); 192875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, 193875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt Settings.Secure.getInt(context.getContentResolver(), 194875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1); 195875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID, 196875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt R.raw.accessibility_screen_magnification); 197875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt } 198875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt 199875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt /** 200875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt * @return {@code true} if this fragment should be shown, {@code false} otherwise. This 201875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt * fragment is shown in the case that more than one magnification mode is available. 202875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt */ 203875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt static boolean isApplicable(Resources res) { 204875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt return res.getBoolean(com.android.internal.R.bool.config_showNavigationBar); 205875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt } 206875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt 2079c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 2089c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt new BaseSearchIndexProvider() { 2099c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt @Override 2109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, 2119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt boolean enabled) { 212875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt if (isApplicable(context.getResources())) { 213875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt final SearchIndexableResource sir = new SearchIndexableResource(context); 214875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt sir.xmlResId = R.xml.accessibility_magnification_settings; 215875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt return Arrays.asList(sir); 216875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt } else { 217875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt return Collections.emptyList(); 218875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt } 2199c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt } 2207ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze 2217ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze @Override 2227ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze public List<String> getNonIndexableKeys(Context context) { 2237ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze List<String> keys = super.getNonIndexableKeys(context); 2247ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze keys.add(PREFERENCE_TITLE_KEY); 2257ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze return keys; 2267ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze } 2279c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt }; 2289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt} 229