diff --git a/res/values/strings.xml b/res/values/strings.xml
index 608eac8b73e..30b4c5fab46 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5063,9 +5063,13 @@
- %1$d saved hearing aids
-
+
+ Shortcut on
+
+ Off
+
On
-
+
Off
Not working. Tap for info.
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 23b0f1a7198..1e3944eb1f5 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -76,8 +76,6 @@ public class AccessibilitySettings extends DashboardFragment {
// Index of the first preference in a preference category.
private static final int FIRST_PREFERENCE_IN_CATEGORY_INDEX = -1;
- private static final String EMPTY_STRING = "";
-
// Preference categories
private static final String CATEGORY_SCREEN_READER = "screen_reader_category";
private static final String CATEGORY_AUDIO_AND_CAPTIONS = "audio_and_captions_category";
@@ -195,6 +193,10 @@ public class AccessibilitySettings extends DashboardFragment {
for (AccessibilityShortcutController.ToggleableFrameworkFeatureInfo feature : features) {
shortcutFeatureKeys.add(feature.getSettingKey());
}
+
+ // Observe changes from accessibility selection menu
+ shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT);
+ shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE);
mSettingsContentObserver = new SettingsContentObserver(mHandler, shortcutFeatureKeys) {
@Override
public void onChange(boolean selfChange, Uri uri) {
@@ -268,16 +270,24 @@ public class AccessibilitySettings extends DashboardFragment {
return context.getText(R.string.accessibility_summary_state_stopped);
}
- final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
-
+ final CharSequence serviceState;
final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info);
if (fragmentType == AccessibilityServiceFragmentType.INVISIBLE) {
- return TextUtils.isEmpty(serviceSummary) ? EMPTY_STRING : serviceSummary;
+ final ComponentName componentName = new ComponentName(
+ info.getResolveInfo().serviceInfo.packageName,
+ info.getResolveInfo().serviceInfo.name);
+ final boolean shortcutEnabled = AccessibilityUtil.getUserShortcutTypesFromSettings(
+ context, componentName) != AccessibilityUtil.UserShortcutType.EMPTY;
+ serviceState = shortcutEnabled
+ ? context.getText(R.string.accessibility_summary_shortcut_enabled)
+ : context.getText(R.string.accessibility_summary_shortcut_disabled);
+ } else {
+ serviceState = serviceEnabled
+ ? context.getText(R.string.accessibility_summary_state_enabled)
+ : context.getText(R.string.accessibility_summary_state_disabled);
}
- final CharSequence serviceState = serviceEnabled
- ? context.getText(R.string.accessibility_summary_state_enabled)
- : context.getText(R.string.accessibility_summary_state_disabled);
+ final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
final String stateSummaryCombo = context.getString(
R.string.preference_summary_default_combination,
serviceState, serviceSummary);
@@ -485,6 +495,8 @@ public class AccessibilitySettings extends DashboardFragment {
mCategoryToPrefCategoryMap.get(CATEGORY_DISPLAY);
experimentalCategory.removePreference(mToggleInversionPreference);
experimentalCategory.removePreference(mDisplayDaltonizerPreferenceScreen);
+ mDisplayMagnificationPreferenceScreen.setSummary(
+ ToggleScreenMagnificationPreferenceFragment.getServiceSummary(getContext()));
mDisplayDaltonizerPreferenceScreen.setOrder(
mDisplayMagnificationPreferenceScreen.getOrder() + 1);
mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary(
diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceController.java b/src/com/android/settings/accessibility/MagnificationPreferenceController.java
index 7ac7bef0ea1..5b5236e0c1a 100644
--- a/src/com/android/settings/accessibility/MagnificationPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationPreferenceController.java
@@ -22,7 +22,6 @@ import android.os.Bundle;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
-import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
public class MagnificationPreferenceController extends BasePreferenceController {
@@ -40,8 +39,7 @@ public class MagnificationPreferenceController extends BasePreferenceController
@Override
public CharSequence getSummary() {
- return mContext.getResources().getText(
- R.string.accessibility_screen_magnification_navbar_title);
+ return ToggleScreenMagnificationPreferenceFragment.getServiceSummary(mContext);
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 292e93138d5..4c2945ad176 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -624,4 +624,17 @@ public class ToggleScreenMagnificationPreferenceFragment extends
}
return shortcutTypes;
}
+
+ /**
+ * Gets the service summary of magnification.
+ *
+ * @param context The current context.
+ */
+ public static CharSequence getServiceSummary(Context context) {
+ // Get the user shortcut type from settings provider.
+ final int uerShortcutType = getUserShortcutTypeFromSettings(context);
+ return (uerShortcutType != AccessibilityUtil.UserShortcutType.EMPTY)
+ ? context.getText(R.string.accessibility_summary_shortcut_enabled)
+ : context.getText(R.string.accessibility_summary_shortcut_disabled);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index 3528fb6fc3d..98d29184bed 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -130,14 +130,17 @@ public class AccessibilitySettingsTest {
}
@Test
- public void getServiceSummary_invisibleType_showsDefaultSummary() {
+ public void getServiceSummary_invisibleType_shortcutDisabled_showsOffSummary() {
setInvisibleFragmentType(mServiceInfo);
doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
mServiceInfo, SERVICE_ENABLED);
- assertThat(summary).isEqualTo(DEFAULT_SUMMARY);
+ assertThat(summary).isEqualTo(
+ mContext.getString(R.string.preference_summary_default_combination,
+ mContext.getString(R.string.accessibility_summary_shortcut_disabled),
+ DEFAULT_SUMMARY));
}
@Test