diff --git a/res/values/strings.xml b/res/values/strings.xml
index c0a160ba34f..252e3d865b4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12165,6 +12165,8 @@
3:2
4:3
+
+ %1$s by %2$s
The app will restart when you change aspect ratio. You may lose unsaved changes. Some apps may not be optimized for certain aspect ratios.
diff --git a/res/xml/user_aspect_ratio_details.xml b/res/xml/user_aspect_ratio_details.xml
index 07c8b6faaa7..ec76caa3909 100644
--- a/res/xml/user_aspect_ratio_details.xml
+++ b/res/xml/user_aspect_ratio_details.xml
@@ -45,17 +45,14 @@
mInfoHasLauncherEntryList;
private final Map mUserAspectRatioMap;
+ private final Map 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();
}
@@ -106,6 +109,16 @@ public class UserAspectRatioManager {
return mUserAspectRatioMap.get(aspectRatio);
}
+ /**
+ * @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
*/
@@ -185,6 +198,7 @@ public class UserAspectRatioManager {
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 @@ public class UserAspectRatioManager {
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);
}
}
@@ -204,6 +226,12 @@ public class UserAspectRatioManager {
return userMinAspectRatioMap;
}
+ @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) {