Merge "Add accessible sequence for aspect ratio options" into udc-qpr-dev am: 7cf5bb509e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/24742814
Change-Id: I1f559828d5ab7ce517b231df8bd0f7e92541b677
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c0a160b..252e3d8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12165,6 +12165,8 @@
<string name="user_aspect_ratio_3_2">3:2</string>
<!-- [CHAR LIMIT=NONE] 4:3 aspect ratio entry -->
<string name="user_aspect_ratio_4_3">4:3</string>
+ <!-- [CHAR LIMIT=NONE] Aspect ratio a11y message announced to replace colon in aspect ratio entry e.g. 3 by 2 -->
+ <string name="user_aspect_ratio_option_a11y"><xliff:g id="numerator">%1$s</xliff:g> by <xliff:g id="denominator">%2$s</xliff:g></string>
<!-- [CHAR LIMIT=NONE] Warning description for app info aspect ratio page -->
<string name="app_aspect_ratio_footer">The app will restart when you change aspect ratio. You may lose unsaved changes. Some apps may not be optimized for certain aspect ratios.</string>
diff --git a/res/xml/user_aspect_ratio_details.xml b/res/xml/user_aspect_ratio_details.xml
index 07c8b6f..ec76caa 100644
--- a/res/xml/user_aspect_ratio_details.xml
+++ b/res/xml/user_aspect_ratio_details.xml
@@ -45,17 +45,14 @@
<com.android.settings.applications.appcompat.RadioWithImagePreference
android:key="16_9_pref"
- android:title="@string/user_aspect_ratio_16_9"
android:icon="@drawable/ic_app_aspect_ratio_16_9"/>
<com.android.settings.applications.appcompat.RadioWithImagePreference
android:key="4_3_pref"
- android:title="@string/user_aspect_ratio_4_3"
android:icon="@drawable/ic_app_aspect_ratio_4_3"/>
<com.android.settings.applications.appcompat.RadioWithImagePreference
android:key="3_2_pref"
- android:title="@string/user_aspect_ratio_3_2"
android:icon="@drawable/ic_app_aspect_ratio_3_2"/>
<com.android.settingslib.widget.FooterPreference
diff --git a/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java b/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
index 7542f3f..81741b7 100644
--- a/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
+++ b/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
@@ -227,8 +227,7 @@
pref.setVisible(false);
return;
}
- pref.setTitle(mUserAspectRatioManager.getUserMinAspectRatioEntry(aspectRatio,
- mPackageName));
+ pref.setTitle(mUserAspectRatioManager.getAccessibleEntry(aspectRatio, mPackageName));
pref.setOnClickListener(this);
mAspectRatioPreferences.add(pref);
}
diff --git a/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java b/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
index 6bc9658..2c157c4 100644
--- a/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
+++ b/src/com/android/settings/applications/appcompat/UserAspectRatioManager.java
@@ -36,6 +36,7 @@
import androidx.annotation.Nullable;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.google.common.annotations.VisibleForTesting;
@@ -64,12 +65,14 @@
/** Apps that have launcher entry defined in manifest */
private final List<ResolveInfo> mInfoHasLauncherEntryList;
private final Map<Integer, String> mUserAspectRatioMap;
+ private final Map<Integer, CharSequence> mUserAspectRatioA11yMap;
public UserAspectRatioManager(@NonNull Context context) {
mContext = context;
mIPm = AppGlobals.getPackageManager();
mInfoHasLauncherEntryList = mContext.getPackageManager().queryIntentActivities(
UserAspectRatioManager.LAUNCHER_ENTRY_INTENT, PackageManager.GET_META_DATA);
+ mUserAspectRatioA11yMap = new ArrayMap<>();
mUserAspectRatioMap = getUserMinAspectRatioMapping();
}
@@ -107,6 +110,16 @@
}
/**
+ * @return corresponding accessible string for {@link PackageManager.UserMinAspectRatio} value
+ */
+ @NonNull
+ public CharSequence getAccessibleEntry(@PackageManager.UserMinAspectRatio int aspectRatio,
+ String packageName) {
+ return mUserAspectRatioA11yMap.getOrDefault(aspectRatio,
+ getUserMinAspectRatioEntry(aspectRatio, packageName));
+ }
+
+ /**
* @return corresponding aspect ratio string for package name and user
*/
@NonNull
@@ -185,6 +198,7 @@
final int aspectRatioVal = userMinAspectRatioValues[i];
final String aspectRatioString = getAspectRatioStringOrDefault(
userMinAspectRatioStrings[i], aspectRatioVal);
+ boolean containsColon = aspectRatioString.contains(":");
switch (aspectRatioVal) {
// Only map known values of UserMinAspectRatio and ignore unknown entries
case PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN:
@@ -194,6 +208,14 @@
case PackageManager.USER_MIN_ASPECT_RATIO_4_3:
case PackageManager.USER_MIN_ASPECT_RATIO_16_9:
case PackageManager.USER_MIN_ASPECT_RATIO_3_2:
+ if (containsColon) {
+ String[] aspectRatioDigits = aspectRatioString.split(":");
+ String accessibleString = getAccessibleOption(aspectRatioDigits[0],
+ aspectRatioDigits[1]);
+ final CharSequence accessibleSequence = Utils.createAccessibleSequence(
+ aspectRatioString, accessibleString);
+ mUserAspectRatioA11yMap.put(aspectRatioVal, accessibleSequence);
+ }
userMinAspectRatioMap.put(aspectRatioVal, aspectRatioString);
}
}
@@ -205,6 +227,12 @@
}
@NonNull
+ private String getAccessibleOption(String numerator, String denominator) {
+ return mContext.getResources().getString(R.string.user_aspect_ratio_option_a11y,
+ numerator, denominator);
+ }
+
+ @NonNull
private String getAspectRatioStringOrDefault(@Nullable String aspectRatioString,
@PackageManager.UserMinAspectRatio int aspectRatioVal) {
if (aspectRatioString != null) {