Merge "Update Volume Panel dimentions for the redesign" into main
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index a60fd11..e724ab8 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -12676,21 +12676,27 @@
package android.security.advancedprotection {
@FlaggedApi("android.security.aapm_api") public final class AdvancedProtectionFeature implements android.os.Parcelable {
- ctor public AdvancedProtectionFeature(int);
+ ctor public AdvancedProtectionFeature(@NonNull String);
method public int describeContents();
- method public int getId();
+ method @NonNull public String getId();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.security.advancedprotection.AdvancedProtectionFeature> CREATOR;
}
@FlaggedApi("android.security.aapm_api") public final class AdvancedProtectionManager {
+ method @NonNull public android.content.Intent createSupportIntent(@NonNull String, @Nullable String);
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ADVANCED_PROTECTION_MODE) public java.util.List<android.security.advancedprotection.AdvancedProtectionFeature> getAdvancedProtectionFeatures();
method @RequiresPermission(android.Manifest.permission.MANAGE_ADVANCED_PROTECTION_MODE) public void setAdvancedProtectionEnabled(boolean);
- field public static final int FEATURE_ID_DISALLOW_CELLULAR_2G = 0; // 0x0
- field public static final int FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES = 1; // 0x1
- field public static final int FEATURE_ID_DISALLOW_USB = 2; // 0x2
- field public static final int FEATURE_ID_DISALLOW_WEP = 3; // 0x3
- field public static final int FEATURE_ID_ENABLE_MTE = 4; // 0x4
+ field @FlaggedApi("android.security.aapm_api") public static final String ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG = "android.security.advancedprotection.action.SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG";
+ field public static final String EXTRA_SUPPORT_DIALOG_FEATURE = "android.security.advancedprotection.extra.SUPPORT_DIALOG_FEATURE";
+ field public static final String EXTRA_SUPPORT_DIALOG_TYPE = "android.security.advancedprotection.extra.SUPPORT_DIALOG_TYPE";
+ field public static final String FEATURE_ID_DISALLOW_CELLULAR_2G = "android.security.advancedprotection.feature_disallow_2g";
+ field public static final String FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES = "android.security.advancedprotection.feature_disallow_install_unknown_sources";
+ field public static final String FEATURE_ID_DISALLOW_USB = "android.security.advancedprotection.feature_disallow_usb";
+ field public static final String FEATURE_ID_DISALLOW_WEP = "android.security.advancedprotection.feature_disallow_wep";
+ field public static final String FEATURE_ID_ENABLE_MTE = "android.security.advancedprotection.feature_enable_mte";
+ field public static final String SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION = "android.security.advancedprotection.type_blocked_interaction";
+ field public static final String SUPPORT_DIALOG_TYPE_DISABLED_SETTING = "android.security.advancedprotection.type_disabled_setting";
}
}
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index f98fb46..ed8042d 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -4136,6 +4136,7 @@
method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public boolean isInputMethodPickerShown();
method @NonNull @RequiresPermission(value=android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional=true) public boolean isStylusHandwritingAvailableAsUser(@NonNull android.os.UserHandle);
method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public void setStylusWindowIdleTimeoutForTest(long);
+ method @RequiresPermission(android.Manifest.permission.TEST_INPUT_METHOD) public boolean shouldShowImeSwitcherButtonForTest();
field public static final long CLEAR_SHOW_FORCED_FLAG_WHEN_LEAVING = 214016041L; // 0xcc1a029L
}
diff --git a/core/java/android/app/BroadcastOptions.java b/core/java/android/app/BroadcastOptions.java
index 4db3727..0e45902 100644
--- a/core/java/android/app/BroadcastOptions.java
+++ b/core/java/android/app/BroadcastOptions.java
@@ -38,6 +38,7 @@
import android.os.PowerExemptionManager;
import android.os.PowerExemptionManager.ReasonCode;
import android.os.PowerExemptionManager.TempAllowListType;
+import android.os.Process;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -76,6 +77,7 @@
FLAG_IS_ALARM_BROADCAST,
FLAG_SHARE_IDENTITY,
FLAG_INTERACTIVE,
+ FLAG_DEBUG_LOG,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Flags {}
@@ -86,6 +88,7 @@
private static final int FLAG_IS_ALARM_BROADCAST = 1 << 3;
private static final int FLAG_SHARE_IDENTITY = 1 << 4;
private static final int FLAG_INTERACTIVE = 1 << 5;
+ private static final int FLAG_DEBUG_LOG = 1 << 6;
/**
* Change ID which is invalid.
@@ -1082,6 +1085,34 @@
}
/**
+ * If enabled, additional debug messages for broadcast delivery will be logged.
+ *
+ * <p> This will only take effect when used by {@link Process#SHELL_UID}
+ * or {@link Process#ROOT_UID} or by apps under instrumentation.
+ *
+ * @hide
+ */
+ @NonNull
+ public BroadcastOptions setDebugLogEnabled(boolean enabled) {
+ if (enabled) {
+ mFlags |= FLAG_DEBUG_LOG;
+ } else {
+ mFlags &= ~FLAG_DEBUG_LOG;
+ }
+ return this;
+ }
+
+ /**
+ * @return if additional debug messages for broadcast delivery are enabled.
+ *
+ * @see #setDebugLogEnabled(boolean)
+ * @hide
+ */
+ public boolean isDebugLogEnabled() {
+ return (mFlags & FLAG_DEBUG_LOG) != 0;
+ }
+
+ /**
* Returns the created options as a Bundle, which can be passed to
* {@link android.content.Context#sendBroadcast(android.content.Intent)
* Context.sendBroadcast(Intent)} and related methods.
diff --git a/core/java/android/app/IApplicationStartInfoCompleteListener.aidl b/core/java/android/app/IApplicationStartInfoCompleteListener.aidl
index 0f0d919..f7e5f18 100644
--- a/core/java/android/app/IApplicationStartInfoCompleteListener.aidl
+++ b/core/java/android/app/IApplicationStartInfoCompleteListener.aidl
@@ -25,6 +25,6 @@
*
* @hide
*/
-interface IApplicationStartInfoCompleteListener {
+oneway interface IApplicationStartInfoCompleteListener {
void onApplicationStartInfoComplete(in ApplicationStartInfo applicationStartInfo);
}
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index a6c1a57..0451ac0 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -270,6 +270,6 @@
int[] getAllowedAdjustmentKeyTypes();
void setAssistantAdjustmentKeyTypeState(int type, boolean enabled);
- String[] getTypeAdjustmentDeniedPackages();
- void setTypeAdjustmentForPackageState(String pkg, boolean enabled);
+ int[] getAllowedAdjustmentKeyTypesForPackage(String pkg);
+ void setAssistantAdjustmentKeyTypeStateForPackage(String pkg, int type, boolean enabled);
}
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index ec10913..08bd854 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1986,10 +1986,12 @@
* @hide
*/
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void setTypeAdjustmentForPackageState(@NonNull String pkg, boolean enabled) {
+ public void setAssistantAdjustmentKeyTypeStateForPackage(@NonNull String pkg,
+ @Adjustment.Types int type,
+ boolean enabled) {
INotificationManager service = service();
try {
- service.setTypeAdjustmentForPackageState(pkg, enabled);
+ service.setAssistantAdjustmentKeyTypeStateForPackage(pkg, type, enabled);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index f29e2e8..2ad9660 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -211,6 +211,16 @@
}
flag {
+ name: "place_add_user_dialog_within_activity"
+ namespace: "multiuser"
+ description: "Display dialog within activity to make it traversable by Accessibility"
+ bug: "383034393"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "property_invalidated_cache_bypass_mismatched_uids"
namespace: "multiuser"
description: "Bypass the cache when the process UID does not match the binder UID."
diff --git a/core/java/android/hardware/display/DisplayTopology.java b/core/java/android/hardware/display/DisplayTopology.java
index ba5dfc0..0e2c05f 100644
--- a/core/java/android/hardware/display/DisplayTopology.java
+++ b/core/java/android/hardware/display/DisplayTopology.java
@@ -27,10 +27,12 @@
import android.graphics.RectF;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.DisplayMetrics;
import android.util.IndentingPrintWriter;
import android.util.MathUtils;
import android.util.Pair;
import android.util.Slog;
+import android.util.SparseArray;
import android.view.Display;
import androidx.annotation.NonNull;
@@ -75,6 +77,24 @@
};
/**
+ * @param px The value in logical pixels
+ * @param dpi The logical density of the display
+ * @return The value in density-independent pixels
+ */
+ public static float pxToDp(float px, int dpi) {
+ return px * DisplayMetrics.DENSITY_DEFAULT / dpi;
+ }
+
+ /**
+ * @param dp The value in density-independent pixels
+ * @param dpi The logical density of the display
+ * @return The value in logical pixels
+ */
+ public static float dpToPx(float dp, int dpi) {
+ return dp * dpi / DisplayMetrics.DENSITY_DEFAULT;
+ }
+
+ /**
* The topology tree
*/
@Nullable
@@ -226,10 +246,9 @@
// The optimal pair is the pair which has the smallest deviation. The deviation consists of
// an x-axis component and a y-axis component, called xDeviation and yDeviation.
//
- // The deviations are like distances but a little different. They are calculated in two
- // steps. The first step calculates both axes in a similar way. The next step compares the
- // two values and chooses which axis to attach along. Depending on which axis is chosen,
- // the deviation for one axis is updated. See below for details.
+ // The deviations are like distances but a little different. When they are calculated, each
+ // dimension is treated differently, depending on which edges (left+right or top+bottom) are
+ // attached.
while (!needsParent.isEmpty()) {
double bestDist = Double.POSITIVE_INFINITY;
TreeNode bestChild = null, bestParent = null;
@@ -243,33 +262,32 @@
float parentRight = parentPos.x + parent.getWidth();
float parentBottom = parentPos.y + parent.getHeight();
- // This is the smaller of the two ranges minus the amount of overlap shared
- // between them. The "amount of overlap" is negative if there is no overlap, but
- // this does not make a parenting ineligible, because we allow for attaching at
- // the corner and for floating point error. The overlap is more negative the
- // farther apart the closest corner pair is.
- //
- // For each axis, this calculates (SmallerRange - Overlap). If one range lies
- // completely in the other (or they are equal), the axis' deviation will be
- // zero.
- //
- // The "SmallerRange," which refers to smaller of the widths of the two rects,
- // or smaller of the heights of the two rects, is added to the deviation so that
- // a maximum overlap results in a deviation of zero.
- float xSmallerRange = Math.min(child.getWidth(), parent.getWidth());
- float ySmallerRange = Math.min(child.getHeight(), parent.getHeight());
- float xOverlap
- = Math.min(parentRight, childRight)
- - Math.max(parentPos.x, childPos.x);
- float yOverlap
- = Math.min(parentBottom, childBottom)
- - Math.max(parentPos.y, childPos.y);
- float xDeviation = xSmallerRange - xOverlap;
- float yDeviation = ySmallerRange - yOverlap;
+ // The "amount of overlap" indicates how much of one display is within the other
+ // (considering one axis only). It's zero if they only share an edge and
+ // negative if they're away from each other.
+ // A zero or negative overlap does not make a parenting ineligible, because we
+ // allow for attaching at the corner and for floating point error.
+ float xOverlap =
+ Math.min(parentRight, childRight) - Math.max(parentPos.x, childPos.x);
+ float yOverlap =
+ Math.min(parentBottom, childBottom) - Math.max(parentPos.y, childPos.y);
+ float xDeviation, yDeviation;
float offset;
int pos;
- if (xDeviation <= yDeviation) {
+ if (Math.abs(xOverlap) > Math.abs(yOverlap)) {
+ // Deviation in each dimension is a penalty in the potential parenting. To
+ // get the X deviation, overlap is subtracted from the lesser width so that
+ // a maximum overlap results in a deviation of zero.
+ // Note that because xOverlap is *subtracted* from the lesser width, no
+ // overlap in X becomes a *penalty* if we are attaching on the top+bottom
+ // edges.
+ //
+ // The Y deviation is simply the distance from the clamping edges.
+ //
+ // Treatment of the X and Y deviations are swapped for
+ // POSITION_LEFT/POSITION_RIGHT attachments in the "else" block below.
+ xDeviation = Math.min(child.getWidth(), parent.getWidth()) - xOverlap;
if (childPos.y < parentPos.y) {
yDeviation = childBottom - parentPos.y;
pos = POSITION_TOP;
@@ -279,6 +297,7 @@
}
offset = childPos.x - parentPos.x;
} else {
+ yDeviation = Math.min(child.getHeight(), parent.getHeight()) - yOverlap;
if (childPos.x < parentPos.x) {
xDeviation = childRight - parentPos.x;
pos = POSITION_LEFT;
@@ -474,6 +493,22 @@
return new DisplayTopology(rootCopy, mPrimaryDisplayId);
}
+ /**
+ * Assign absolute bounds to each display. The top-left corner of the root is at position
+ * (0, 0).
+ * @return Map from logical display ID to the display's absolute bounds
+ */
+ public SparseArray<RectF> getAbsoluteBounds() {
+ Map<TreeNode, RectF> bounds = new HashMap<>();
+ getInfo(bounds, /* depths= */ null, /* parents= */ null, mRoot, /* x= */ 0, /* y= */ 0,
+ /* depth= */ 0);
+ SparseArray<RectF> boundsById = new SparseArray<>();
+ for (Map.Entry<TreeNode, RectF> entry : bounds.entrySet()) {
+ boundsById.append(entry.getKey().mDisplayId, entry.getValue());
+ }
+ return boundsById;
+ }
+
@Override
public int describeContents() {
return 0;
@@ -575,7 +610,7 @@
}
@Nullable
- private static TreeNode findDisplay(int displayId, TreeNode startingNode) {
+ private static TreeNode findDisplay(int displayId, @Nullable TreeNode startingNode) {
if (startingNode == null) {
return null;
}
@@ -592,8 +627,8 @@
}
/**
- * Get information about the topology that will be used for the normalization algorithm.
- * Assigns origins to each display to compute the bounds.
+ * Get information about the topology.
+ * Assigns positions to each display to compute the bounds. The root is at position (0, 0).
* @param bounds The map where the bounds of each display will be put
* @param depths The map where the depths of each display in the tree will be put
* @param parents The map where the parent of each display will be put
@@ -602,12 +637,22 @@
* @param y The starting y position
* @param depth The starting depth
*/
- private static void getInfo(Map<TreeNode, RectF> bounds, Map<TreeNode, Integer> depths,
- Map<TreeNode, TreeNode> parents, TreeNode display, float x, float y, int depth) {
- bounds.put(display, new RectF(x, y, x + display.mWidth, y + display.mHeight));
- depths.put(display, depth);
+ private static void getInfo(@Nullable Map<TreeNode, RectF> bounds,
+ @Nullable Map<TreeNode, Integer> depths, @Nullable Map<TreeNode, TreeNode> parents,
+ @Nullable TreeNode display, float x, float y, int depth) {
+ if (display == null) {
+ return;
+ }
+ if (bounds != null) {
+ bounds.put(display, new RectF(x, y, x + display.mWidth, y + display.mHeight));
+ }
+ if (depths != null) {
+ depths.put(display, depth);
+ }
for (TreeNode child : display.mChildren) {
- parents.put(child, display);
+ if (parents != null) {
+ parents.put(child, display);
+ }
if (child.mPosition == POSITION_LEFT) {
getInfo(bounds, depths, parents, child, x - child.mWidth, y + child.mOffset,
depth + 1);
@@ -662,7 +707,7 @@
* Ensure that the offsets of all displays within the given tree are within bounds.
* @param display The starting node
*/
- private void clampOffsets(TreeNode display) {
+ private void clampOffsets(@Nullable TreeNode display) {
if (display == null) {
return;
}
diff --git a/core/java/android/hardware/input/InputSettings.java b/core/java/android/hardware/input/InputSettings.java
index 34c88e9..8da630c 100644
--- a/core/java/android/hardware/input/InputSettings.java
+++ b/core/java/android/hardware/input/InputSettings.java
@@ -28,6 +28,7 @@
import static com.android.hardware.input.Flags.mouseScrollingAcceleration;
import static com.android.hardware.input.Flags.mouseReverseVerticalScrolling;
import static com.android.hardware.input.Flags.mouseSwapPrimaryButton;
+import static com.android.hardware.input.Flags.pointerAcceleration;
import static com.android.hardware.input.Flags.touchpadSystemGestureDisable;
import static com.android.hardware.input.Flags.touchpadThreeFingerTapShortcut;
import static com.android.hardware.input.Flags.touchpadVisualizer;
@@ -418,6 +419,15 @@
}
/**
+ * Returns true if the feature flag for the pointer acceleration toggle is
+ * enabled.
+ * @hide
+ */
+ public static boolean isPointerAccelerationFeatureFlagEnabled() {
+ return pointerAcceleration();
+ }
+
+ /**
* Returns true if the touchpad visualizer is allowed to appear.
*
* @param context The application context.
@@ -720,6 +730,47 @@
}
/**
+ * Whether cursor acceleration is enabled or not for connected mice.
+ *
+ * @param context The application context.
+ *
+ * @hide
+ */
+ public static boolean isMousePointerAccelerationEnabled(@NonNull Context context) {
+ if (!isPointerAccelerationFeatureFlagEnabled()) {
+ return false;
+ }
+
+ return Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.System.MOUSE_POINTER_ACCELERATION_ENABLED, 1, UserHandle.USER_CURRENT)
+ == 1;
+ }
+
+ /**
+ * Sets whether mouse acceleration is enabled.
+ *
+ * When enabled, the mouse cursor moves farther when it is moved faster.
+ * When disabled, the mouse cursor speed becomes directly proportional to
+ * the speed at which the mouse is moved.
+ *
+ * @param context The application context.
+ * @param enabled Will enable mouse acceleration if true, disable it if
+ * false.
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.WRITE_SETTINGS)
+ public static void setMouseAccelerationEnabled(@NonNull Context context,
+ boolean enabled) {
+ if (!isPointerAccelerationFeatureFlagEnabled()) {
+ return;
+ }
+ Settings.System.putIntForUser(context.getContentResolver(),
+ Settings.System.MOUSE_POINTER_ACCELERATION_ENABLED, enabled ? 1 : 0,
+ UserHandle.USER_CURRENT);
+ }
+
+
+ /**
* Whether Accessibility bounce keys feature is enabled.
*
* <p>
diff --git a/core/java/android/inputmethodservice/InlineSuggestionSession.java b/core/java/android/inputmethodservice/InlineSuggestionSession.java
index 1cc64f9..4c90750 100644
--- a/core/java/android/inputmethodservice/InlineSuggestionSession.java
+++ b/core/java/android/inputmethodservice/InlineSuggestionSession.java
@@ -29,6 +29,7 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
+import android.view.autofill.AutofillFeatureFlags;
import android.view.autofill.AutofillId;
import android.view.inputmethod.InlineSuggestionsRequest;
import android.view.inputmethod.InlineSuggestionsResponse;
@@ -81,6 +82,7 @@
@Nullable
private Boolean mPreviousResponseIsEmpty;
+ private boolean mAlwaysNotifyAutofill = false;
/**
* Indicates whether {@link #makeInlineSuggestionRequestUncheck()} has been called or not,
@@ -105,6 +107,7 @@
mResponseConsumer = responseConsumer;
mInlineSuggestionSessionController = inlineSuggestionSessionController;
mMainThreadHandler = mainThreadHandler;
+ mAlwaysNotifyAutofill = AutofillFeatureFlags.isImproveFillDialogEnabled();
}
@MainThread
@@ -176,6 +179,9 @@
try {
final InlineSuggestionsRequest request = mRequestSupplier.apply(
mRequestInfo.getUiExtras());
+ if (mAlwaysNotifyAutofill) {
+ mResponseCallback = new InlineSuggestionsResponseCallbackImpl(this);
+ }
if (request == null) {
if (DEBUG) {
Log.d(TAG, "onCreateInlineSuggestionsRequest() returned null request");
@@ -184,7 +190,9 @@
} else {
request.setHostInputToken(mHostInputTokenSupplier.get());
request.filterContentTypes();
- mResponseCallback = new InlineSuggestionsResponseCallbackImpl(this);
+ if (!mAlwaysNotifyAutofill) {
+ mResponseCallback = new InlineSuggestionsResponseCallbackImpl(this);
+ }
mCallback.onInlineSuggestionsRequest(request, mResponseCallback);
}
} catch (RemoteException e) {
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index c57243d..6e58780 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6362,6 +6362,16 @@
public static final String MOUSE_SCROLLING_ACCELERATION = "mouse_scrolling_acceleration";
/**
+ * Whether mouse acceleration is enabled.
+ *
+ * When enabled, the mouse cursor will accelerate as the mouse moves faster.
+ *
+ * @hide
+ */
+ public static final String MOUSE_POINTER_ACCELERATION_ENABLED =
+ "mouse_pointer_acceleration_enabled";
+
+ /**
* Pointer fill style, specified by
* {@link android.view.PointerIcon.PointerIconVectorStyleFill} constants.
*
@@ -6610,6 +6620,7 @@
PRIVATE_SETTINGS.add(DEFAULT_DEVICE_FONT_SCALE);
PRIVATE_SETTINGS.add(MOUSE_REVERSE_VERTICAL_SCROLLING);
PRIVATE_SETTINGS.add(MOUSE_SWAP_PRIMARY_BUTTON);
+ PRIVATE_SETTINGS.add(MOUSE_POINTER_ACCELERATION_ENABLED);
PRIVATE_SETTINGS.add(PREFERRED_REGION);
PRIVATE_SETTINGS.add(MOUSE_SCROLLING_ACCELERATION);
}
@@ -9410,6 +9421,13 @@
"even_dimmer_min_nits";
/**
+ * Setting that holds EM_VALUE (proprietary)
+ *
+ * @hide
+ */
+ public static final String EM_VALUE =
+ "em_value";
+ /**
* List of the enabled print services.
*
* N and beyond uses {@link #DISABLED_PRINT_SERVICES}. But this might be used in an upgrade
diff --git a/core/java/android/security/advancedprotection/AdvancedProtectionFeature.java b/core/java/android/security/advancedprotection/AdvancedProtectionFeature.java
index d476d96..a086bf7 100644
--- a/core/java/android/security/advancedprotection/AdvancedProtectionFeature.java
+++ b/core/java/android/security/advancedprotection/AdvancedProtectionFeature.java
@@ -30,25 +30,26 @@
@FlaggedApi(Flags.FLAG_AAPM_API)
@SystemApi
public final class AdvancedProtectionFeature implements Parcelable {
- private final int mId;
+ private final String mId;
/**
* Create an object identifying an Advanced Protection feature for AdvancedProtectionManager
- * @param id Feature identifier. It is used by Settings screens to display information about
- * this feature.
+ * @param id A unique ID to identify this feature. It is used by Settings screens to display
+ * information about this feature.
*/
- public AdvancedProtectionFeature(@AdvancedProtectionManager.FeatureId int id) {
+ public AdvancedProtectionFeature(@NonNull String id) {
mId = id;
}
private AdvancedProtectionFeature(Parcel in) {
- mId = in.readInt();
+ mId = in.readString8();
}
/**
* @return the unique ID representing this feature
*/
- public int getId() {
+ @NonNull
+ public String getId() {
return mId;
}
@@ -59,7 +60,7 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeInt(mId);
+ dest.writeString8(mId);
}
@NonNull
diff --git a/core/java/android/security/advancedprotection/AdvancedProtectionManager.java b/core/java/android/security/advancedprotection/AdvancedProtectionManager.java
index ea01fc9..59628e8 100644
--- a/core/java/android/security/advancedprotection/AdvancedProtectionManager.java
+++ b/core/java/android/security/advancedprotection/AdvancedProtectionManager.java
@@ -24,18 +24,17 @@
import android.Manifest;
import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
-import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.SdkConstant;
+import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.annotation.SystemService;
-import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
-import android.net.wifi.WifiManager;
import android.os.Binder;
import android.os.RemoteException;
-import android.os.UserManager;
import android.security.Flags;
import android.util.Log;
@@ -60,57 +59,54 @@
private static final String TAG = "AdvancedProtectionMgr";
/**
- * Advanced Protection's identifier for setting policies or restrictions in
- * {@link DevicePolicyManager}.
+ * Advanced Protection's identifier for setting policies or restrictions in DevicePolicyManager.
*
* @hide */
public static final String ADVANCED_PROTECTION_SYSTEM_ENTITY =
"android.security.advancedprotection";
/**
- * Feature identifier for disallowing connections to 2G networks.
+ * Feature identifier for disallowing 2G.
*
- * @see UserManager#DISALLOW_CELLULAR_2G
* @hide */
@SystemApi
- public static final int FEATURE_ID_DISALLOW_CELLULAR_2G = 0;
+ public static final String FEATURE_ID_DISALLOW_CELLULAR_2G =
+ "android.security.advancedprotection.feature_disallow_2g";
/**
- * Feature identifier for disallowing installs of apps from unknown sources.
+ * Feature identifier for disallowing install of unknown sources.
*
- * @see UserManager#DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY
* @hide */
@SystemApi
- public static final int FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES = 1;
+ public static final String FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES =
+ "android.security.advancedprotection.feature_disallow_install_unknown_sources";
/**
- * Feature identifier for disallowing USB connections.
+ * Feature identifier for disallowing USB.
*
* @hide */
@SystemApi
- public static final int FEATURE_ID_DISALLOW_USB = 2;
+ public static final String FEATURE_ID_DISALLOW_USB =
+ "android.security.advancedprotection.feature_disallow_usb";
/**
- * Feature identifier for disallowing connections to Wi-Fi Wired Equivalent Privacy (WEP)
- * networks.
+ * Feature identifier for disallowing WEP.
*
- * @see WifiManager#isWepSupported()
* @hide */
@SystemApi
- public static final int FEATURE_ID_DISALLOW_WEP = 3;
+ public static final String FEATURE_ID_DISALLOW_WEP =
+ "android.security.advancedprotection.feature_disallow_wep";
/**
- * Feature identifier for enabling the Memory Tagging Extension (MTE). MTE is a CPU extension
- * that allows to protect against certain classes of security problems at a small runtime
- * performance cost overhead.
+ * Feature identifier for enabling MTE.
*
- * @see DevicePolicyManager#setMtePolicy(int)
* @hide */
@SystemApi
- public static final int FEATURE_ID_ENABLE_MTE = 4;
+ public static final String FEATURE_ID_ENABLE_MTE =
+ "android.security.advancedprotection.feature_enable_mte";
/** @hide */
- @IntDef(prefix = { "FEATURE_ID_" }, value = {
+ @StringDef(prefix = { "FEATURE_ID_" }, value = {
FEATURE_ID_DISALLOW_CELLULAR_2G,
FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES,
FEATURE_ID_DISALLOW_USB,
@@ -120,7 +116,7 @@
@Retention(RetentionPolicy.SOURCE)
public @interface FeatureId {}
- private static final Set<Integer> ALL_FEATURE_IDS = Set.of(
+ private static final Set<String> ALL_FEATURE_IDS = Set.of(
FEATURE_ID_DISALLOW_CELLULAR_2G,
FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES,
FEATURE_ID_DISALLOW_USB,
@@ -139,6 +135,9 @@
* Output: Nothing.
*
* @hide */
+ @SystemApi
+ @SdkConstant(SdkConstant.SdkConstantType.ACTIVITY_INTENT_ACTION)
+ @FlaggedApi(android.security.Flags.FLAG_AAPM_API)
public static final String ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG =
"android.security.advancedprotection.action.SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG";
@@ -148,6 +147,7 @@
*
* @hide */
@FeatureId
+ @SystemApi
public static final String EXTRA_SUPPORT_DIALOG_FEATURE =
"android.security.advancedprotection.extra.SUPPORT_DIALOG_FEATURE";
@@ -157,41 +157,37 @@
*
* @hide */
@SupportDialogType
+ @SystemApi
public static final String EXTRA_SUPPORT_DIALOG_TYPE =
"android.security.advancedprotection.extra.SUPPORT_DIALOG_TYPE";
/**
- * Type for {@link #EXTRA_SUPPORT_DIALOG_TYPE} indicating an unknown action was blocked by
- * advanced protection, hence the support dialog should display a default explanation.
- *
- * @hide */
- public static final int SUPPORT_DIALOG_TYPE_UNKNOWN = 0;
-
- /**
* Type for {@link #EXTRA_SUPPORT_DIALOG_TYPE} indicating a user performed an action that was
* blocked by advanced protection.
*
* @hide */
- public static final int SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION = 1;
+ @SystemApi
+ public static final String SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION =
+ "android.security.advancedprotection.type_blocked_interaction";
/**
* Type for {@link #EXTRA_SUPPORT_DIALOG_TYPE} indicating a user pressed on a setting toggle
* that was disabled by advanced protection.
*
* @hide */
- public static final int SUPPORT_DIALOG_TYPE_DISABLED_SETTING = 2;
+ @SystemApi
+ public static final String SUPPORT_DIALOG_TYPE_DISABLED_SETTING =
+ "android.security.advancedprotection.type_disabled_setting";
/** @hide */
- @IntDef(prefix = { "SUPPORT_DIALOG_TYPE_" }, value = {
- SUPPORT_DIALOG_TYPE_UNKNOWN,
+ @StringDef(prefix = { "SUPPORT_DIALOG_TYPE_" }, value = {
SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION,
SUPPORT_DIALOG_TYPE_DISABLED_SETTING,
})
@Retention(RetentionPolicy.SOURCE)
public @interface SupportDialogType {}
- private static final Set<Integer> ALL_SUPPORT_DIALOG_TYPES = Set.of(
- SUPPORT_DIALOG_TYPE_UNKNOWN,
+ private static final Set<String> ALL_SUPPORT_DIALOG_TYPES = Set.of(
SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION,
SUPPORT_DIALOG_TYPE_DISABLED_SETTING);
@@ -328,13 +324,15 @@
* disabled by advanced protection.
* @hide
*/
- public static @NonNull Intent createSupportIntent(@FeatureId int featureId,
- @SupportDialogType int type) {
+ @SystemApi
+ public @NonNull Intent createSupportIntent(@NonNull @FeatureId String featureId,
+ @Nullable @SupportDialogType String type) {
+ Objects.requireNonNull(featureId);
if (!ALL_FEATURE_IDS.contains(featureId)) {
throw new IllegalArgumentException(featureId + " is not a valid feature ID. See"
+ " FEATURE_ID_* APIs.");
}
- if (!ALL_SUPPORT_DIALOG_TYPES.contains(type)) {
+ if (type != null && !ALL_SUPPORT_DIALOG_TYPES.contains(type)) {
throw new IllegalArgumentException(type + " is not a valid type. See"
+ " SUPPORT_DIALOG_TYPE_* APIs.");
}
@@ -342,19 +340,21 @@
Intent intent = new Intent(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_SUPPORT_DIALOG_FEATURE, featureId);
- intent.putExtra(EXTRA_SUPPORT_DIALOG_TYPE, type);
+ if (type != null) {
+ intent.putExtra(EXTRA_SUPPORT_DIALOG_TYPE, type);
+ }
return intent;
}
/** @hide */
- public static @NonNull Intent createSupportIntentForPolicyIdentifierOrRestriction(
- @NonNull String identifier, @SupportDialogType int type) {
+ public @NonNull Intent createSupportIntentForPolicyIdentifierOrRestriction(
+ @NonNull String identifier, @Nullable @SupportDialogType String type) {
Objects.requireNonNull(identifier);
- if (!ALL_SUPPORT_DIALOG_TYPES.contains(type)) {
+ if (type != null && !ALL_SUPPORT_DIALOG_TYPES.contains(type)) {
throw new IllegalArgumentException(type + " is not a valid type. See"
+ " SUPPORT_DIALOG_TYPE_* APIs.");
}
- final int featureId;
+ final String featureId;
if (DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY.equals(identifier)) {
featureId = FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES;
} else if (DISALLOW_CELLULAR_2G.equals(identifier)) {
diff --git a/core/java/android/view/ImeInsetsSourceConsumer.java b/core/java/android/view/ImeInsetsSourceConsumer.java
index 4f74198..880622a 100644
--- a/core/java/android/view/ImeInsetsSourceConsumer.java
+++ b/core/java/android/view/ImeInsetsSourceConsumer.java
@@ -221,13 +221,13 @@
@Override
public boolean setControl(@Nullable InsetsSourceControl control, int[] showTypes,
- int[] hideTypes, int[] cancelTypes) {
+ int[] hideTypes, int[] cancelTypes, int[] transientTypes) {
if (Flags.refactorInsetsController()) {
- return super.setControl(control, showTypes, hideTypes, cancelTypes);
+ return super.setControl(control, showTypes, hideTypes, cancelTypes, transientTypes);
} else {
ImeTracing.getInstance().triggerClientDump("ImeInsetsSourceConsumer#setControl",
mController.getHost().getInputMethodManager(), null /* icProto */);
- if (!super.setControl(control, showTypes, hideTypes, cancelTypes)) {
+ if (!super.setControl(control, showTypes, hideTypes, cancelTypes, transientTypes)) {
return false;
}
if (control == null && !mIsRequestedVisibleAwaitingLeash) {
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index b0813f3..c174fbe 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -959,6 +959,7 @@
final @InsetsType int[] showTypes = new int[1];
final @InsetsType int[] hideTypes = new int[1];
final @InsetsType int[] cancelTypes = new int[1];
+ final @InsetsType int[] transientTypes = new int[1];
ImeTracker.Token statsToken = null;
// Ensure to update all existing source consumers
@@ -984,7 +985,7 @@
// control may be null, but we still need to update the control to null if it got
// revoked.
- consumer.setControl(control, showTypes, hideTypes, cancelTypes);
+ consumer.setControl(control, showTypes, hideTypes, cancelTypes, transientTypes);
}
// Ensure to create source consumers if not available yet.
@@ -992,7 +993,7 @@
for (int i = mTmpControlArray.size() - 1; i >= 0; i--) {
final InsetsSourceControl control = mTmpControlArray.valueAt(i);
getSourceConsumer(control.getId(), control.getType())
- .setControl(control, showTypes, hideTypes, cancelTypes);
+ .setControl(control, showTypes, hideTypes, cancelTypes, transientTypes);
}
}
@@ -1020,10 +1021,16 @@
handlePendingControlRequest(statsToken);
} else {
if (showTypes[0] != 0) {
- applyAnimation(showTypes[0], true /* show */, false /* fromIme */, statsToken);
+ applyAnimation(showTypes[0], true /* show */, false /* fromIme */,
+ false /* skipsCallbacks */, statsToken);
}
if (hideTypes[0] != 0) {
- applyAnimation(hideTypes[0], false /* show */, false /* fromIme */, statsToken);
+ applyAnimation(hideTypes[0], false /* show */, false /* fromIme */,
+ // The animation of hiding transient types shouldn't be detected by the
+ // app. Otherwise, it might be able to react to the callbacks and cause
+ // flickering.
+ (hideTypes[0] & ~transientTypes[0]) == 0 /* skipsCallbacks */,
+ statsToken);
}
}
} else {
@@ -1033,7 +1040,8 @@
ImeTracker.TYPE_SHOW, ImeTracker.ORIGIN_CLIENT,
SoftInputShowHideReason.CONTROLS_CHANGED,
mHost.isHandlingPointerEvent() /* fromUser */);
- applyAnimation(showTypes[0], true /* show */, false /* fromIme */, newStatsToken);
+ applyAnimation(showTypes[0], true /* show */, false /* fromIme */,
+ false /* skipsCallbacks */, newStatsToken);
}
if (hideTypes[0] != 0) {
final var newStatsToken =
@@ -1041,7 +1049,12 @@
ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
SoftInputShowHideReason.CONTROLS_CHANGED,
mHost.isHandlingPointerEvent() /* fromUser */);
- applyAnimation(hideTypes[0], false /* show */, false /* fromIme */, newStatsToken);
+ applyAnimation(hideTypes[0], false /* show */, false /* fromIme */,
+ // The animation of hiding transient types shouldn't be detected by the app.
+ // Otherwise, it might be able to react to the callbacks and cause
+ // flickering.
+ (hideTypes[0] & ~transientTypes[0]) == 0 /* skipsCallbacks */,
+ newStatsToken);
}
}
@@ -1174,7 +1187,8 @@
// TODO(b/353463205) check if this is needed here
ImeTracker.forLatency().onShown(statsToken, ActivityThread::currentApplication);
}
- applyAnimation(typesReady, true /* show */, fromIme, statsToken);
+ applyAnimation(typesReady, true /* show */, fromIme, false /* skipsCallbacks */,
+ statsToken);
}
/**
@@ -1287,7 +1301,8 @@
handlePendingControlRequest(statsToken);
getImeSourceConsumer().removeSurface();
}
- applyAnimation(typesReady, false /* show */, fromIme, statsToken);
+ applyAnimation(typesReady, false /* show */, fromIme, false /* skipsCallbacks */,
+ statsToken);
}
@Override
@@ -2007,24 +2022,24 @@
@VisibleForTesting
public void applyAnimation(@InsetsType final int types, boolean show, boolean fromIme,
- @Nullable ImeTracker.Token statsToken) {
+ boolean skipsCallbacks, @Nullable ImeTracker.Token statsToken) {
// TODO(b/166736352): We should only skip the animation of specific types, not all types.
- boolean skipAnim = false;
+ boolean skipsAnim = false;
if ((types & ime()) != 0) {
final InsetsSourceControl imeControl = mImeSourceConsumer.getControl();
// Skip showing animation once that made by system for some reason.
// (e.g. starting window with IME snapshot)
if (imeControl != null) {
- skipAnim = imeControl.getAndClearSkipAnimationOnce() && show
+ skipsAnim = imeControl.getAndClearSkipAnimationOnce() && show
&& mImeSourceConsumer.hasViewFocusWhenWindowFocusGain();
}
}
- applyAnimation(types, show, fromIme, skipAnim, statsToken);
+ applyAnimation(types, show, fromIme, skipsAnim, skipsCallbacks, statsToken);
}
@VisibleForTesting
public void applyAnimation(@InsetsType final int types, boolean show, boolean fromIme,
- boolean skipAnim, @Nullable ImeTracker.Token statsToken) {
+ boolean skipsAnim, boolean skipsCallbacks, @Nullable ImeTracker.Token statsToken) {
if (types == 0) {
// nothing to animate.
if (DEBUG) Log.d(TAG, "applyAnimation, nothing to animate. Stopping here");
@@ -2040,7 +2055,7 @@
boolean hasAnimationCallbacks = mHost.hasAnimationCallbacks();
final InternalAnimationControlListener listener = new InternalAnimationControlListener(
show, hasAnimationCallbacks, types, mHost.getSystemBarsBehavior(),
- skipAnim || mAnimationsDisabled, mHost.dipToPx(FLOATING_IME_BOTTOM_INSET_DP),
+ skipsAnim || mAnimationsDisabled, mHost.dipToPx(FLOATING_IME_BOTTOM_INSET_DP),
mLoggingListener, mJankContext);
// We are about to playing the default animation (show/hide). Passing a null frame indicates
@@ -2050,7 +2065,7 @@
listener /* insetsAnimationSpec */,
show ? ANIMATION_TYPE_SHOW : ANIMATION_TYPE_HIDE,
show ? LAYOUT_INSETS_DURING_ANIMATION_SHOWN : LAYOUT_INSETS_DURING_ANIMATION_HIDDEN,
- !hasAnimationCallbacks /* useInsetsAnimationThread */, statsToken,
+ !hasAnimationCallbacks || skipsCallbacks /* useInsetsAnimationThread */, statsToken,
false /* fromPredictiveBack */);
}
@@ -2173,12 +2188,12 @@
new InsetsSourceControl(ID_IME_CAPTION_BAR, captionBar(),
null /* leash */, false /* initialVisible */,
new Point(), Insets.NONE),
- new int[1], new int[1], new int[1]);
+ new int[1], new int[1], new int[1], new int[1]);
} else {
mState.removeSource(ID_IME_CAPTION_BAR);
InsetsSourceConsumer sourceConsumer = mSourceConsumers.get(ID_IME_CAPTION_BAR);
if (sourceConsumer != null) {
- sourceConsumer.setControl(null, new int[1], new int[1], new int[1]);
+ sourceConsumer.setControl(null, new int[1], new int[1], new int[1], new int[1]);
}
}
mHost.notifyInsetsChanged();
diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java
index 17f33c1..e8e6621 100644
--- a/core/java/android/view/InsetsSourceConsumer.java
+++ b/core/java/android/view/InsetsSourceConsumer.java
@@ -130,7 +130,10 @@
* @return Whether the control has changed from the server
*/
public boolean setControl(@Nullable InsetsSourceControl control,
- @InsetsType int[] showTypes, @InsetsType int[] hideTypes, int[] cancelTypes) {
+ @InsetsType int[] showTypes,
+ @InsetsType int[] hideTypes,
+ @InsetsType int[] cancelTypes,
+ @InsetsType int[] transientTypes) {
if (Objects.equals(mSourceControl, control)) {
if (mSourceControl != null && mSourceControl != control) {
mSourceControl.release(SurfaceControl::release);
@@ -185,6 +188,9 @@
} else {
hideTypes[0] |= mType;
}
+ if (lastControl != null && lastControl.isFake()) {
+ transientTypes[0] |= mType;
+ }
} else {
// We are gaining control, but don't need to run an animation.
// However make sure that the leash visibility is still up to date.
diff --git a/core/java/android/view/InsetsSourceControl.java b/core/java/android/view/InsetsSourceControl.java
index acbd95bf..7f2f0e8 100644
--- a/core/java/android/view/InsetsSourceControl.java
+++ b/core/java/android/view/InsetsSourceControl.java
@@ -142,6 +142,10 @@
return mInsetsHint;
}
+ public boolean isFake() {
+ return mLeash == null && Insets.NONE.equals(mInsetsHint);
+ }
+
public void setSkipAnimationOnce(boolean skipAnimation) {
mSkipAnimationOnce = skipAnimation;
}
diff --git a/core/java/android/view/autofill/AutofillFeatureFlags.java b/core/java/android/view/autofill/AutofillFeatureFlags.java
index d527007..206e47f 100644
--- a/core/java/android/view/autofill/AutofillFeatureFlags.java
+++ b/core/java/android/view/autofill/AutofillFeatureFlags.java
@@ -16,6 +16,8 @@
package android.view.autofill;
+import static android.service.autofill.Flags.improveFillDialogAconfig;
+
import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.provider.DeviceConfig;
@@ -662,7 +664,7 @@
public static boolean isImproveFillDialogEnabled() {
// TODO(b/266379948): Add condition for checking whether device has PCC first
- return DeviceConfig.getBoolean(
+ return improveFillDialogAconfig() && DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_AUTOFILL,
DEVICE_CONFIG_IMPROVE_FILL_DIALOG_ENABLED,
DEFAULT_IMPROVE_FILL_DIALOG_ENABLED);
diff --git a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
index 3a008aa..eca798d 100644
--- a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
+++ b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
@@ -490,6 +490,20 @@
}
@AnyThread
+ @RequiresPermission(Manifest.permission.TEST_INPUT_METHOD)
+ static boolean shouldShowImeSwitcherButtonForTest() {
+ final IInputMethodManager service = getService();
+ if (service == null) {
+ return false;
+ }
+ try {
+ return service.shouldShowImeSwitcherButtonForTest();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ @AnyThread
@Nullable
@RequiresPermission(value = Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)
static InputMethodSubtype getCurrentInputMethodSubtype(@UserIdInt int userId) {
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index d5f471e..e904345f 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -992,23 +992,7 @@
private void setCurrentRootViewLocked(ViewRootImpl rootView) {
final boolean wasEmpty = mCurRootView == null;
if (Flags.refactorInsetsController() && !wasEmpty && mCurRootView != rootView) {
- final int softInputMode = mCurRootView.mWindowAttributes.softInputMode;
- final int state =
- softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
- if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
- // when losing input focus (e.g., by going to another window), we reset the
- // requestedVisibleTypes of WindowInsetsController by hiding the IME
- final var statsToken = ImeTracker.forLogging().onStart(
- ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
- SoftInputShowHideReason.HIDE_WINDOW_LOST_FOCUS,
- false /* fromUser */);
- if (DEBUG) {
- Log.d(TAG, "setCurrentRootViewLocked, hiding IME because "
- + "of STATE_ALWAYS_HIDDEN");
- }
- mCurRootView.getInsetsController().hide(WindowInsets.Type.ime(),
- false /* fromIme */, statsToken);
- }
+ onImeFocusLost(mCurRootView);
}
mImeDispatcher.switchRootView(mCurRootView, rootView);
@@ -1019,6 +1003,26 @@
}
}
+ private void onImeFocusLost(@NonNull ViewRootImpl previousRootView) {
+ final int softInputMode = previousRootView.mWindowAttributes.softInputMode;
+ final int state =
+ softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
+ if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
+ // when losing input focus (e.g., by going to another window), we reset the
+ // requestedVisibleTypes of WindowInsetsController by hiding the IME
+ final var statsToken = ImeTracker.forLogging().onStart(
+ ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
+ SoftInputShowHideReason.HIDE_WINDOW_LOST_FOCUS,
+ false /* fromUser */);
+ if (DEBUG) {
+ Log.d(TAG, "onImeFocusLost, hiding IME because "
+ + "of STATE_ALWAYS_HIDDEN");
+ }
+ previousRootView.getInsetsController().hide(WindowInsets.Type.ime(),
+ false /* fromIme */, statsToken);
+ }
+ }
+
/** @hide */
public DelegateImpl getDelegate() {
return mDelegate;
@@ -4536,6 +4540,19 @@
}
/**
+ * A test API for CTS to check whether the IME Switcher button should be shown when the IME
+ * is shown.
+ *
+ * @hide
+ */
+ @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+ @TestApi
+ @RequiresPermission(Manifest.permission.TEST_INPUT_METHOD)
+ public boolean shouldShowImeSwitcherButtonForTest() {
+ return IInputMethodManagerGlobalInvoker.shouldShowImeSwitcherButtonForTest();
+ }
+
+ /**
* A test API for CTS to check whether there are any pending IME visibility requests.
*
* @return {@code true} iff there are pending IME visibility requests.
diff --git a/core/java/android/window/flags/responsible_apis.aconfig b/core/java/android/window/flags/responsible_apis.aconfig
index d5ba32c..4b5adfc 100644
--- a/core/java/android/window/flags/responsible_apis.aconfig
+++ b/core/java/android/window/flags/responsible_apis.aconfig
@@ -75,4 +75,9 @@
bug: "362575865"
}
-
+flag {
+ name: "bal_strict_mode_grace_period"
+ namespace: "responsible_apis"
+ description: "Strict mode violation triggered by grace period usage"
+ bug: "384807495"
+}
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index efbf887..9380d99 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -149,6 +149,15 @@
+ "permission.WRITE_SECURE_SETTINGS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL})")
oneway void onImeSwitchButtonClickFromSystem(int displayId);
+ /**
+ * A test API for CTS to check whether the IME Switcher button should be shown when the IME
+ * is shown.
+ */
+ @EnforcePermission("TEST_INPUT_METHOD")
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
+ + "android.Manifest.permission.TEST_INPUT_METHOD)")
+ boolean shouldShowImeSwitcherButtonForTest();
+
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
+ "android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)")
@nullable InputMethodSubtype getCurrentInputMethodSubtype(int userId);
diff --git a/core/java/com/android/internal/widget/NotificationExpandButton.java b/core/java/com/android/internal/widget/NotificationExpandButton.java
index 751cfde..b7537ed 100644
--- a/core/java/com/android/internal/widget/NotificationExpandButton.java
+++ b/core/java/com/android/internal/widget/NotificationExpandButton.java
@@ -149,8 +149,10 @@
setContentDescription(mContext.getText(contentDescriptionId));
mIconView.setImageDrawable(getContext().getDrawable(drawableId));
- // changing the expanded state can affect the number display
- updateNumber();
+ if (!notificationsRedesignTemplates()) {
+ // changing the expanded state can affect the number display
+ updateNumber();
+ }
}
private void updateNumber() {
@@ -189,6 +191,9 @@
}
private boolean shouldShowNumber() {
+ if (notificationsRedesignTemplates()) {
+ return mNumber > 1;
+ }
return !mExpanded && mNumber > 1;
}
@@ -230,7 +235,7 @@
/**
* Sets the number shown inside the expand button.
- * This only appears when the expand button is collapsed, and when greater than 1.
+ * This only appears when {@link this#shouldShowNumber()} is true.
*/
@RemotableViewMethod
public void setNumber(int number) {
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index c901ee1..cf81ba1 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -106,6 +106,7 @@
optional SettingProto display_daltonizer_saturation_level = 58 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto accessibility_key_gesture_targets = 59 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto hct_rect_prompt_status = 60 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto em_value = 61 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional Accessibility accessibility = 2;
diff --git a/core/proto/android/providers/settings/system.proto b/core/proto/android/providers/settings/system.proto
index dd9bfa5..0d99200 100644
--- a/core/proto/android/providers/settings/system.proto
+++ b/core/proto/android/providers/settings/system.proto
@@ -228,6 +228,7 @@
optional SettingProto reverse_vertical_scrolling = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto swap_primary_button = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto scrolling_acceleration = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto pointer_acceleration_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional Mouse mouse = 38;
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index ca542ba..66bc41f 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1160,20 +1160,20 @@
<string name="duration_years_shortest_future" msgid="5537464088352970388">"in <xliff:g id="COUNT">%d</xliff:g> J"</string>
<string name="duration_minutes_shortest_past" msgid="1740022450020492407">"vor <xliff:g id="COUNT">%d</xliff:g> Min."</string>
<string name="duration_hours_shortest_past" msgid="2098397414186628489">"vor <xliff:g id="COUNT">%d</xliff:g> Std."</string>
- <string name="duration_days_shortest_past" msgid="1832006037955897625">"vor <xliff:g id="COUNT">%d</xliff:g> Tg."</string>
- <string name="duration_years_shortest_past" msgid="6168256514200469291">"vor <xliff:g id="COUNT">%d</xliff:g> J."</string>
+ <string name="duration_days_shortest_past" msgid="1832006037955897625">"vor <xliff:g id="COUNT">%d</xliff:g> T"</string>
+ <string name="duration_years_shortest_past" msgid="6168256514200469291">"vor <xliff:g id="COUNT">%d</xliff:g> J"</string>
<string name="duration_minutes_medium" msgid="5891933490342643944">"<xliff:g id="COUNT">%d</xliff:g> Min."</string>
<string name="duration_hours_medium" msgid="1465359726485910115">"<xliff:g id="COUNT">%d</xliff:g> Std."</string>
- <string name="duration_days_medium" msgid="5994225628248661388">"<xliff:g id="COUNT">%d</xliff:g> Tg."</string>
- <string name="duration_years_medium" msgid="734023884353592526">"<xliff:g id="COUNT">%d</xliff:g> J."</string>
+ <string name="duration_days_medium" msgid="5994225628248661388">"<xliff:g id="COUNT">%d</xliff:g> T"</string>
+ <string name="duration_years_medium" msgid="734023884353592526">"<xliff:g id="COUNT">%d</xliff:g> J"</string>
<string name="duration_minutes_medium_future" msgid="2750894988731934402">"in <xliff:g id="COUNT">%d</xliff:g> Min."</string>
<string name="duration_hours_medium_future" msgid="6050833881463849764">"in <xliff:g id="COUNT">%d</xliff:g> Std."</string>
- <string name="duration_days_medium_future" msgid="1700821545602729963">"in <xliff:g id="COUNT">%d</xliff:g> Tg."</string>
- <string name="duration_years_medium_future" msgid="3281018940397120166">"in <xliff:g id="COUNT">%d</xliff:g> J."</string>
+ <string name="duration_days_medium_future" msgid="1700821545602729963">"in <xliff:g id="COUNT">%d</xliff:g> T"</string>
+ <string name="duration_years_medium_future" msgid="3281018940397120166">"in <xliff:g id="COUNT">%d</xliff:g> J"</string>
<string name="duration_minutes_medium_past" msgid="7400424340181947714">"vor <xliff:g id="COUNT">%d</xliff:g> Min."</string>
<string name="duration_hours_medium_past" msgid="6709441336035202617">"vor <xliff:g id="COUNT">%d</xliff:g> Std."</string>
- <string name="duration_days_medium_past" msgid="5748156261134344532">"vor <xliff:g id="COUNT">%d</xliff:g> Tg."</string>
- <string name="duration_years_medium_past" msgid="893797065424596243">"vor <xliff:g id="COUNT">%d</xliff:g> J."</string>
+ <string name="duration_days_medium_past" msgid="5748156261134344532">"vor <xliff:g id="COUNT">%d</xliff:g> T"</string>
+ <string name="duration_years_medium_past" msgid="893797065424596243">"vor <xliff:g id="COUNT">%d</xliff:g> J"</string>
<string name="duration_minutes_relative" msgid="8620337701051015593">"{count,plural, =1{Vor # Minute}other{Vor # Minuten}}"</string>
<string name="duration_hours_relative" msgid="4836449961693180253">"{count,plural, =1{Vor # Stunde}other{Vor # Stunden}}"</string>
<string name="duration_days_relative" msgid="621965767567258302">"{count,plural, =1{Vor # Tag}other{Vor # Tagen}}"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 0ddbc41..0c7d868 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1404,7 +1404,7 @@
<string name="install_carrier_app_notification_text_app_name" msgid="4086877327264106484">"Last ned <xliff:g id="APP_NAME">%1$s</xliff:g>-appen for å aktivere det nye SIM-kortet ditt"</string>
<string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Last ned appen"</string>
<string name="carrier_app_notification_title" msgid="5815477368072060250">"Et nytt SIM-kort er satt inn"</string>
- <string name="carrier_app_notification_text" msgid="6567057546341958637">"Trykk for å konfigurere"</string>
+ <string name="carrier_app_notification_text" msgid="6567057546341958637">"Konfigurer"</string>
<string name="time_picker_dialog_title" msgid="9053376764985220821">"Angi tidspunkt"</string>
<string name="date_picker_dialog_title" msgid="5030520449243071926">"Angi dato"</string>
<string name="date_time_set" msgid="4603445265164486816">"Lagre"</string>
@@ -1469,7 +1469,7 @@
<string name="ext_media_checking_notification_message" product="tv" msgid="7986154434946021415">"Analyserer medielagring"</string>
<string name="ext_media_new_notification_title" msgid="3517407571407687677">"Ny <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_new_notification_title" product="automotive" msgid="9085349544984742727">"<xliff:g id="NAME">%s</xliff:g> fungerer ikke"</string>
- <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Trykk for å konfigurere"</string>
+ <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Konfigurer"</string>
<string name="ext_media_new_notification_message" product="tv" msgid="216863352100263668">"Velg for å konfigurere"</string>
<string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"Du må muligens reformatere enheten. Trykk for å løse ut."</string>
<string name="ext_media_ready_notification_message" msgid="7509496364380197369">"For lagring av bilder, videoer, musikk med mer"</string>
@@ -1481,7 +1481,7 @@
<string name="ext_media_unmountable_notification_message" product="automotive" msgid="2274596120715020680">"Du må muligens reformatere enheten. Trykk for å løse ut."</string>
<string name="ext_media_unsupported_notification_title" msgid="3487534182861251401">"<xliff:g id="NAME">%s</xliff:g> er oppdaget"</string>
<string name="ext_media_unsupported_notification_title" product="automotive" msgid="6004193172658722381">"<xliff:g id="NAME">%s</xliff:g> fungerer ikke"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"Trykk for å konfigurere."</string>
+ <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"Konfigurer."</string>
<string name="ext_media_unsupported_notification_message" product="tv" msgid="1595482802187036532">"Velg for å konfigurere <xliff:g id="NAME">%s</xliff:g> i et format som støttes."</string>
<string name="ext_media_unsupported_notification_message" product="automotive" msgid="3412494732736336330">"Du må muligens reformatere enheten"</string>
<string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> ble uventet fjernet"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index c9a922e..3414644 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -1019,7 +1019,7 @@
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"तपाईंको SIM कार्ड सदाका लागि डिएक्टिभेट गरिएको छ।\n आफ्नो वायरलेस सेवा प्रदायकलाई सम्पर्क गरी अर्को SIM कार्ड प्राप्त गर्नुहोस्।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"अघिल्लो ट्रयाक"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"अर्को ट्रयाक"</string>
- <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"रोक्नुहोस्"</string>
+ <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"पज गर्नुहोस्"</string>
<string name="lockscreen_transport_play_description" msgid="106868788691652733">"चलाउनुहोस्"</string>
<string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"रोक्नुहोस्"</string>
<string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"दोहोर्याउनुहोस्"</string>
diff --git a/core/res/res/values/config_display.xml b/core/res/res/values/config_display.xml
index c458d0e9..b6500b7 100644
--- a/core/res/res/values/config_display.xml
+++ b/core/res/res/values/config_display.xml
@@ -31,5 +31,8 @@
<bool name="config_evenDimmerEnabled">false</bool>
<!-- Jar file path to look for PluginProvider -->
<string name="config_pluginsProviderJarPath"/>
-
+ <!-- Indicate available EM_VALUE options -->
+ <integer-array name="config_availableEMValueOptions">
+ <item>0</item> <!-- DEFAULT -->
+ </integer-array>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 6ee2839..4789624 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1309,6 +1309,7 @@
<java-symbol type="array" name="config_securityStatePackages" />
<java-symbol type="array" name="stoppable_fgs_system_apps" />
<java-symbol type="array" name="vendor_stoppable_fgs_system_apps" />
+ <java-symbol type="array" name="config_availableEMValueOptions" />
<java-symbol type="drawable" name="default_wallpaper" />
<java-symbol type="drawable" name="default_lock_wallpaper" />
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 3ef3dfd..d7c4212 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -73,6 +73,7 @@
"frameworks-core-util-lib",
"mockwebserver",
"guava",
+ "guava-android-testlib",
"android.app.usage.flags-aconfig-java",
"android.view.accessibility.flags-aconfig-java",
"androidx.core_core",
diff --git a/core/tests/coretests/src/android/app/BackgroundStartPrivilegesTest.java b/core/tests/coretests/src/android/app/BackgroundStartPrivilegesTest.java
index 931d646..f1925bb 100644
--- a/core/tests/coretests/src/android/app/BackgroundStartPrivilegesTest.java
+++ b/core/tests/coretests/src/android/app/BackgroundStartPrivilegesTest.java
@@ -29,6 +29,8 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.google.common.testing.EqualsTester;
+
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -122,12 +124,16 @@
@Test
public void backgroundStartPrivilege_equals_works() {
- assertThat(NONE).isEqualTo(NONE);
- assertThat(ALLOW_BAL).isEqualTo(ALLOW_BAL);
- assertThat(ALLOW_FGS).isEqualTo(ALLOW_FGS);
- assertThat(BSP_ALLOW_A).isEqualTo(BSP_ALLOW_A);
- assertThat(NONE).isNotEqualTo(ALLOW_BAL);
- assertThat(ALLOW_FGS).isNotEqualTo(ALLOW_BAL);
- assertThat(BSP_ALLOW_A).isNotEqualTo(BSP_ALLOW_B);
+ Binder token = new Binder();
+ Binder anotherToken = new Binder();
+ new EqualsTester()
+ .addEqualityGroup(NONE)
+ .addEqualityGroup(ALLOW_BAL)
+ .addEqualityGroup(ALLOW_FGS)
+ .addEqualityGroup(BackgroundStartPrivileges.allowBackgroundActivityStarts(token),
+ BackgroundStartPrivileges.allowBackgroundActivityStarts(token))
+ .addEqualityGroup(
+ BackgroundStartPrivileges.allowBackgroundActivityStarts(anotherToken))
+ .testEquals();
}
}
diff --git a/core/tests/coretests/src/android/hardware/display/DisplayTopologyTest.kt b/core/tests/coretests/src/android/hardware/display/DisplayTopologyTest.kt
index 255d09b..008db5e 100644
--- a/core/tests/coretests/src/android/hardware/display/DisplayTopologyTest.kt
+++ b/core/tests/coretests/src/android/hardware/display/DisplayTopologyTest.kt
@@ -22,6 +22,7 @@
import android.hardware.display.DisplayTopology.TreeNode.POSITION_LEFT
import android.hardware.display.DisplayTopology.TreeNode.POSITION_TOP
import android.hardware.display.DisplayTopology.TreeNode.POSITION_RIGHT
+import android.util.SparseArray
import android.view.Display
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -642,13 +643,65 @@
verifyDisplay(
root.children[0], id = 1, width = 30f, height = 30f, POSITION_RIGHT, offset = 10f,
noOfChildren = 1)
- // In the case of corner adjacency, we prefer a left/right attachment.
verifyDisplay(
root.children[0].children[0], id = 2, width = 29.5f, height = 30f, POSITION_BOTTOM,
offset = 30f, noOfChildren = 0)
}
@Test
+ fun rearrange_preferLessShiftInOverlapDimension() {
+ val root = rearrangeRects(
+ // '*' represents overlap
+ // Clamping requires moving display 2 and 1 slightly to avoid overlap with 0. We should
+ // shift the minimal amount to avoid overlap - e.g. display 2 shifts left (10 pixels)
+ // rather than up (20 pixels).
+ // 222
+ // 22*00
+ // 22*00
+ // 0**1
+ // 111
+ // 111
+ RectF(20f, 10f, 50f, 40f),
+ RectF(30f, 30f, 60f, 60f),
+ RectF(0f, 0f, 30f, 30f),
+ )
+
+ verifyDisplay(root, id = 0, width = 30f, height = 30f, noOfChildren = 2)
+ verifyDisplay(
+ root.children[0], id = 1, width = 30f, height = 30f, POSITION_BOTTOM, offset = 10f,
+ noOfChildren = 0)
+ verifyDisplay(
+ root.children[1], id = 2, width = 30f, height = 30f, POSITION_LEFT, offset = -10f,
+ noOfChildren = 0)
+ }
+
+ @Test
+ fun rearrange_doNotAttachCornerForShortOverlapOnLongEdgeBottom() {
+ val root = rearrangeRects(
+ RectF(0f, 0f, 1920f, 1080f),
+ RectF(1850f, 1070f, 3770f, 2150f),
+ )
+
+ verifyDisplay(root, id = 0, width = 1920f, height = 1080f, noOfChildren = 1)
+ verifyDisplay(
+ root.children[0], id = 1, width = 1920f, height = 1080f, POSITION_BOTTOM,
+ offset = 1850f, noOfChildren = 0)
+ }
+
+ @Test
+ fun rearrange_doNotAttachCornerForShortOverlapOnLongEdgeLeft() {
+ val root = rearrangeRects(
+ RectF(0f, 0f, 1080f, 1920f),
+ RectF(-1070f, -1880f, 10f, 40f),
+ )
+
+ verifyDisplay(root, id = 0, width = 1080f, height = 1920f, noOfChildren = 1)
+ verifyDisplay(
+ root.children[0], id = 1, width = 1080f, height = 1920f, POSITION_LEFT,
+ offset = -1880f, noOfChildren = 0)
+ }
+
+ @Test
fun copy() {
val display1 = DisplayTopology.TreeNode(/* displayId= */ 1, /* width= */ 200f,
/* height= */ 600f, /* position= */ 0, /* offset= */ 0f)
@@ -687,6 +740,34 @@
offset = 0f, noOfChildren = 0)
}
+ @Test
+ fun coordinates() {
+ val display1 = DisplayTopology.TreeNode(/* displayId= */ 1, /* width= */ 200f,
+ /* height= */ 600f, /* position= */ 0, /* offset= */ 0f)
+
+ val display2 = DisplayTopology.TreeNode(/* displayId= */ 2, /* width= */ 600f,
+ /* height= */ 200f, POSITION_RIGHT, /* offset= */ 0f)
+ display1.addChild(display2)
+
+ val display3 = DisplayTopology.TreeNode(/* displayId= */ 3, /* width= */ 600f,
+ /* height= */ 200f, POSITION_RIGHT, /* offset= */ 400f)
+ display1.addChild(display3)
+
+ val display4 = DisplayTopology.TreeNode(/* displayId= */ 4, /* width= */ 200f,
+ /* height= */ 600f, POSITION_RIGHT, /* offset= */ 0f)
+ display2.addChild(display4)
+
+ topology = DisplayTopology(display1, /* primaryDisplayId= */ 1)
+ val coords = topology.absoluteBounds
+
+ val expectedCoords = SparseArray<RectF>()
+ expectedCoords.append(1, RectF(0f, 0f, 200f, 600f))
+ expectedCoords.append(2, RectF(200f, 0f, 800f, 200f))
+ expectedCoords.append(3, RectF(200f, 400f, 800f, 600f))
+ expectedCoords.append(4, RectF(800f, 0f, 1000f, 600f))
+ assertThat(coords.contentEquals(expectedCoords)).isTrue()
+ }
+
/**
* Runs the rearrange algorithm and returns the resulting tree as a list of nodes, with the
* root at index 0. The number of nodes is inferred from the number of positions passed.
diff --git a/core/tests/coretests/src/android/security/advancedprotection/AdvancedProtectionManagerTest.java b/core/tests/coretests/src/android/security/advancedprotection/AdvancedProtectionManagerTest.java
deleted file mode 100644
index 45864b0..0000000
--- a/core/tests/coretests/src/android/security/advancedprotection/AdvancedProtectionManagerTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.security.advancedprotection;
-
-import static android.security.advancedprotection.AdvancedProtectionManager.ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG;
-import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_FEATURE;
-import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_TYPE;
-import static android.security.advancedprotection.AdvancedProtectionManager.FEATURE_ID_DISALLOW_CELLULAR_2G;
-import static android.security.advancedprotection.AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION;
-import static android.security.advancedprotection.AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_DISABLED_SETTING;
-import static android.security.advancedprotection.AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_UNKNOWN;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThrows;
-
-import android.content.Intent;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class AdvancedProtectionManagerTest {
- private static final int FEATURE_ID_INVALID = -1;
- private static final int SUPPORT_DIALOG_TYPE_INVALID = -1;
-
- @Test
- public void testCreateSupportIntent_validFeature_validTypeUnknown_createsIntent() {
- Intent intent = AdvancedProtectionManager.createSupportIntent(
- FEATURE_ID_DISALLOW_CELLULAR_2G, SUPPORT_DIALOG_TYPE_UNKNOWN);
-
- assertEquals(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG, intent.getAction());
- assertEquals(FEATURE_ID_DISALLOW_CELLULAR_2G, intent.getIntExtra(
- EXTRA_SUPPORT_DIALOG_FEATURE, FEATURE_ID_INVALID));
- assertEquals(SUPPORT_DIALOG_TYPE_UNKNOWN, intent.getIntExtra(EXTRA_SUPPORT_DIALOG_TYPE,
- SUPPORT_DIALOG_TYPE_INVALID));
- }
-
- @Test
- public void testCreateSupportIntent_validFeature_validTypeBlockedInteraction_createsIntent() {
- Intent intent = AdvancedProtectionManager.createSupportIntent(
- FEATURE_ID_DISALLOW_CELLULAR_2G, SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION);
-
- assertEquals(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG, intent.getAction());
- assertEquals(FEATURE_ID_DISALLOW_CELLULAR_2G, intent.getIntExtra(
- EXTRA_SUPPORT_DIALOG_FEATURE, FEATURE_ID_INVALID));
- assertEquals(SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION, intent.getIntExtra(
- EXTRA_SUPPORT_DIALOG_TYPE, SUPPORT_DIALOG_TYPE_INVALID));
- }
-
- @Test
- public void testCreateSupportIntent_validFeature_validTypeDisabledSetting_createsIntent() {
- Intent intent = AdvancedProtectionManager.createSupportIntent(
- FEATURE_ID_DISALLOW_CELLULAR_2G, SUPPORT_DIALOG_TYPE_DISABLED_SETTING);
-
- assertEquals(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG, intent.getAction());
- assertEquals(FEATURE_ID_DISALLOW_CELLULAR_2G, intent.getIntExtra(
- EXTRA_SUPPORT_DIALOG_FEATURE, FEATURE_ID_INVALID));
- assertEquals(SUPPORT_DIALOG_TYPE_DISABLED_SETTING, intent.getIntExtra(
- EXTRA_SUPPORT_DIALOG_TYPE, SUPPORT_DIALOG_TYPE_INVALID));
- }
-
- @Test
- public void testCreateSupportIntent_validFeature_invalidType_throwsIllegalArgument() {
- assertThrows(IllegalArgumentException.class, () ->
- AdvancedProtectionManager.createSupportIntent(FEATURE_ID_DISALLOW_CELLULAR_2G,
- SUPPORT_DIALOG_TYPE_INVALID));
- }
-
- @Test
- public void testCreateSupportIntent_invalidFeature_validType_throwsIllegalArgument() {
- assertThrows(IllegalArgumentException.class, () ->
- AdvancedProtectionManager.createSupportIntent(FEATURE_ID_INVALID,
- SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION));
- }
-
- @Test
- public void testCreateSupportIntent_invalidFeature_invalidType_throwsIllegalArgument() {
- assertThrows(IllegalArgumentException.class, () ->
- AdvancedProtectionManager.createSupportIntent(FEATURE_ID_INVALID,
- SUPPORT_DIALOG_TYPE_INVALID));
- }
-}
diff --git a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
index 248db65..4a54f6b 100644
--- a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
@@ -133,7 +133,7 @@
// Called once through the show flow.
verify(mController).applyAnimation(
eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(true) /* fromIme */,
- eq(statsToken));
+ eq(false) /* skipsCallbacks */, eq(statsToken));
// set control and verify visibility is applied.
InsetsSourceControl control = new InsetsSourceControl(ID_IME,
@@ -142,10 +142,10 @@
// IME show animation should be triggered when control becomes available.
verify(mController).applyAnimation(
eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
verify(mController, never()).applyAnimation(
eq(WindowInsets.Type.ime()), eq(false) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
});
}
@@ -163,7 +163,7 @@
// Called once through the show flow.
verify(mController).applyAnimation(
eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(true) /* fromIme */,
- eq(statsToken));
+ eq(false) /* skipsCallbacks */, eq(statsToken));
// Clear previous invocations to verify this is never called with control without leash.
clearInvocations(mController);
@@ -175,10 +175,10 @@
// as we have no leash.
verify(mController, never()).applyAnimation(
eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
verify(mController, never()).applyAnimation(
eq(WindowInsets.Type.ime()), eq(false) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
// set control with leash and verify visibility is applied.
InsetsSourceControl controlWithLeash = new InsetsSourceControl(ID_IME,
@@ -187,10 +187,10 @@
// IME show animation should be triggered when control with leash becomes available.
verify(mController).applyAnimation(
eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
verify(mController, never()).applyAnimation(
eq(WindowInsets.Type.ime()), eq(false) /* show */, eq(false) /* fromIme */,
- and(not(eq(statsToken)), notNull()));
+ eq(false) /* skipsCallbacks */, and(not(eq(statsToken)), notNull()));
});
}
@@ -223,7 +223,8 @@
// Called once through the show flow.
verify(mController).applyAnimation(eq(WindowInsets.Type.ime()),
eq(true) /* show */, eq(true) /* fromIme */,
- eq(false) /* skipAnim */, eq(statsToken));
+ eq(false) /* skipsAnim */, eq(false) /* skipsCallbacks */,
+ eq(statsToken));
}
// set control and verify visibility is applied.
@@ -241,7 +242,8 @@
// so the statsToken won't match.
verify(mController).applyAnimation(eq(WindowInsets.Type.ime()),
eq(true) /* show */, eq(false) /* fromIme */,
- eq(expectSkipAnim) /* skipAnim */, and(not(eq(statsToken)), notNull()));
+ eq(expectSkipAnim) /* skipsAnim */, eq(false) /* skipsCallbacks */,
+ and(not(eq(statsToken)), notNull()));
}
// If previously hasViewFocus is false, verify when requesting the IME visible next
@@ -252,14 +254,16 @@
// Called once through the show flow.
verify(mController).applyAnimation(eq(WindowInsets.Type.ime()),
eq(true) /* show */, eq(true) /* fromIme */,
- eq(false) /* skipAnim */, eq(statsTokenNext));
+ eq(false) /* skipsAnim */, eq(false) /* skipsCallbacks */,
+ eq(statsTokenNext));
mController.onControlsChanged(new InsetsSourceControl[]{ control });
// Verify IME show animation should be triggered when control becomes available and
// the animation will be skipped by getAndClearSkipAnimationOnce invoked.
verify(control).getAndClearSkipAnimationOnce();
verify(mController).applyAnimation(eq(WindowInsets.Type.ime()),
eq(true) /* show */, eq(false) /* fromIme */,
- eq(true) /* skipAnim */, and(not(eq(statsToken)), notNull()));
+ eq(true) /* skipsAnim */, eq(false) /* skipsCallbacks */,
+ and(not(eq(statsToken)), notNull()));
}
});
}
diff --git a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
index d7f6a29..905d897 100644
--- a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
+++ b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
@@ -100,14 +100,14 @@
topConsumer.setControl(
new InsetsSourceControl(ID_STATUS_BAR, WindowInsets.Type.statusBars(),
mStatusLeash, true, new Point(0, 0), Insets.of(0, 100, 0, 0)),
- new int[1], new int[1], new int[1]);
+ new int[1], new int[1], new int[1], new int[1]);
InsetsSourceConsumer navConsumer = new InsetsSourceConsumer(ID_NAVIGATION_BAR,
WindowInsets.Type.navigationBars(), mInsetsState, mMockController);
navConsumer.setControl(
new InsetsSourceControl(ID_NAVIGATION_BAR, WindowInsets.Type.navigationBars(),
mNavLeash, true, new Point(400, 0), Insets.of(0, 0, 100, 0)),
- new int[1], new int[1], new int[1]);
+ new int[1], new int[1], new int[1], new int[1]);
mMockController.setRequestedVisibleTypes(0, WindowInsets.Type.navigationBars());
navConsumer.applyLocalVisibilityOverride();
diff --git a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
index 3a8f7ee..45d66e8 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
@@ -117,7 +117,7 @@
mConsumer.setControl(
new InsetsSourceControl(ID_STATUS_BAR, statusBars(), mLeash,
true /* initialVisible */, new Point(), Insets.NONE),
- new int[1], new int[1], new int[1]);
+ new int[1], new int[1], new int[1], new int[1]);
}
@Test
@@ -129,7 +129,7 @@
newControl.setInsetsHint(Insets.of(0, 0, 0, 100));
int[] cancelTypes = {0};
- mConsumer.setControl(newControl, new int[1], new int[1], cancelTypes);
+ mConsumer.setControl(newControl, new int[1], new int[1], cancelTypes, new int[1]);
assertEquals(statusBars(), cancelTypes[0]);
});
@@ -196,7 +196,7 @@
@Test
public void testRestore() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
- mConsumer.setControl(null, new int[1], new int[1], new int[1]);
+ mConsumer.setControl(null, new int[1], new int[1], new int[1], new int[1]);
mSurfaceParamsApplied = false;
mController.setRequestedVisibleTypes(0 /* visibleTypes */, statusBars());
assertFalse(mSurfaceParamsApplied);
@@ -204,7 +204,7 @@
mConsumer.setControl(
new InsetsSourceControl(ID_STATUS_BAR, statusBars(), mLeash,
true /* initialVisible */, new Point(), Insets.NONE),
- new int[1], hideTypes, new int[1]);
+ new int[1], hideTypes, new int[1], new int[1]);
assertEquals(statusBars(), hideTypes[0]);
assertFalse(mRemoveSurfaceCalled);
});
@@ -214,7 +214,7 @@
public void testRestore_noAnimation() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
mController.setRequestedVisibleTypes(0 /* visibleTypes */, statusBars());
- mConsumer.setControl(null, new int[1], new int[1], new int[1]);
+ mConsumer.setControl(null, new int[1], new int[1], new int[1], new int[1]);
mLeash = new SurfaceControl.Builder(mSession)
.setName("testSurface")
.build();
@@ -223,7 +223,7 @@
mConsumer.setControl(
new InsetsSourceControl(ID_STATUS_BAR, statusBars(), mLeash,
false /* initialVisible */, new Point(), Insets.NONE),
- new int[1], hideTypes, new int[1]);
+ new int[1], hideTypes, new int[1], new int[1]);
assertTrue(mRemoveSurfaceCalled);
assertEquals(0, hideTypes[0]);
});
@@ -252,7 +252,7 @@
// Initial IME insets source control with its leash.
imeConsumer.setControl(new InsetsSourceControl(ID_IME, ime(), mLeash,
false /* initialVisible */, new Point(), Insets.NONE), new int[1], new int[1],
- new int[1]);
+ new int[1], new int[1]);
mSurfaceParamsApplied = false;
// Verify when the app requests controlling show IME animation, the IME leash
@@ -262,7 +262,7 @@
assertEquals(ANIMATION_TYPE_USER, insetsController.getAnimationType(ime()));
imeConsumer.setControl(new InsetsSourceControl(ID_IME, ime(), mLeash,
true /* initialVisible */, new Point(), Insets.NONE), new int[1], new int[1],
- new int[1]);
+ new int[1], new int[1]);
assertFalse(mSurfaceParamsApplied);
});
}
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index 07cc0e7..a975682 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -34,8 +34,8 @@
<string name="dock_forced_resizable" msgid="7429086980048964687">"App sal dalk nie met verdeelde skerm werk nie"</string>
<string name="dock_non_resizeble_failed_to_dock_text" msgid="2733543750291266047">"App steun nie verdeelde skerm nie"</string>
<string name="dock_multi_instances_not_supported_text" msgid="5011042177901502928">"Hierdie app kan net in 1 venster oopgemaak word"</string>
- <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"Program sal dalk nie op \'n sekondêre skerm werk nie."</string>
- <string name="activity_launch_on_secondary_display_failed_text" msgid="4226485344988071769">"Program steun nie begin op sekondêre skerms nie."</string>
+ <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"App sal dalk nie op \'n sekondêre skerm werk nie."</string>
+ <string name="activity_launch_on_secondary_display_failed_text" msgid="4226485344988071769">"App steun nie begin op sekondêre skerms nie."</string>
<string name="accessibility_divider" msgid="6407584574218956849">"Skermverdeler"</string>
<string name="divider_title" msgid="1963391955593749442">"Skermverdeler"</string>
<string name="accessibility_action_divider_left_full" msgid="1792313656305328536">"Volskerm links"</string>
@@ -78,7 +78,7 @@
<string name="bubbles_user_education_title" msgid="2112319053732691899">"Klets met borrels"</string>
<string name="bubbles_user_education_description" msgid="4215862563054175407">"Nuwe gesprekke verskyn as swerwende ikone, of borrels Tik op borrel om dit oop te maak. Sleep om dit te skuif."</string>
<string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Beheer borrels enige tyd"</string>
- <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Tik op Bestuur om borrels vanaf hierdie program af te skakel"</string>
+ <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Tik op Bestuur om borrels vanaf hierdie app af te skakel"</string>
<string name="bubbles_user_education_got_it" msgid="3382046149225428296">"Het dit"</string>
<string name="bubble_overflow_empty_title" msgid="2397251267073294968">"Geen onlangse borrels nie"</string>
<string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"Onlangse borrels en borrels wat toegemaak is, sal hier verskyn"</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/common/ToggleTaskSizeUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/common/ToggleTaskSizeUtils.kt
index f6ebf72..6e12bf4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/common/ToggleTaskSizeUtils.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/common/ToggleTaskSizeUtils.kt
@@ -90,10 +90,10 @@
Source.HEADER_BUTTON_TO_RESTORE -> Cuj.CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW
Source.KEYBOARD_SHORTCUT -> null
Source.HEADER_DRAG_TO_TOP -> null
- Source.MAXIMIZE_MENU_TO_MAXIMIZE -> null
- Source.MAXIMIZE_MENU_TO_RESTORE -> null
- Source.DOUBLE_TAP_TO_MAXIMIZE -> null
- Source.DOUBLE_TAP_TO_RESTORE -> null
+ Source.MAXIMIZE_MENU_TO_MAXIMIZE -> Cuj.CUJ_DESKTOP_MODE_MAXIMIZE_WINDOW
+ Source.MAXIMIZE_MENU_TO_RESTORE -> Cuj.CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW
+ Source.DOUBLE_TAP_TO_MAXIMIZE -> Cuj.CUJ_DESKTOP_MODE_MAXIMIZE_WINDOW
+ Source.DOUBLE_TAP_TO_RESTORE -> Cuj.CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW
}
/** The direction to which the task is being resized. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
index 96839ce..88cc94c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
@@ -25,6 +25,7 @@
import android.graphics.PointF
import android.graphics.Rect
import android.os.Trace
+import android.view.Choreographer
import android.view.Display
import android.view.LayoutInflater
import android.view.SurfaceControl
@@ -331,6 +332,7 @@
.setPosition(icon, iconPosition.x, iconPosition.y)
.setPosition(parentSurface, newBounds.left.toFloat(), newBounds.top.toFloat())
.setWindowCrop(parentSurface, newBounds.width(), newBounds.height())
+ .setFrameTimeline(Choreographer.getInstance().vsyncId)
}
/**
diff --git a/media/java/android/media/quality/MediaQualityManager.java b/media/java/android/media/quality/MediaQualityManager.java
index 7e87462..166b388 100644
--- a/media/java/android/media/quality/MediaQualityManager.java
+++ b/media/java/android/media/quality/MediaQualityManager.java
@@ -276,16 +276,19 @@
/**
* Sets preferred default picture profile.
*
- * @param id the ID of the default profile. {@code null} to unset the default profile.
+ * @param pictureProfileId the ID of the default profile. {@code null} to unset the default
+ * profile.
* @return {@code true} if it's set successfully; {@code false} otherwise.
*
+ * @see PictureProfile#getProfileId()
+ *
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE)
- public boolean setDefaultPictureProfile(@Nullable String id) {
+ public boolean setDefaultPictureProfile(@Nullable String pictureProfileId) {
try {
- return mService.setDefaultPictureProfile(id, mUserHandle);
+ return mService.setDefaultPictureProfile(pictureProfileId, mUserHandle);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -467,16 +470,19 @@
/**
* Sets preferred default sound profile.
*
- * @param id the ID of the default profile. {@code null} to unset the default profile.
+ * @param soundProfileId the ID of the default profile. {@code null} to unset the default
+ * profile.
* @return {@code true} if it's set successfully; {@code false} otherwise.
*
+ * @see SoundProfile#getProfileId()
+ *
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_SOUND_QUALITY_SERVICE)
- public boolean setDefaultSoundProfile(@Nullable String id) {
+ public boolean setDefaultSoundProfile(@Nullable String soundProfileId) {
try {
- return mService.setDefaultSoundProfile(id, mUserHandle);
+ return mService.setDefaultSoundProfile(soundProfileId, mUserHandle);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index db0704f..5c07f3a 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -36,12 +36,9 @@
<string name="title_nearby_device_streaming" msgid="2727103756701741359">"هل تريد السماح لـ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" ببث التطبيقات من <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> إلى <xliff:g id="DEVICE_NAME">%3$s</xliff:g>؟"</string>
<string name="summary_nearby_device_streaming" msgid="70434958004946884">"سيتمكّن \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" من الوصول إلى كل المحتوى المعروض أو الذي يتم تشغيله على <xliff:g id="DEVICE_NAME_1">%3$s</xliff:g>، بما في ذلك الملفات الصوتية والصور ومعلومات الدفع وكلمات المرور والرسائل.<br/><br/>سيتمكّن \"<xliff:g id="APP_NAME_2">%1$s</xliff:g>\" من بثّ التطبيقات إلى <xliff:g id="DEVICE_NAME_3">%3$s</xliff:g> إلى أن توقِف إمكانية استخدام هذا الإذن."</string>
<string name="helper_summary_nearby_device_streaming" msgid="4712712177819370967">"يطلب \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" الحصول على إذن نيابةً عن <xliff:g id="DEVICE_NAME">%2$s</xliff:g> لبثّ التطبيقات من <xliff:g id="DEVICE_TYPE">%3$s</xliff:g>"</string>
- <!-- no translation found for title_sensor_device_streaming (2395553261097861497) -->
- <skip />
- <!-- no translation found for summary_sensor_device_streaming (3413105061195145547) -->
- <skip />
- <!-- no translation found for helper_summary_sensor_device_streaming (8860174545653786353) -->
- <skip />
+ <string name="title_sensor_device_streaming" msgid="2395553261097861497">"يُرجى تأكيد سماحك لتطبيق <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ببثّ المحتوى الصوتي وميزات النظام بين <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> و<strong><xliff:g id="DEVICE_NAME">%3$s</xliff:g></strong>"</string>
+ <string name="summary_sensor_device_streaming" msgid="3413105061195145547">"سيتمكّن \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" من الوصول إلى كل المحتوى الذي يتم تشغيله على \"<xliff:g id="DEVICE_NAME_1">%3$s</xliff:g>\".<br/><br/>سيتمكّن \"<xliff:g id="APP_NAME_2">%1$s</xliff:g>\" من بثّ المحتوى الصوتي إلى \"<xliff:g id="DEVICE_NAME_3">%3$s</xliff:g>\" إلى أن يتم إيقاف استخدام هذا الإذن."</string>
+ <string name="helper_summary_sensor_device_streaming" msgid="8860174545653786353">"يطلب \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" الحصول على إذن نيابةً عن \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" لبثّ المحتوى الصوتي وميزات النظام بين أجهزتك."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"جهاز"</string>
<string name="summary_generic" msgid="1761976003668044801">"سيتمكّن هذا التطبيق من مزامنة المعلومات، مثل اسم المتصل، بين هاتفك والجهاز المحدّد."</string>
<string name="consent_yes" msgid="8344487259618762872">"السماح"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index f4a95a4..7224896 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -36,12 +36,9 @@
<string name="title_nearby_device_streaming" msgid="2727103756701741359">"क्या <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> को आपके <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> में मौजूद ऐप्लिकेशन को <strong><xliff:g id="DEVICE_NAME">%3$s</xliff:g></strong> पर स्ट्रीम करने की अनुमति देनी है?"</string>
<string name="summary_nearby_device_streaming" msgid="70434958004946884">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> के पास ऐसे किसी भी कॉन्टेंट का ऐक्सेस होगा जो आपके <xliff:g id="DEVICE_NAME_1">%3$s</xliff:g> पर दिखता है या चलाया जाता है. इसमें ऑडियो, फ़ोटो, पेमेंट संबंधी जानकारी, पासवर्ड, और मैसेज शामिल हैं.<br/><br/><xliff:g id="APP_NAME_2">%1$s</xliff:g>, <xliff:g id="DEVICE_NAME_3">%3$s</xliff:g> पर तब ऐप्लिकेशन को स्ट्रीम कर सकेगा, जब तक आप यह अनुमति हटा न दें."</string>
<string name="helper_summary_nearby_device_streaming" msgid="4712712177819370967">"<xliff:g id="APP_NAME">%1$s</xliff:g> को <xliff:g id="DEVICE_NAME">%2$s</xliff:g> की ओर से, आपके <xliff:g id="DEVICE_TYPE">%3$s</xliff:g> में मौजूद ऐप्लिकेशन को स्ट्रीम करने की अनुमति चाहिए"</string>
- <!-- no translation found for title_sensor_device_streaming (2395553261097861497) -->
- <skip />
- <!-- no translation found for summary_sensor_device_streaming (3413105061195145547) -->
- <skip />
- <!-- no translation found for helper_summary_sensor_device_streaming (8860174545653786353) -->
- <skip />
+ <string name="title_sensor_device_streaming" msgid="2395553261097861497">"क्या <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> को आपके <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> और <strong><xliff:g id="DEVICE_NAME">%3$s</xliff:g></strong> पर ऑडियो और सिस्टम की सुविधाएं स्ट्रीम करने की अनुमति देनी है?"</string>
+ <string name="summary_sensor_device_streaming" msgid="3413105061195145547">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> के पास, आपके <xliff:g id="DEVICE_NAME_1">%3$s</xliff:g> पर चलाए जाने वाले हर तरह के कॉन्टेंट का ऐक्सेस होगा.<br/><br/><xliff:g id="APP_NAME_2">%1$s</xliff:g>, <xliff:g id="DEVICE_NAME_3">%3$s</xliff:g> पर तब तक ऑडियो स्ट्रीम कर पाएगा, जब तक आप इस अनुमति को हटा न दें."</string>
+ <string name="helper_summary_sensor_device_streaming" msgid="8860174545653786353">"<xliff:g id="DEVICE_NAME">%2$s</xliff:g> की ओर से <xliff:g id="APP_NAME">%1$s</xliff:g>, आपके डिवाइस की ऑडियो और सिस्टम की सुविधाओं को आपके दूसरे डिवाइसों पर स्ट्रीम करने की अनुमति मांग रहा है."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"डिवाइस"</string>
<string name="summary_generic" msgid="1761976003668044801">"यह ऐप्लिकेशन, आपके फ़ोन और चुने हुए डिवाइस के बीच जानकारी सिंक करेगा. जैसे, कॉल करने वाले व्यक्ति का नाम"</string>
<string name="consent_yes" msgid="8344487259618762872">"अनुमति दें"</string>
diff --git a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
index 5661868..0afec99 100644
--- a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
@@ -42,7 +42,7 @@
<string name="choose_create_option_passkey_title" msgid="8762295821604276511">"Želite da napravite pristupni ključ da biste se prijavili u <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="choose_create_option_password_title" msgid="4481366993598649224">"Želite da sačuvate lozinku da biste se prijavili u <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="choose_create_option_sign_in_title" msgid="7092914088455358079">"Želite da sačuvate podatke za prijavljivanje za: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
- <string name="passkey" msgid="632353688396759522">"pristupni kôd"</string>
+ <string name="passkey" msgid="632353688396759522">"pristupni ključ"</string>
<string name="password" msgid="6738570945182936667">"lozinka"</string>
<string name="passkeys" msgid="5733880786866559847">"pristupni kodovi"</string>
<string name="passwords" msgid="5419394230391253816">"lozinke"</string>
@@ -61,7 +61,7 @@
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Pristupnih kodova: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> akreditiva"</string>
- <string name="passkey_before_subtitle" msgid="2448119456208647444">"Pristupni kôd"</string>
+ <string name="passkey_before_subtitle" msgid="2448119456208647444">"Pristupni ključ"</string>
<string name="another_device" msgid="5147276802037801217">"Drugi uređaj"</string>
<string name="other_password_manager" msgid="565790221427004141">"Drugi menadžeri lozinki"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zatvorite tabelu"</string>
diff --git a/packages/CredentialManager/res/values-sr/strings.xml b/packages/CredentialManager/res/values-sr/strings.xml
index d28cefe..8e823c4 100644
--- a/packages/CredentialManager/res/values-sr/strings.xml
+++ b/packages/CredentialManager/res/values-sr/strings.xml
@@ -42,7 +42,7 @@
<string name="choose_create_option_passkey_title" msgid="8762295821604276511">"Желите да направите приступни кључ да бисте се пријавили у <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="choose_create_option_password_title" msgid="4481366993598649224">"Желите да сачувате лозинку да бисте се пријавили у <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="choose_create_option_sign_in_title" msgid="7092914088455358079">"Желите да сачувате податке за пријављивање за: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
- <string name="passkey" msgid="632353688396759522">"приступни кôд"</string>
+ <string name="passkey" msgid="632353688396759522">"приступни кључ"</string>
<string name="password" msgid="6738570945182936667">"лозинка"</string>
<string name="passkeys" msgid="5733880786866559847">"приступни кодови"</string>
<string name="passwords" msgid="5419394230391253816">"лозинке"</string>
@@ -61,7 +61,7 @@
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Приступних кодова: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> акредитива"</string>
- <string name="passkey_before_subtitle" msgid="2448119456208647444">"Приступни кôд"</string>
+ <string name="passkey_before_subtitle" msgid="2448119456208647444">"Приступни кључ"</string>
<string name="another_device" msgid="5147276802037801217">"Други уређај"</string>
<string name="other_password_manager" msgid="565790221427004141">"Други менаџери лозинки"</string>
<string name="close_sheet" msgid="1393792015338908262">"Затворите табелу"</string>
diff --git a/packages/CredentialManager/wear/res/values-fa/strings.xml b/packages/CredentialManager/wear/res/values-fa/strings.xml
index 8053769..a385094 100644
--- a/packages/CredentialManager/wear/res/values-fa/strings.xml
+++ b/packages/CredentialManager/wear/res/values-fa/strings.xml
@@ -25,7 +25,7 @@
<string name="dialog_sign_in_options_button" msgid="448002958902615054">"گزینههای ورود به سیستم"</string>
<string name="sign_in_options_title" msgid="6720572645638986680">"گزینههای ورود به سیستم"</string>
<string name="provider_list_title" msgid="6803918216129492212">"مدیریت ورود به سیستم"</string>
- <string name="choose_sign_in_title" msgid="3616025924746872202">"ورود به سیستم را انتخاب کنید"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"انتخاب روش ورود به سیستم"</string>
<string name="choose_passkey_title" msgid="8459270617632817465">"گذرکلید را انتخاب کنید"</string>
<string name="choose_password_title" msgid="7610721820858017214">"گذرواژه را انتخاب کنید"</string>
<string name="sign_in_on_phone_button" msgid="7618621977586522403">"ورود به سیستم در تلفن"</string>
diff --git a/packages/CredentialManager/wear/res/values-pt/strings.xml b/packages/CredentialManager/wear/res/values-pt/strings.xml
index c451b25..1a1c16a 100644
--- a/packages/CredentialManager/wear/res/values-pt/strings.xml
+++ b/packages/CredentialManager/wear/res/values-pt/strings.xml
@@ -25,7 +25,7 @@
<string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opções de login"</string>
<string name="sign_in_options_title" msgid="6720572645638986680">"Opções de login"</string>
<string name="provider_list_title" msgid="6803918216129492212">"Gerenciar logins"</string>
- <string name="choose_sign_in_title" msgid="3616025924746872202">"Escolher opção de login"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Escolha um login"</string>
<string name="choose_passkey_title" msgid="8459270617632817465">"Escolher chave de acesso"</string>
<string name="choose_password_title" msgid="7610721820858017214">"Escolher senha"</string>
<string name="sign_in_on_phone_button" msgid="7618621977586522403">"Fazer login no smartphone"</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java
index 170cb45..44990f7 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java
@@ -47,19 +47,19 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
+
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
+
+import com.android.packageinstaller.common.EventResultPersister;
+import com.android.packageinstaller.common.UninstallEventReceiver;
import com.android.packageinstaller.handheld.ErrorDialogFragment;
import com.android.packageinstaller.handheld.UninstallAlertDialogFragment;
import com.android.packageinstaller.television.ErrorFragment;
import com.android.packageinstaller.television.UninstallAlertFragment;
import com.android.packageinstaller.television.UninstallAppProgress;
-import com.android.packageinstaller.common.EventResultPersister;
-import com.android.packageinstaller.common.UninstallEventReceiver;
import com.android.packageinstaller.v2.ui.UninstallLaunch;
-import java.util.List;
-
/*
* This activity presents UI to uninstall an application. Usually launched with intent
* Intent.ACTION_UNINSTALL_PKG_COMMAND and attribute
@@ -181,12 +181,15 @@
if (mDialogInfo.user == null) {
mDialogInfo.user = Process.myUserHandle();
} else {
- List<UserHandle> profiles = userManager.getUserProfiles();
- if (!profiles.contains(mDialogInfo.user)) {
- Log.e(TAG, "User " + Process.myUserHandle() + " can't request uninstall "
- + "for user " + mDialogInfo.user);
- showUserIsNotAllowed();
- return;
+ if (!mDialogInfo.user.equals(Process.myUserHandle())) {
+ final boolean isCurrentUserProfileOwner = Process.myUserHandle().equals(
+ userManager.getProfileParent(mDialogInfo.user));
+ if (!isCurrentUserProfileOwner) {
+ Log.e(TAG, "User " + Process.myUserHandle() + " can't request uninstall "
+ + "for user " + mDialogInfo.user);
+ showUserIsNotAllowed();
+ return;
+ }
}
}
diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp
index d739aaf..933c512 100644
--- a/packages/SettingsLib/Android.bp
+++ b/packages/SettingsLib/Android.bp
@@ -10,19 +10,19 @@
android_library {
name: "SettingsLib",
defaults: [
- "SettingsLintDefaults",
"SettingsLibAvatarPickerDefaults",
+ "SettingsLintDefaults",
],
static_libs: [
"androidx.localbroadcastmanager_localbroadcastmanager",
"androidx.room_room-runtime",
"androidx.sqlite_sqlite",
- "zxing-core",
"guava",
+ "zxing-core",
- "WifiTrackerLibRes",
"//frameworks/libs/systemui:iconloader",
+ "WifiTrackerLibRes",
"setupdesign",
"SettingsLibActionBarShadow",
@@ -31,8 +31,8 @@
"SettingsLibAppPreference",
"SettingsLibBannerMessagePreference",
"SettingsLibBarChartPreference",
- "SettingsLibButtonPreference",
"SettingsLibBulletPreference",
+ "SettingsLibButtonPreference",
"SettingsLibCardPreference",
"SettingsLibCollapsingToolbarBaseActivity",
"SettingsLibDeviceStateRotationLock",
@@ -50,6 +50,7 @@
"SettingsLibProgressBar",
"SettingsLibRestrictedLockUtils",
"SettingsLibSearchWidget",
+ "SettingsLibSegmentedButtonPreference",
"SettingsLibSelectorWithWidgetPreference",
"SettingsLibSettingsSpinner",
"SettingsLibSettingsTransition",
@@ -62,7 +63,7 @@
"SettingsLibZeroStatePreference",
"settingslib_media_flags_lib",
],
- libs:[
+ libs: [
// This flag library has been added in frameworks jar
"aconfig_settingslib_flags_java_lib",
"wifi_framework_aconfig_flags_lib",
@@ -118,8 +119,8 @@
"legacy_avatar_picker_app_enabled",
],
properties: [
- "static_libs",
"manifest",
+ "static_libs",
],
}
diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt
index 3c8d6ed..19fa507 100644
--- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt
+++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/GetPreferenceGraphApiHandler.kt
@@ -44,8 +44,8 @@
): PreferenceGraphProto {
val builder = PreferenceGraphBuilder.of(application, callingPid, callingUid, request)
if (request.screenKeys.isEmpty()) {
- for (key in PreferenceScreenRegistry.preferenceScreens.keys) {
- builder.addPreferenceScreenFromRegistry(key)
+ PreferenceScreenRegistry.preferenceScreenMetadataCreators.forEachKeyAsync {
+ builder.addPreferenceScreenFromRegistry(it)
}
for (provider in preferenceScreenProviders) {
builder.addPreferenceScreenProvider(provider)
diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt
index de5731e..2fac545 100644
--- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt
+++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGetterApi.kt
@@ -98,7 +98,7 @@
val preferences = mutableMapOf<PreferenceCoordinate, PreferenceProto>()
val flags = request.flags
for ((screenKey, coordinates) in request.preferences.groupBy { it.screenKey }) {
- val screenMetadata = PreferenceScreenRegistry[screenKey]
+ val screenMetadata = PreferenceScreenRegistry.create(application, screenKey)
if (screenMetadata == null) {
for (coordinate in coordinates) {
errors[coordinate] = PreferenceGetterErrorCode.NOT_FOUND
diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
index 2cf32de..f001fad 100644
--- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
+++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
@@ -141,7 +141,7 @@
}
suspend fun addPreferenceScreenFromRegistry(key: String): Boolean {
- val metadata = PreferenceScreenRegistry[key] ?: return false
+ val metadata = PreferenceScreenRegistry.create(context, key) ?: return false
return addPreferenceScreenMetadata(metadata)
}
diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt
index bef4bb2..3c870ac 100644
--- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt
+++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt
@@ -112,7 +112,8 @@
request: PreferenceSetterRequest,
): Int {
val screenMetadata =
- PreferenceScreenRegistry[request.screenKey] ?: return PreferenceSetterResult.UNSUPPORTED
+ PreferenceScreenRegistry.create(application, request.screenKey)
+ ?: return PreferenceSetterResult.UNSUPPORTED
val key = request.key
val metadata =
screenMetadata.getPreferenceHierarchy(application).find(key)
diff --git a/packages/SettingsLib/Metadata/Android.bp b/packages/SettingsLib/Metadata/Android.bp
index 207637f..564c398 100644
--- a/packages/SettingsLib/Metadata/Android.bp
+++ b/packages/SettingsLib/Metadata/Android.bp
@@ -14,10 +14,9 @@
],
srcs: [":SettingsLibMetadata-srcs"],
static_libs: [
+ "SettingsLibDataStore",
"androidx.annotation_annotation",
"androidx.fragment_fragment",
- "guava",
- "SettingsLibDataStore",
],
kotlincflags: ["-Xjvm-default=all"],
}
diff --git a/packages/SettingsLib/Metadata/processor/src/com/android/settingslib/metadata/PreferenceScreenAnnotationProcessor.kt b/packages/SettingsLib/Metadata/processor/src/com/android/settingslib/metadata/PreferenceScreenAnnotationProcessor.kt
index 7432254..1049cce 100644
--- a/packages/SettingsLib/Metadata/processor/src/com/android/settingslib/metadata/PreferenceScreenAnnotationProcessor.kt
+++ b/packages/SettingsLib/Metadata/processor/src/com/android/settingslib/metadata/PreferenceScreenAnnotationProcessor.kt
@@ -16,7 +16,6 @@
package com.android.settingslib.metadata
-import java.util.TreeMap
import javax.annotation.processing.AbstractProcessor
import javax.annotation.processing.ProcessingEnvironment
import javax.annotation.processing.RoundEnvironment
@@ -33,8 +32,7 @@
/** Processor to gather preference screens annotated with `@ProvidePreferenceScreen`. */
class PreferenceScreenAnnotationProcessor : AbstractProcessor() {
- private val screens = TreeMap<String, ConstructorType>()
- private val overlays = mutableMapOf<String, String>()
+ private val screens = mutableListOf<Screen>()
private val contextType: TypeMirror by lazy {
processingEnv.elementUtils.getTypeElement("android.content.Context").asType()
}
@@ -94,15 +92,10 @@
)
return
}
- val screenQualifiedName = qualifiedName.toString()
- screens[screenQualifiedName] = constructorType
val annotation = annotationMirrors.single { it.isElement(annotationElement) }
- val overlay = annotation.getOverlay()
- if (overlay != null) {
- overlays.put(overlay, screenQualifiedName)?.let {
- error("$overlay has been overlaid by $it", this)
- }
- }
+ val key = annotation.fieldValue<String>("value")!!
+ val overlay = annotation.fieldValue<Boolean>("overlay") == true
+ screens.add(Screen(key, overlay, qualifiedName.toString(), constructorType))
}
private fun codegen() {
@@ -119,16 +112,8 @@
}
private fun generateCode(outputPkg: String, outputClass: String, outputFun: String) {
- for ((overlay, screen) in overlays) {
- if (screens.remove(overlay) == null) {
- warn("$overlay is overlaid by $screen but not annotated with @$ANNOTATION_NAME")
- } else {
- processingEnv.messager.printMessage(
- Diagnostic.Kind.NOTE,
- "$overlay is overlaid by $screen",
- )
- }
- }
+ // sort by screen keys to make the output deterministic and naturally fit to FixedArrayMap
+ screens.sort()
val javaFileObject =
try {
processingEnv.filer.createSourceFile("$outputPkg.$outputClass")
@@ -139,56 +124,64 @@
}
javaFileObject.openWriter().use {
it.write("package $outputPkg;\n\n")
- it.write("import $PACKAGE.$PREFERENCE_SCREEN_METADATA;\n\n")
+ it.write("import $PACKAGE.FixedArrayMap;\n")
+ it.write("import $PACKAGE.FixedArrayMap.OrderedInitializer;\n")
+ it.write("import $PACKAGE.$CREATOR;\n\n")
it.write("// Generated by annotation processor for @$ANNOTATION_NAME\n")
it.write("public final class $outputClass {\n")
it.write(" private $outputClass() {}\n\n")
- it.write(
- " public static java.util.List<$PREFERENCE_SCREEN_METADATA> " +
- "$outputFun(android.content.Context context) {\n"
- )
- it.write(
- " java.util.ArrayList<$PREFERENCE_SCREEN_METADATA> screens = " +
- "new java.util.ArrayList<>(${screens.size});\n"
- )
- for ((screen, constructorType) in screens) {
+ it.write(" public static FixedArrayMap<String, $CREATOR> $outputFun() {\n")
+ val size = screens.size
+ it.write(" return new FixedArrayMap<>($size, $outputClass::init);\n")
+ it.write(" }\n\n")
+ fun Screen.write() {
+ it.write(" screens.put(\"$key\", context -> new $klass(")
when (constructorType) {
- ConstructorType.DEFAULT -> it.write(" screens.add(new $screen());\n")
- ConstructorType.CONTEXT -> it.write(" screens.add(new $screen(context));\n")
- ConstructorType.SINGLETON -> it.write(" screens.add($screen.INSTANCE);\n")
+ ConstructorType.DEFAULT -> it.write("));")
+ ConstructorType.CONTEXT -> it.write("context));")
}
+ if (overlay) it.write(" // overlay")
+ it.write("\n")
}
- for ((overlay, screen) in overlays) {
- it.write(" // $overlay is overlaid by $screen\n")
+ it.write(" private static void init(OrderedInitializer<String, $CREATOR> screens) {\n")
+ var index = 0
+ while (index < size) {
+ val screen = screens[index]
+ var next = index + 1
+ while (next < size && screen.key == screens[next].key) next++
+ val n = next - index
+ if (n == 1) {
+ screen.write()
+ } else if (n == 2 && screen.overlay && !screens[index + 1].overlay) {
+ it.write(" // ${screen.klass} overlays ${screens[index + 1].klass}\n")
+ screen.write()
+ } else {
+ val msg = StringBuilder("${screen.key} is associated to")
+ for (i in index until next) msg.append(" ${screens[i]}")
+ processingEnv.messager.printMessage(Diagnostic.Kind.ERROR, msg)
+ }
+ index = next
}
- it.write(" return screens;\n")
- it.write(" }\n")
- it.write("}")
+ it.write(" }\n}")
}
}
private fun AnnotationMirror.isElement(element: TypeElement) =
processingEnv.typeUtils.isSameType(annotationType.asElement().asType(), element.asType())
- private fun AnnotationMirror.getOverlay(): String? {
+ @Suppress("UNCHECKED_CAST")
+ private fun <T> AnnotationMirror.fieldValue(name: String): T? = field(name)?.value as? T
+
+ private fun AnnotationMirror.field(name: String): AnnotationValue? {
for ((key, value) in elementValues) {
- if (key.simpleName.contentEquals("overlay")) {
- return if (value.isDefaultClassValue(key)) null else value.value.toString()
- }
+ if (key.simpleName.contentEquals(name)) return value
}
return null
}
- private fun AnnotationValue.isDefaultClassValue(key: ExecutableElement) =
- processingEnv.typeUtils.isSameType(
- value as TypeMirror,
- key.defaultValue.value as TypeMirror,
- )
-
private fun TypeElement.getConstructorType(): ConstructorType? {
var constructor: ExecutableElement? = null
for (element in enclosedElements) {
- if (element.isKotlinObject()) return ConstructorType.SINGLETON
if (element.kind != ElementKind.CONSTRUCTOR) continue
if (!element.modifiers.contains(Modifier.PUBLIC)) continue
if (constructor != null) return null
@@ -204,21 +197,27 @@
}
}
- private fun Element.isKotlinObject() =
- kind == ElementKind.FIELD &&
- modifiers.run { contains(Modifier.PUBLIC) && contains(Modifier.STATIC) } &&
- simpleName.toString() == "INSTANCE"
-
private fun warn(msg: CharSequence) =
processingEnv.messager.printMessage(Diagnostic.Kind.WARNING, msg)
private fun error(msg: CharSequence, element: Element) =
processingEnv.messager.printMessage(Diagnostic.Kind.ERROR, msg, element)
+ private data class Screen(
+ val key: String,
+ val overlay: Boolean,
+ val klass: String,
+ val constructorType: ConstructorType,
+ ) : Comparable<Screen> {
+ override fun compareTo(other: Screen): Int {
+ val diff = key.compareTo(other.key)
+ return if (diff != 0) diff else other.overlay.compareTo(overlay)
+ }
+ }
+
private enum class ConstructorType {
DEFAULT, // default constructor with no parameter
CONTEXT, // constructor with a Context parameter
- SINGLETON, // Kotlin object class
}
companion object {
@@ -226,6 +225,7 @@
private const val ANNOTATION_NAME = "ProvidePreferenceScreen"
private const val ANNOTATION = "$PACKAGE.$ANNOTATION_NAME"
private const val PREFERENCE_SCREEN_METADATA = "PreferenceScreenMetadata"
+ private const val CREATOR = "PreferenceScreenMetadataCreator"
private const val OPTIONS_NAME = "ProvidePreferenceScreenOptions"
private const val OPTIONS = "$PACKAGE.$OPTIONS_NAME"
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Annotations.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Annotations.kt
index ea20a74..4bed795 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Annotations.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Annotations.kt
@@ -16,24 +16,20 @@
package com.android.settingslib.metadata
-import kotlin.reflect.KClass
-
/**
* Annotation to provide preference screen.
*
* The annotated class must satisfy either condition:
* - the primary constructor has no parameter
* - the primary constructor has a single [android.content.Context] parameter
- * - it is a Kotlin object class
*
- * @param overlay if specified, current annotated screen will overlay the given screen
+ * @param value unique preference screen key
+ * @param overlay if true, current annotated screen will overlay the screen that has identical key
*/
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.CLASS)
@MustBeDocumented
-annotation class ProvidePreferenceScreen(
- val overlay: KClass<out PreferenceScreenMetadata> = PreferenceScreenMetadata::class,
-)
+annotation class ProvidePreferenceScreen(val value: String, val overlay: Boolean = false)
/**
* Provides options for [ProvidePreferenceScreen] annotation processor.
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/FixedArrayMap.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/FixedArrayMap.kt
new file mode 100644
index 0000000..149331a
--- /dev/null
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/FixedArrayMap.kt
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.metadata
+
+import java.util.function.Consumer
+
+/**
+ * A compact and immutable data structure provides [get] and for-each operations on ordered
+ * key-value entries.
+ *
+ * The implementation uses fixed-size array and no API is offered to modify entries. Actually,
+ * elements are provided in sorted order during constructor to simplify data management. As a
+ * result, this class is more lightweight compared with `ArrayMap`.
+ */
+@Suppress("UNCHECKED_CAST")
+class FixedArrayMap<K : Comparable<K>, V> {
+ private val array: Array<Any?>
+
+ /** Constructors with empty element. */
+ constructor() {
+ array = emptyArray()
+ }
+
+ /**
+ * Constructors.
+ *
+ * @param size the number of elements
+ * @param consumer initializer to provide exactly [size] elements *in sorted order*
+ */
+ constructor(size: Int, consumer: Consumer<OrderedInitializer<K, V>>) {
+ array = arrayOfNulls(size * 2)
+ val orderedInitializer = OrderedInitializer<K, V>(array)
+ consumer.accept(orderedInitializer)
+ orderedInitializer.verify()
+ }
+
+ /** Returns the number of elements. */
+ val size: Int
+ get() = array.size / 2
+
+ /**
+ * Returns a new [FixedArrayMap] that merged from current and given [FixedArrayMap] instance.
+ *
+ * [other] takes precedence for identical keys.
+ */
+ fun merge(other: FixedArrayMap<K, V>): FixedArrayMap<K, V> {
+ var newKeys = 0
+ other.forEachKey { if (get(it) == null) newKeys++ }
+ return FixedArrayMap(size + newKeys) { initializer ->
+ var index1 = 0
+ var index2 = 0
+ while (!initializer.isDone()) {
+ val key1 = if (index1 < array.size) array[index1] as K else null
+ val key2 = if (index2 < other.array.size) other.array[index2] as K else null
+ val diff =
+ when {
+ key1 == null -> 1
+ key2 == null -> -1
+ else -> key1.compareTo(key2)
+ }
+ if (diff < 0) {
+ initializer.put(key1!!, array[index1 + 1] as V)
+ index1 += 2
+ } else {
+ initializer.put(key2!!, other.array[index2 + 1] as V)
+ index2 += 2
+ if (diff == 0) index1 += 2
+ }
+ }
+ }
+ }
+
+ /** Traversals keys *in sorted order* and applies given action. */
+ fun forEachKey(action: (key: K) -> Unit) {
+ for (index in array.indices step 2) {
+ action(array[index] as K)
+ }
+ }
+
+ /** Traversals keys *in sorted order* and applies given action. */
+ suspend fun forEachKeyAsync(action: suspend (key: K) -> Unit) {
+ for (index in array.indices step 2) {
+ action(array[index] as K)
+ }
+ }
+
+ /** Traversals key-value entries *in sorted order* and applies given action. */
+ fun forEach(action: (key: K, value: V) -> Unit) {
+ for (index in array.indices step 2) {
+ action(array[index] as K, array[index + 1] as V)
+ }
+ }
+
+ /** Traversals key-value entries in sorted order and applies given action. */
+ suspend fun forEachAsync(action: suspend (key: K, value: V) -> Unit) {
+ for (index in array.indices step 2) {
+ action(array[index] as K, array[index + 1] as V)
+ }
+ }
+
+ /**
+ * Returns the value associated with given key.
+ *
+ * Binary-search algorithm is applied, so this operation takes O(log2(N)) at worst case.
+ */
+ operator fun get(key: K): V? {
+ var low = 0
+ var high = array.size / 2
+ while (low < high) {
+ val mid = (low + high).ushr(1) // safe from overflows
+ val diff = (array[mid * 2] as K).compareTo(key)
+ when {
+ diff < 0 -> low = mid + 1
+ diff > 0 -> high = mid
+ else -> return array[mid * 2 + 1] as V
+ }
+ }
+ return null
+ }
+
+ /** Initializer to provide key-value pairs *in sorted order*. */
+ class OrderedInitializer<K : Comparable<K>, V>
+ internal constructor(private val array: Array<Any?>) {
+ private var index = 0
+
+ internal val size: Int
+ get() = array.size
+
+ /** Returns whether all elements are added. */
+ fun isDone() = index == array.size
+
+ /** Adds a new key-value entry. The key must be provided in sorted order. */
+ fun put(key: K, value: V) {
+ array[index++] = key
+ array[index++] = value
+ }
+
+ internal fun verify() {
+ if (!isDone()) throw IllegalStateException("Missing items: ${index / 2} / ${size / 2}")
+ for (index in 2 until size step 2) {
+ if ((array[index - 2] as K) >= (array[index] as K)) {
+ throw IllegalStateException("${array[index - 2]} >= ${array[index]}")
+ }
+ }
+ }
+ }
+}
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceHierarchy.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceHierarchy.kt
index 9179f8f..876f615 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceHierarchy.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceHierarchy.kt
@@ -16,6 +16,8 @@
package com.android.settingslib.metadata
+import android.content.Context
+
/** A node in preference hierarchy that is associated with [PreferenceMetadata]. */
open class PreferenceHierarchyNode internal constructor(val metadata: PreferenceMetadata) {
/**
@@ -32,7 +34,8 @@
*
* A root hierarchy represents a preference screen. A sub-hierarchy represents a preference group.
*/
-class PreferenceHierarchy internal constructor(metadata: PreferenceMetadata) :
+class PreferenceHierarchy
+internal constructor(private val context: Context, metadata: PreferenceMetadata) :
PreferenceHierarchyNode(metadata) {
private val children = mutableListOf<PreferenceHierarchyNode>()
@@ -51,7 +54,8 @@
*
* @throws NullPointerException if screen is not registered to [PreferenceScreenRegistry]
*/
- operator fun String.unaryPlus() = +PreferenceHierarchyNode(PreferenceScreenRegistry[this]!!)
+ operator fun String.unaryPlus() =
+ +PreferenceHierarchyNode(PreferenceScreenRegistry.create(context, this)!!)
operator fun PreferenceHierarchyNode.unaryPlus() = also { children.add(it) }
@@ -79,7 +83,7 @@
/** Adds a preference group to the hierarchy before given key. */
fun addGroupBefore(key: String, metadata: PreferenceMetadata): PreferenceHierarchy {
val (list, index) = findPreference(key) ?: (children to children.size)
- return PreferenceHierarchy(metadata).also { list.add(index, it) }
+ return PreferenceHierarchy(context, metadata).also { list.add(index, it) }
}
/** Adds a preference to the hierarchy after given key. */
@@ -91,7 +95,7 @@
/** Adds a preference group to the hierarchy after given key. */
fun addGroupAfter(key: String, metadata: PreferenceMetadata): PreferenceHierarchy {
val (list, index) = findPreference(key) ?: (children to children.size - 1)
- return PreferenceHierarchy(metadata).also { list.add(index + 1, it) }
+ return PreferenceHierarchy(context, metadata).also { list.add(index + 1, it) }
}
private fun findPreference(key: String): Pair<MutableList<PreferenceHierarchyNode>, Int>? {
@@ -106,12 +110,13 @@
}
/** Adds a preference group to the hierarchy. */
- operator fun PreferenceGroup.unaryPlus() = PreferenceHierarchy(this).also { children.add(it) }
+ operator fun PreferenceGroup.unaryPlus() =
+ PreferenceHierarchy(context, this).also { children.add(it) }
/** Adds a preference group and returns its preference hierarchy. */
@JvmOverloads
fun addGroup(metadata: PreferenceGroup, order: Int? = null): PreferenceHierarchy =
- PreferenceHierarchy(metadata).also {
+ PreferenceHierarchy(context, metadata).also {
this.order = order
children.add(it)
}
@@ -128,7 +133,9 @@
* @throws NullPointerException if screen is not registered to [PreferenceScreenRegistry]
*/
fun addPreferenceScreen(screenKey: String) {
- children.add(PreferenceHierarchy(PreferenceScreenRegistry[screenKey]!!))
+ children.add(
+ PreferenceHierarchy(context, PreferenceScreenRegistry.create(context, screenKey)!!)
+ )
}
/** Extensions to add more preferences to the hierarchy. */
@@ -175,5 +182,8 @@
* Builder function to create [PreferenceHierarchy] in
* [DSL](https://kotlinlang.org/docs/type-safe-builders.html) manner.
*/
-fun preferenceHierarchy(metadata: PreferenceMetadata, init: PreferenceHierarchy.() -> Unit) =
- PreferenceHierarchy(metadata).also(init)
+fun preferenceHierarchy(
+ context: Context,
+ metadata: PreferenceMetadata,
+ init: PreferenceHierarchy.() -> Unit,
+) = PreferenceHierarchy(context, metadata).also(init)
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
index c1edbdc..1e70a32 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
@@ -22,7 +22,6 @@
import androidx.annotation.AnyThread
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
-import androidx.fragment.app.Fragment
/**
* Interface provides preference metadata (title, summary, icon, etc.).
@@ -170,47 +169,3 @@
/** Metadata of preference category. */
@AnyThread
open class PreferenceCategory(override val key: String, override val title: Int) : PreferenceGroup
-
-/** Metadata of preference screen. */
-@AnyThread
-interface PreferenceScreenMetadata : PreferenceMetadata {
-
- /**
- * The screen title resource, which precedes [getScreenTitle] if provided.
- *
- * By default, screen title is same with [title].
- */
- val screenTitle: Int
- get() = title
-
- /** Returns dynamic screen title, use [screenTitle] whenever possible. */
- fun getScreenTitle(context: Context): CharSequence? = null
-
- /** Returns the fragment class to show the preference screen. */
- fun fragmentClass(): Class<out Fragment>?
-
- /**
- * Indicates if [getPreferenceHierarchy] returns a complete hierarchy of the preference screen.
- *
- * If `true`, the result of [getPreferenceHierarchy] will be used to inflate preference screen.
- * Otherwise, it is an intermediate state called hybrid mode, preference hierarchy is
- * represented by other ways (e.g. XML resource) and [PreferenceMetadata]s in
- * [getPreferenceHierarchy] will only be used to bind UI widgets.
- */
- fun hasCompleteHierarchy(): Boolean = true
-
- /**
- * Returns the hierarchy of preference screen.
- *
- * The implementation MUST include all preferences into the hierarchy regardless of the runtime
- * conditions. DO NOT check any condition (except compile time flag) before adding a preference.
- */
- fun getPreferenceHierarchy(context: Context): PreferenceHierarchy
-
- /**
- * Returns the [Intent] to show current preference screen.
- *
- * @param metadata the preference to locate when show the screen
- */
- fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?): Intent? = null
-}
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenMetadata.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenMetadata.kt
new file mode 100644
index 0000000..a2dcefb
--- /dev/null
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenMetadata.kt
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.metadata
+
+import android.content.Context
+import android.content.Intent
+import androidx.annotation.AnyThread
+import androidx.fragment.app.Fragment
+
+/** Metadata of preference screen. */
+@AnyThread
+interface PreferenceScreenMetadata : PreferenceMetadata {
+
+ /**
+ * The screen title resource, which precedes [getScreenTitle] if provided.
+ *
+ * By default, screen title is same with [title].
+ */
+ val screenTitle: Int
+ get() = title
+
+ /** Returns dynamic screen title, use [screenTitle] whenever possible. */
+ fun getScreenTitle(context: Context): CharSequence? = null
+
+ /** Returns the fragment class to show the preference screen. */
+ fun fragmentClass(): Class<out Fragment>?
+
+ /**
+ * Indicates if [getPreferenceHierarchy] returns a complete hierarchy of the preference screen.
+ *
+ * If `true`, the result of [getPreferenceHierarchy] will be used to inflate preference screen.
+ * Otherwise, it is an intermediate state called hybrid mode, preference hierarchy is
+ * represented by other ways (e.g. XML resource) and [PreferenceMetadata]s in
+ * [getPreferenceHierarchy] will only be used to bind UI widgets.
+ */
+ fun hasCompleteHierarchy(): Boolean = true
+
+ /**
+ * Returns the hierarchy of preference screen.
+ *
+ * The implementation MUST include all preferences into the hierarchy regardless of the runtime
+ * conditions. DO NOT check any condition (except compile time flag) before adding a preference.
+ */
+ fun getPreferenceHierarchy(context: Context): PreferenceHierarchy
+
+ /**
+ * Returns the [Intent] to show current preference screen.
+ *
+ * @param metadata the preference to locate when show the screen
+ */
+ fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?): Intent? = null
+}
+
+/** Creator of [PreferenceScreenMetadata]. */
+fun interface PreferenceScreenMetadataCreator {
+
+ /**
+ * Creates a new [PreferenceScreenMetadata].
+ *
+ * @param context application context to create the PreferenceScreenMetadata
+ */
+ fun create(context: Context): PreferenceScreenMetadata
+}
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenRegistry.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenRegistry.kt
index ff09910..6cf39f3 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenRegistry.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceScreenRegistry.kt
@@ -18,11 +18,6 @@
import android.content.Context
import com.android.settingslib.datastore.KeyValueStore
-import com.google.common.base.Supplier
-import com.google.common.base.Suppliers
-import com.google.common.collect.ImmutableMap
-
-private typealias PreferenceScreenMap = ImmutableMap<String, PreferenceScreenMetadata>
/** Registry of all available preference screens in the app. */
object PreferenceScreenRegistry : ReadWritePermitProvider {
@@ -30,12 +25,12 @@
/** Provider of key-value store. */
private lateinit var keyValueStoreProvider: KeyValueStoreProvider
- private var preferenceScreensSupplier: Supplier<PreferenceScreenMap> = Supplier {
- ImmutableMap.of()
- }
-
- val preferenceScreens: PreferenceScreenMap
- get() = preferenceScreensSupplier.get()
+ /**
+ * Creators of all available [PreferenceScreenMetadata]s.
+ *
+ * The map key is preference screen key.
+ */
+ var preferenceScreenMetadataCreators = FixedArrayMap<String, PreferenceScreenMetadataCreator>()
private var readWritePermitProvider: ReadWritePermitProvider =
object : ReadWritePermitProvider {}
@@ -54,26 +49,9 @@
fun getKeyValueStore(context: Context, preference: PreferenceMetadata): KeyValueStore? =
keyValueStoreProvider.getKeyValueStore(context, preference)
- /** Sets supplier to provide available preference screens. */
- fun setPreferenceScreensSupplier(supplier: Supplier<List<PreferenceScreenMetadata>>) {
- preferenceScreensSupplier =
- Suppliers.memoize {
- val screensBuilder = ImmutableMap.builder<String, PreferenceScreenMetadata>()
- for (screen in supplier.get()) screensBuilder.put(screen.key, screen)
- screensBuilder.buildOrThrow()
- }
- }
-
- /** Sets available preference screens. */
- fun setPreferenceScreens(vararg screens: PreferenceScreenMetadata) {
- val screensBuilder = ImmutableMap.builder<String, PreferenceScreenMetadata>()
- for (screen in screens) screensBuilder.put(screen.key, screen)
- preferenceScreensSupplier = Suppliers.ofInstance(screensBuilder.buildOrThrow())
- }
-
- /** Returns [PreferenceScreenMetadata] of particular key. */
- operator fun get(key: String?): PreferenceScreenMetadata? =
- if (key != null) preferenceScreens[key] else null
+ /** Creates [PreferenceScreenMetadata] of particular screen key. */
+ fun create(context: Context, screenKey: String?): PreferenceScreenMetadata? =
+ screenKey?.let { preferenceScreenMetadataCreators[it]?.create(context.applicationContext) }
/**
* Sets the provider to check read write permit. Read and write requests are denied by default.
diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt
index 991d5b7..e237a6a 100644
--- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt
+++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceFragment.kt
@@ -83,7 +83,7 @@
@XmlRes protected open fun getPreferenceScreenResId(context: Context): Int = 0
protected fun getPreferenceScreenCreator(context: Context): PreferenceScreenCreator? =
- (PreferenceScreenRegistry[getPreferenceScreenBindingKey(context)]
+ (PreferenceScreenRegistry.create(context, getPreferenceScreenBindingKey(context))
as? PreferenceScreenCreator)
?.run { if (isFlagEnabled(context)) this else null }
diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
index a9e20f28..91abd8b 100644
--- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
+++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
@@ -220,7 +220,7 @@
/** Updates preference screen that has incomplete hierarchy. */
@JvmStatic
fun bind(preferenceScreen: PreferenceScreen) {
- PreferenceScreenRegistry[preferenceScreen.key]?.run {
+ PreferenceScreenRegistry.create(preferenceScreen.context, preferenceScreen.key)?.run {
if (!hasCompleteHierarchy()) {
val preferenceBindingFactory =
(this as? PreferenceScreenCreator)?.preferenceBindingFactory ?: return
diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenFactory.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenFactory.kt
index 7f99d7a..211b3bd 100644
--- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenFactory.kt
+++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenFactory.kt
@@ -81,8 +81,8 @@
*
* The screen must be registered in [PreferenceScreenFactory] and provide a complete hierarchy.
*/
- fun createBindingScreen(screenKey: String?): PreferenceScreen? {
- val metadata = PreferenceScreenRegistry[screenKey] ?: return null
+ fun createBindingScreen(context: Context, screenKey: String?): PreferenceScreen? {
+ val metadata = PreferenceScreenRegistry.create(context, screenKey) ?: return null
if (metadata is PreferenceScreenCreator && metadata.hasCompleteHierarchy()) {
return metadata.createPreferenceScreen(this)
}
@@ -93,11 +93,12 @@
/** Creates [PreferenceScreen] from [PreferenceScreenRegistry]. */
@JvmStatic
fun createBindingScreen(preference: Preference): PreferenceScreen? {
+ val context = preference.context
val preferenceScreenCreator =
- (PreferenceScreenRegistry[preference.key] as? PreferenceScreenCreator)
- ?: return null
+ (PreferenceScreenRegistry.create(context, preference.key)
+ as? PreferenceScreenCreator) ?: return null
if (!preferenceScreenCreator.hasCompleteHierarchy()) return null
- val factory = PreferenceScreenFactory(preference.context)
+ val factory = PreferenceScreenFactory(context)
val preferenceScreen = preferenceScreenCreator.createPreferenceScreen(factory)
factory.preferenceManager.setPreferences(preferenceScreen)
return preferenceScreen
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-fr-rCA/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-fr-rCA/strings.xml
index 8f0d572..da74cf6 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-fr-rCA/strings.xml
@@ -19,6 +19,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="enabled_by_admin" msgid="6630472777476410137">"Activé par l\'administrateur"</string>
<string name="disabled_by_admin" msgid="4023569940620832713">"Désactivé par l\'administrateur"</string>
- <string name="enabled_by_advanced_protection" msgid="6236917660829422499">"Activé par la protection avancée"</string>
- <string name="disabled_by_advanced_protection" msgid="369596009193239632">"Désactivé par la protection avancée"</string>
+ <string name="enabled_by_advanced_protection" msgid="6236917660829422499">"Activée par la protection avancée"</string>
+ <string name="disabled_by_advanced_protection" msgid="369596009193239632">"Désactivée par la protection avancée"</string>
</resources>
diff --git a/packages/SettingsLib/SegmentedButtonPreference/Android.bp b/packages/SettingsLib/SegmentedButtonPreference/Android.bp
new file mode 100644
index 0000000..6522e98
--- /dev/null
+++ b/packages/SettingsLib/SegmentedButtonPreference/Android.bp
@@ -0,0 +1,33 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "frameworks_base_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_library {
+ name: "SettingsLibSegmentedButtonPreference",
+ use_resource_processor: true,
+ defaults: [
+ "SettingsLintDefaults",
+ ],
+
+ srcs: [
+ "src/**/*.java",
+ "src/**/*.kt",
+ ],
+ resource_dirs: ["res"],
+
+ static_libs: [
+ "SettingsLibSettingsTheme",
+ "androidx.annotation_annotation",
+ "androidx.preference_preference",
+ ],
+ sdk_version: "system_current",
+ min_sdk_version: "21",
+ apex_available: [
+ "//apex_available:platform",
+ ],
+}
diff --git a/packages/SettingsLib/SegmentedButtonPreference/AndroidManifest.xml b/packages/SettingsLib/SegmentedButtonPreference/AndroidManifest.xml
new file mode 100644
index 0000000..d71bc36
--- /dev/null
+++ b/packages/SettingsLib/SegmentedButtonPreference/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.settingslib.widget.preference.segmentedbutton">
+
+ <uses-sdk android:minSdkVersion="21" />
+
+</manifest>
diff --git a/packages/SettingsLib/SegmentedButtonPreference/res/layout/settingslib_expressive_preference_segmentedbutton.xml b/packages/SettingsLib/SegmentedButtonPreference/res/layout/settingslib_expressive_preference_segmentedbutton.xml
new file mode 100644
index 0000000..12e2872
--- /dev/null
+++ b/packages/SettingsLib/SegmentedButtonPreference/res/layout/settingslib_expressive_preference_segmentedbutton.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+ <com.google.android.material.button.MaterialButtonToggleGroup
+ android:id="@+id/button_group"
+ style="@style/Widget.Material3Expressive.MaterialButtonGroup.Connected"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:singleSelection="true"
+ app:selectionRequired="true"
+ app:checkedButton="@id/button_1">
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/button_1"
+ android:layout_weight="1"
+ app:iconPadding="0dp"
+ app:iconGravity="textStart"
+ style="@style/SettingsLibButtonStyle.Expressive.Tonal.Large"/>
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/button_2"
+ android:layout_weight="1"
+ app:iconPadding="0dp"
+ app:iconGravity="textStart"
+ style="@style/SettingsLibButtonStyle.Expressive.Tonal.Large"/>
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/button_3"
+ android:layout_weight="1"
+ app:iconPadding="0dp"
+ app:iconGravity="textStart"
+ style="@style/SettingsLibButtonStyle.Expressive.Tonal.Large"/>
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/button_4"
+ android:layout_weight="1"
+ app:iconPadding="0dp"
+ app:iconGravity="textStart"
+ style="@style/SettingsLibButtonStyle.Expressive.Tonal.Large"/>
+ </com.google.android.material.button.MaterialButtonToggleGroup>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/button_group_text"
+ android:orientation="horizontal"
+ android:gravity="center"
+ android:paddingTop="@dimen/settingslib_expressive_space_extrasmall4">
+
+ <TextView
+ android:id="@+id/button_1_text"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.SettingsLib.TitleSmall.Emphasized"
+ android:textColor="@color/settingslib_materialColorOnSurface" />
+
+ <TextView
+ android:id="@+id/button_2_text"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.SettingsLib.TitleSmall.Emphasized"
+ android:textColor="@color/settingslib_materialColorOnSurface" />
+
+ <TextView
+ android:id="@+id/button_3_text"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.SettingsLib.TitleSmall.Emphasized"
+ android:textColor="@color/settingslib_materialColorOnSurface" />
+
+ <TextView
+ android:id="@+id/button_4_text"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.SettingsLib.TitleSmall.Emphasized"
+ android:textColor="@color/settingslib_materialColorOnSurface" />
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/packages/SettingsLib/SegmentedButtonPreference/src/com/android/settingslib/widget/SegmentedButtonPreference.kt b/packages/SettingsLib/SegmentedButtonPreference/src/com/android/settingslib/widget/SegmentedButtonPreference.kt
new file mode 100644
index 0000000..b133969
--- /dev/null
+++ b/packages/SettingsLib/SegmentedButtonPreference/src/com/android/settingslib/widget/SegmentedButtonPreference.kt
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.widget
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.widget.TextView
+import androidx.annotation.DrawableRes
+import androidx.preference.Preference
+import androidx.preference.PreferenceViewHolder
+import com.android.settingslib.widget.preference.segmentedbutton.R
+import com.google.android.material.button.MaterialButton
+import com.google.android.material.button.MaterialButtonToggleGroup
+
+class SegmentedButtonPreference @JvmOverloads constructor(
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0,
+ defStyleRes: Int = 0
+) : Preference(context, attrs, defStyleAttr, defStyleRes), GroupSectionDividerMixin {
+ private var buttonGroup: MaterialButtonToggleGroup? = null
+ private var buttonLabels: MutableList<TextView> = mutableListOf()
+ private var buttonCheckedListener: MaterialButtonToggleGroup.OnButtonCheckedListener? = null
+
+ init {
+ layoutResource = R.layout.settingslib_expressive_preference_segmentedbutton
+ }
+
+ override fun onBindViewHolder(holder: PreferenceViewHolder) {
+ super.onBindViewHolder(holder)
+ holder.isDividerAllowedBelow = false
+ holder.isDividerAllowedAbove = false
+
+ buttonGroup = holder.findViewById(R.id.button_group) as MaterialButtonToggleGroup?
+ buttonLabels.add(holder.findViewById(R.id.button_1_text) as TextView)
+ buttonLabels.add(holder.findViewById(R.id.button_2_text) as TextView)
+ buttonLabels.add(holder.findViewById(R.id.button_3_text) as TextView)
+ buttonLabels.add(holder.findViewById(R.id.button_4_text) as TextView)
+ }
+
+ fun setupButton(index: Int, text: String, @DrawableRes icon: Int) {
+ if (index in 0 until buttonLabels.size) {
+ (buttonGroup?.getChildAt(index) as? MaterialButton)?.setIconResource(icon)
+ buttonLabels[index].text = text
+ }
+ }
+
+ fun setButtonVisibility(index: Int, visible: Boolean) {
+ if (index in 0 until buttonLabels.size) {
+ (buttonGroup?.getChildAt(index) as? MaterialButton)?.visibility =
+ if (visible) VISIBLE else GONE
+
+ buttonLabels[index].visibility = if (visible) VISIBLE else GONE
+ }
+ }
+
+ fun setButtonEnabled(index: Int, enabled: Boolean) {
+ if (index in 0 until buttonLabels.size) {
+ (buttonGroup?.getChildAt(index) as? MaterialButton)?.isEnabled = enabled
+ }
+ }
+
+ fun setOnButtonClickListener(listener: MaterialButtonToggleGroup.OnButtonCheckedListener) {
+ buttonCheckedListener = listener
+ buttonGroup?.addOnButtonCheckedListener (listener)
+ }
+
+ fun removeOnButtonClickListener() {
+ buttonCheckedListener?.let { buttonGroup?.removeOnButtonCheckedListener(it) }
+ buttonCheckedListener = null
+ }
+}
\ No newline at end of file
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUser.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUser.kt
index 7d6ee19..60ef733 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUser.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUser.kt
@@ -21,9 +21,8 @@
import android.content.IntentFilter
import android.os.UserHandle
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalLifecycleOwner
-import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import com.android.settingslib.spaprivileged.framework.common.broadcastReceiverAsUserFlow
/**
@@ -35,6 +34,8 @@
userHandle: UserHandle,
onReceive: (Intent) -> Unit,
) {
- LocalContext.current.broadcastReceiverAsUserFlow(intentFilter, userHandle)
- .collectLatestWithLifecycle(LocalLifecycleOwner.current, action = onReceive)
+ val context = LocalContext.current
+ LaunchedEffect(Unit) {
+ context.broadcastReceiverAsUserFlow(intentFilter, userHandle).collect(onReceive)
+ }
}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUserTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUserTest.kt
index a59a724..4221f9f 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUserTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/compose/DisposableBroadcastReceiverAsUserTest.kt
@@ -22,10 +22,11 @@
import android.content.IntentFilter
import android.os.UserHandle
import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.lifecycle.compose.LocalLifecycleOwner
-import androidx.lifecycle.testing.TestLifecycleOwner
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Rule
import org.junit.Test
@@ -38,34 +39,39 @@
@RunWith(AndroidJUnit4::class)
class DisposableBroadcastReceiverAsUserTest {
- @get:Rule
- val composeTestRule = createComposeRule()
+ @get:Rule val composeTestRule = createComposeRule()
private var registeredBroadcastReceiver: BroadcastReceiver? = null
- private val context = mock<Context> {
- on {
- registerReceiverAsUser(
- any(),
- eq(USER_HANDLE),
- eq(INTENT_FILTER),
- isNull(),
- isNull(),
- eq(Context.RECEIVER_NOT_EXPORTED),
- )
- } doAnswer {
- registeredBroadcastReceiver = it.arguments[0] as BroadcastReceiver
- null
+ private val context =
+ mock<Context> {
+ on {
+ registerReceiverAsUser(
+ any(),
+ eq(USER_HANDLE),
+ eq(INTENT_FILTER),
+ isNull(),
+ isNull(),
+ eq(Context.RECEIVER_NOT_EXPORTED),
+ )
+ } doAnswer
+ {
+ registeredBroadcastReceiver = it.arguments[0] as BroadcastReceiver
+ null
+ }
+
+ on { unregisterReceiver(any()) } doAnswer
+ {
+ if (registeredBroadcastReceiver === it.arguments[0]) {
+ registeredBroadcastReceiver = null
+ }
+ }
}
- }
@Test
fun broadcastReceiver_registered() {
composeTestRule.setContent {
- CompositionLocalProvider(
- LocalContext provides context,
- LocalLifecycleOwner provides TestLifecycleOwner(),
- ) {
+ CompositionLocalProvider(LocalContext provides context) {
DisposableBroadcastReceiverAsUser(INTENT_FILTER, USER_HANDLE) {}
}
}
@@ -77,10 +83,7 @@
fun broadcastReceiver_isCalledOnReceive() {
var onReceiveIsCalled = false
composeTestRule.setContent {
- CompositionLocalProvider(
- LocalContext provides context,
- LocalLifecycleOwner provides TestLifecycleOwner(),
- ) {
+ CompositionLocalProvider(LocalContext provides context) {
DisposableBroadcastReceiverAsUser(INTENT_FILTER, USER_HANDLE) {
onReceiveIsCalled = true
}
@@ -92,6 +95,23 @@
composeTestRule.waitUntil { onReceiveIsCalled }
}
+ @Test
+ fun broadcastReceiver_unregistered() {
+ var isBroadcastReceiverRegistered by mutableStateOf(true)
+ composeTestRule.setContent {
+ if (isBroadcastReceiverRegistered) {
+ CompositionLocalProvider(LocalContext provides context) {
+ DisposableBroadcastReceiverAsUser(INTENT_FILTER, USER_HANDLE) {}
+ }
+ }
+ }
+ composeTestRule.waitUntil { registeredBroadcastReceiver != null }
+
+ isBroadcastReceiverRegistered = false
+
+ composeTestRule.waitUntil { registeredBroadcastReceiver == null }
+ }
+
private companion object {
val USER_HANDLE: UserHandle = UserHandle.of(0)
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/PermissionsChangedFlowTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/PermissionsChangedFlowTest.kt
index 31522c12..7ef11eb 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/PermissionsChangedFlowTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/PermissionsChangedFlowTest.kt
@@ -23,7 +23,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
import com.android.settingslib.spa.testutils.toListWithTimeout
-import com.android.settingslib.spaprivileged.framework.common.asUser
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
@@ -35,6 +34,7 @@
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
+import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
class PermissionsChangedFlowTest {
@@ -49,7 +49,7 @@
}
private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
- on { asUser(APP.userHandle) } doReturn mock
+ doReturn(mock).whenever(mock).createContextAsUser(APP.userHandle, 0)
on { packageManager } doReturn mockPackageManager
}
diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml
index 6dd8fef..e4eb72d 100644
--- a/packages/SettingsLib/res/values-af/arrays.xml
+++ b/packages/SettingsLib/res/values-af/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Slegs toestelskerm (verstek)"</item>
+ <item msgid="9161645858025071955">"Eksterne skerm"</item>
+ <item msgid="114384731934682483">"Fokusgebaseer"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Wys skakering net op toestelskerm"</item>
+ <item msgid="7795034287069726554">"Wys skerm op enkele eksterne skerm"</item>
+ <item msgid="5280431949814340475">"Wys toestel op laaste gefokusde skerm"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 9af8ba8..7e9e369 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktief (net links)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktief (net regs)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktief (links en regs)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktief (net media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiewe (net media). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Gekoppel (steun oudiodeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Oorganganimasieskaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator-tydsduurskaal"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuleer sekondêre uitstallings"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Skakeringskermposisie"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Moenie aktiwiteite behou nie"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Vernietig elke aktiwiteit sodra die gebruiker dit verlaat"</string>
diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml
index 2a05261..805f0d3 100644
--- a/packages/SettingsLib/res/values-am/arrays.xml
+++ b/packages/SettingsLib/res/values-am/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"የመሣሪያ ማሳያ ብቻ (ነባሪ)"</item>
+ <item msgid="9161645858025071955">"ውጫዊ ማሳያ"</item>
+ <item msgid="114384731934682483">"ትኩረት ላይ የተመሰረተ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"በመሣሪያ ማሳያ ላይ ብቻ ጥላ አሳይ"</item>
+ <item msgid="7795034287069726554">"መሣሪያን በአንድ ውጫዊ ማሳያ ላይ አሳይ"</item>
+ <item msgid="5280431949814340475">"በመጨረሻ ትኩረት የተደረገበት ማሳያ ላይ መሣሪያን አሳይ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 03cde01..6161873 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ገቢር (ግራ ብቻ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ገቢር (ቀኝ ብቻ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ገቢር (ግራ እና ቀኝ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ገቢር (ሚዲያ ብቻ)። <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ገቢር (ሚዲያ ብቻ)። ግ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>፣ ቀ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ባትሪ።"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)፣ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"የእነማ ልኬት ለውጥ ሽግግር"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"እነማ አድራጊ ቆይታ መለኪያ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ሁለተኛ ማሳያዎችን አስመስለህ ሥራ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"የጥላ ማሳያ አቀማመጥ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"መተግበሪያዎች"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"እንቅስቃሴዎችን አትጠብቅ"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ተጠቃሚው እስኪተወው ድረስ እያንዳንዱን እንቅስቃሴ አስወግድ"</string>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index f389f64..3ff5dc6 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"شاشة الجهاز فقط (الإعداد التلقائي)"</item>
+ <item msgid="9161645858025071955">"الشاشة الخارجية"</item>
+ <item msgid="114384731934682483">"على الشاشة التي يتم التركيز عليها"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"عرض الظل على شاشة الجهاز فقط"</item>
+ <item msgid="7795034287069726554">"عرض الظل على شاشة خارجية واحدة"</item>
+ <item msgid="5280431949814340475">"عرض الظل على آخر شاشة تم التركيز عليها"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 87a8241..a298294 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"سماعة الأذن الطبية نشطة (اليسرى فقط)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"سماعة الأذن الطبية نشطة (اليمنى فقط)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"سماعتا الأذن الطبيتان نشطتان (اليسرى واليمنى)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"البلوتوث نشِط (للوسائط فقط). مستوى شحن البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"البلوتوث نشِط (للوسائط فقط)، مستوى الشحن في سماعة الرأس اليسرى: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، مستوى الشحن في سماعة الرأس اليمنى: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى شحن البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"حجم الرسوم المتحركة للنقل"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"طول مدة الرسوم المتحركة"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"محاكاة الشاشات الثانوية"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"موضع شاشة عرض الظل"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"التطبيقات"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"عدم الاحتفاظ بالأنشطة"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"محو كل نشاط فور مغادرة المستخدم له"</string>
diff --git a/packages/SettingsLib/res/values-as/arrays.xml b/packages/SettingsLib/res/values-as/arrays.xml
index b5dfde5..4b5d5a0 100644
--- a/packages/SettingsLib/res/values-as/arrays.xml
+++ b/packages/SettingsLib/res/values-as/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"কেৱল ডিভাইচৰ ডিছপ্লে’ (ডিফ’ল্ট)"</item>
+ <item msgid="9161645858025071955">"বাহ্যিক ডিছপ্লে’"</item>
+ <item msgid="114384731934682483">"ফ’কাছ-আধাৰিত"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"কেৱল ডিভাইচৰ ডিছপ্লে’তহে শ্বেড দেখুৱাওক"</item>
+ <item msgid="7795034287069726554">"ডিভাইচটো এখনেই বাহ্যিক ডিছপ্লে’ত দেখুৱাওক"</item>
+ <item msgid="5280431949814340475">"ডিভাইচটো অন্তিম ফ’কাছ কৰা ডিছপ্লে’ত দেখুৱাওক"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 4aab7d6..addf12b 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"সক্ৰিয় হৈ আছে (কেৱল বাওঁফালৰটো)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"সক্ৰিয় হৈ আছে (কেৱল সোঁফালৰটো)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"সক্ৰিয় হৈ আছে (বাওঁফালৰটো আৰু সোঁফালৰটো)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)। বাওঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, সোঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> বেটাৰী।"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্ৰাঞ্জিশ্বন এনিমেশ্বন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"এনিমেটৰ কালদৈৰ্ঘ্য স্কেল"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"গৌণ প্ৰদৰ্শনৰ নকল বনাওক"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"শ্বেড ডিছপ্লে’ৰ স্থান"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"এপ্সমূহ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"কাৰ্যকলাপসমূহ নাৰাখিব"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ব্যৱহাৰকাৰী ওলোৱাৰ লগে লগে আটাইবোৰ কাৰ্যকলাপ মচক"</string>
diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml
index 4f7aabd..511e970 100644
--- a/packages/SettingsLib/res/values-az/arrays.xml
+++ b/packages/SettingsLib/res/values-az/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Yalnız cihaz displeyi (defolt)"</item>
+ <item msgid="9161645858025071955">"Xarici displey"</item>
+ <item msgid="114384731934682483">"Fokus əsaslı"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Kölgəni yalnız cihaz displeyində göstərin"</item>
+ <item msgid="7795034287069726554">"Cihazı bir xarici displeydə göstərin"</item>
+ <item msgid="5280431949814340475">"Cihazı son fokuslanmış displeydə göstərin"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 5841bda..6f97c9c 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiv (yalnız sol)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiv (yalnız sağ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiv (sol və sağ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (yalnız media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (yalnız media). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batareya."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Qoşulub (audio paylaşma dəstəklənir). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Keçid animasiyası"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animasiya müddəti"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"İkincili displeyi imitasiya edin"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Kölgənin ekran mövqeyi"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Tətbiqlər"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Fəaliyyətlər saxlanmasın"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"İstifadəçi çıxan kimi fəaliyyət silinsin"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
index f5ba2df..4528314 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Prikaz samo na uređaju (podrazumevano)"</item>
+ <item msgid="9161645858025071955">"Spoljni ekran"</item>
+ <item msgid="114384731934682483">"Zasnovano na fokusu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Prikaži senku samo na ekranu uređaja"</item>
+ <item msgid="7795034287069726554">"Prikaži uređaj na jednom spoljnom ekranu"</item>
+ <item msgid="5280431949814340475">"Prikaži uređaj na poslednjem ekranu u fokusu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index d36a864..fc55fff 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktivno (samo levo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktivno (samo desno)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktivno (levo i desno)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo za medije). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo za medije). Levo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava deljenje zvuka), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Razmera animacije prelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorova razmera trajanja"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuliraj sekundarne ekrane"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Položaj senke na ekranu"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne čuvaj aktivnosti"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uništava svaku aktivnost čim je korisnik napusti"</string>
diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml
index e70d694..3339361 100644
--- a/packages/SettingsLib/res/values-be/arrays.xml
+++ b/packages/SettingsLib/res/values-be/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Толькі дысплэй прылады (стандартна)"</item>
+ <item msgid="9161645858025071955">"Знешні дысплэй"</item>
+ <item msgid="114384731934682483">"У залежнасці ад выкарыстання"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Паказваць шчыток толькі на дысплэі прылады"</item>
+ <item msgid="7795034287069726554">"Паказваць прыладу на адным знешнім дысплэі"</item>
+ <item msgid="5280431949814340475">"Паказваць прыладу на дысплэі, які выкарыстоўваўся апошнім"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 29f5542..be86aca 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Выкарыстоўваецца (толькі левы навушнік)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Выкарыстоўваецца (толькі правы навушнік)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Выкарыстоўваецца (левы і правы навушнікі)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Выкарыстоўваецца (толькі для мультымедыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Выкарыстоўваецца (толькі для мультымедыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (левы навушнік), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (правы навушнік)."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Маштаб перадачы анімацыі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Працягласць анімацыі"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Мадэляванне другасных экранаў"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Месца паказу шчытка"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Праграмы"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Не захоўваць дзеянні"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Выдаляць усе дзеянні пасля выхаду карыстальніка"</string>
diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml
index ce497f3..c3bc26f 100644
--- a/packages/SettingsLib/res/values-bg/arrays.xml
+++ b/packages/SettingsLib/res/values-bg/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Само на екрана на устройството (по подразбиране)"</item>
+ <item msgid="9161645858025071955">"Външен екран"</item>
+ <item msgid="114384731934682483">"Въз основа на фокуса"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Показване на падащия панел само на екрана на устройството"</item>
+ <item msgid="7795034287069726554">"Показване на устройството на един външен екран"</item>
+ <item msgid="5280431949814340475">"Показване на устройството на екрана, върху който последно е бил поставен фокусът"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 8d261a2..624c55b 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Активно (само лявото)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Активно (само дясното)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Активно (лявото и дясното)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само за мултимедия). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само за мултимедия). Л: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Д: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Свързано (поддържа споделяне на звука). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Скала на преходната анимация"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Скала за Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Симулиране на алтерн. дисплеи"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Позиция на показване на падащия панел"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Приложения"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Без съхран. на дейностите"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Унищож. на всяка дейност при напускане от потребител"</string>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index f30ff08..2b939d0 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"শুধুমাত্র ডিভাইসের ডিসপ্লে (ডিফল্ট)"</item>
+ <item msgid="9161645858025071955">"এক্সটার্নাল ডিসপ্লে"</item>
+ <item msgid="114384731934682483">"ফোকাস অনুযায়ী"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"শুধুমাত্র ডিভাইসের ডিসপ্লেতে শেড দেখুন"</item>
+ <item msgid="7795034287069726554">"শেড একটি এক্সটার্নাল ডিসপ্লেতে দেখুন"</item>
+ <item msgid="5280431949814340475">"ফোকাস করা শেষ ডিসপ্লেতে ডিভাইস দেখুন"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 0ad50cc..fcc99ca 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"চালু আছে (শুধু বাঁদিক)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"চালু আছে (শুধু ডানদিক)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"চালু আছে (বাঁদিক ও ডানদিক)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"চালু আছে (শুধুমাত্র মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"চালু আছে (শুধুমাত্র মিডিয়া), বাঁদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ডানদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ব্যাটারি।"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্র্যানজিশন অ্যানিমেশন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"অ্যানিমেটর সময়কাল স্কেল"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"গৌণ প্রদর্শনগুলি নকল করুন"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"শেড ডিসপ্লে করার পজিশন"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"অ্যাপ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"অ্যাক্টিভিটি রাখবেন না"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ব্যবহারকারী এটি ছেড়ে যাওয়ার পরে যত তাড়াতাড়ি সম্ভব প্রতিটি অ্যাক্টিভিটি ধ্বংস করুন"</string>
diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml
index 069dc04..625112c 100644
--- a/packages/SettingsLib/res/values-bs/arrays.xml
+++ b/packages/SettingsLib/res/values-bs/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Samo zaslon uređaja (zadano)"</item>
+ <item msgid="9161645858025071955">"Vanjski ekran"</item>
+ <item msgid="114384731934682483">"Na osnovu fokusa"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Prikaži sjenu samo na ekranu uređaja"</item>
+ <item msgid="7795034287069726554">"Prikaži uređaj na jednom vanjskom ekranu"</item>
+ <item msgid="5280431949814340475">"Prikaži uređaj na posljednjem fokusiranom ekranu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index a30bcfa..fea1fa5 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktivno (samo lijevo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktivno (samo desno)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktivno (lijevo i desno)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo za medijski sadržaj). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo za medijski sadržaj). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava dijeljenje zvuka). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala trajanja animatora"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulacija sekundarnih ekrana"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Položaj prikaza sjene"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne čuvaj aktivnosti"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Obustavlja se svaka aktivnost čim je korisnik napusti"</string>
diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml
index 133ad13..e9b437e 100644
--- a/packages/SettingsLib/res/values-ca/arrays.xml
+++ b/packages/SettingsLib/res/values-ca/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Només a la pantalla del dispositiu (opció predeterminada)"</item>
+ <item msgid="9161645858025071955">"Pantalla externa"</item>
+ <item msgid="114384731934682483">"Basat en l\'enfocament"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostra l\'ombra només a la pantalla del dispositiu"</item>
+ <item msgid="7795034287069726554">"Mostra el dispositiu en una sola pantalla externa"</item>
+ <item msgid="5280431949814340475">"Mostra el dispositiu a la darrera pantalla en què s\'hagi posat el focus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index ba733de..3f73bcc 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Actiu (només l\'esquerre)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Actiu (només el dret)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Actiu (esquerre i dret)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actiu (només contingut multimèdia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actiu (només contingut multimèdia), E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connectat (admet compartició d\'àudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala d\'animació de la transició"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de durada de l\'animació"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simula pantalles secundàries"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posició de l\'ombra a la pantalla"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicacions"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"No desis les activitats"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destrueix activitats quan l\'usuari deixi d\'utilitzar-les"</string>
diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml
index 20405ed6..4bfdaf4 100644
--- a/packages/SettingsLib/res/values-cs/arrays.xml
+++ b/packages/SettingsLib/res/values-cs/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Pouze zobrazení zařízení (výchozí)"</item>
+ <item msgid="9161645858025071955">"Externí displej"</item>
+ <item msgid="114384731934682483">"Výběr"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Zobrazovat panel pouze na displeji zařízení"</item>
+ <item msgid="7795034287069726554">"Zobrazovat panel na jednom externím displeji"</item>
+ <item msgid="5280431949814340475">"Zobrazovat panel na naposledy vybraném displeji"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 1a239a1..940e2f6 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktivní (pouze levé)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktivní (pouze pravé)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktivní (levé a pravé)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivní (pouze média). Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivní (pouze média), baterie: L <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Připojeno (podporuje sdílení zvuku), baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Měřítko animace přeměny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Měřítko délky animace"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulovat sekundární obrazovky"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Pozice panelu"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikace"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Neukládat aktivity"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Rušit všechny činnosti, jakmile je uživatel zavře"</string>
diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml
index 3d2d6c7..6949755 100644
--- a/packages/SettingsLib/res/values-da/arrays.xml
+++ b/packages/SettingsLib/res/values-da/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Kun på enhedens skærm (standard)"</item>
+ <item msgid="9161645858025071955">"Ekstern skærm"</item>
+ <item msgid="114384731934682483">"Fokusbaseret"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Vis kun skygge på enhedens skærm"</item>
+ <item msgid="7795034287069726554">"Vis enheden på en enkelt ekstern skærm"</item>
+ <item msgid="5280431949814340475">"Vis enheden på den skærm, der sidst var i fokus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 3753e033..2b30847 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiveret (kun venstre)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiveret (kun højre)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiveret (venstre og højre)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiveret (kun for medier). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiveret (kun for medier), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Forbundet (understøtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimationsskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorvarighedsskala"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuler sekundære skærme"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Placering af skærmens skygge"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Behold ikke aktiviteter"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Luk hver aktivitet, så snart brugeren forlader den"</string>
diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml
index 291f4e5..adddd77 100644
--- a/packages/SettingsLib/res/values-de/arrays.xml
+++ b/packages/SettingsLib/res/values-de/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Nur Gerätedisplay (Standard)"</item>
+ <item msgid="9161645858025071955">"Externes Display"</item>
+ <item msgid="114384731934682483">"Fokusbasiert"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Leiste nur auf dem Display des Geräts anzeigen"</item>
+ <item msgid="7795034287069726554">"Gerät auf einem einzigen externen Display anzeigen"</item>
+ <item msgid="5280431949814340475">"Gerät auf zuletzt fokussiertem Display anzeigen"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 7d0b848..e9e9275f 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiv (nur links)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiv (nur rechts)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiv (links und rechts)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (nur Medien). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (nur Medien). Akku links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Akku rechts: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Verbunden (unterstützt Audiofreigabe). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Übergangsanimationsfaktor"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animationsdauerfaktor"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Sekundäre Displays simulieren"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Position der Leiste auf dem Display"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Aktivitäten nicht speichern"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Aktivität löschen, sobald der Nutzer diese beendet"</string>
diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml
index 27927eb..9d7612c 100644
--- a/packages/SettingsLib/res/values-el/arrays.xml
+++ b/packages/SettingsLib/res/values-el/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Μόνο οθόνη συσκευής (Προεπιλογή)"</item>
+ <item msgid="9161645858025071955">"Εξωτερική οθόνη"</item>
+ <item msgid="114384731934682483">"Με εστίαση"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Εμφάνιση σκίασης μόνο στην οθόνη συσκευής"</item>
+ <item msgid="7795034287069726554">"Εμφάνιση συσκευής σε μία εξωτερική οθόνη"</item>
+ <item msgid="5280431949814340475">"Εμφάνιση συσκευής στην τελευταία οθόνη με εστίαση"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 915cabb..4662c3c 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ενεργό (μόνο το αριστερό)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ενεργό (μόνο το δεξί)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ενεργό (αριστερό και δεξί)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ενεργό (μόνο για μέσα). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ενεργό (μόνο για μέσα). Α: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Δ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> μπαταρία."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Κλίμακα κίνησης μετάβασης"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Κλίμ. διάρ. Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Προσομ. δευτερ. προβολών"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Θέση οθόνης σκίασης"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Εφαρμογές"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Μη διατήρ. δραστηριοτήτων"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Διαγραφή κάθε δραστηριότητας μετά τον τερματισμό"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml
index 7e846fb..8c27ec6 100644
--- a/packages/SettingsLib/res/values-en-rAU/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Device display only (default)"</item>
+ <item msgid="9161645858025071955">"External display"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Show shade on device display only"</item>
+ <item msgid="7795034287069726554">"Show device on single external display"</item>
+ <item msgid="5280431949814340475">"Show device on last focused display"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index d9c35f5..b281f4c 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Active (left only)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Active (right only)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Active (left and right)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulate secondary displays"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Shade display position"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Don\'t keep activities"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destroy every activity as soon as the user leaves it"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/arrays.xml b/packages/SettingsLib/res/values-en-rCA/arrays.xml
index ec6894a..cfe77ca 100644
--- a/packages/SettingsLib/res/values-en-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rCA/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Device display only (Default)"</item>
+ <item msgid="9161645858025071955">"External display"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Show shade on device display only"</item>
+ <item msgid="7795034287069726554">"Show device on single external display"</item>
+ <item msgid="5280431949814340475">"Show device on last focused display"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 887841c..3d5d5c7 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -110,6 +110,7 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Active (left only)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Active (right only)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Active (left and right)"</string>
+ <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Couldn’t update surroundings"</string>
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
@@ -423,6 +424,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulate secondary displays"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Shade display position"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Don’t keep activities"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destroy every activity as soon as the user leaves it"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml
index 7e846fb..8c27ec6 100644
--- a/packages/SettingsLib/res/values-en-rGB/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Device display only (default)"</item>
+ <item msgid="9161645858025071955">"External display"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Show shade on device display only"</item>
+ <item msgid="7795034287069726554">"Show device on single external display"</item>
+ <item msgid="5280431949814340475">"Show device on last focused display"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index d9c35f5..b281f4c 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Active (left only)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Active (right only)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Active (left and right)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulate secondary displays"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Shade display position"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Don\'t keep activities"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destroy every activity as soon as the user leaves it"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml
index 7e846fb..8c27ec6 100644
--- a/packages/SettingsLib/res/values-en-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Device display only (default)"</item>
+ <item msgid="9161645858025071955">"External display"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Show shade on device display only"</item>
+ <item msgid="7795034287069726554">"Show device on single external display"</item>
+ <item msgid="5280431949814340475">"Show device on last focused display"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index d9c35f5..b281f4c 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Active (left only)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Active (right only)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Active (left and right)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulate secondary displays"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Shade display position"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Don\'t keep activities"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destroy every activity as soon as the user leaves it"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml
index 541f4db..daf9ab9 100644
--- a/packages/SettingsLib/res/values-es-rUS/arrays.xml
+++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Solo en la pantalla del dispositivo (predeterminado)"</item>
+ <item msgid="9161645858025071955">"Pantalla externa"</item>
+ <item msgid="114384731934682483">"Basado en el enfoque"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar sobra solo en la pantalla del dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar dispositivo en una sola pantalla externa"</item>
+ <item msgid="5280431949814340475">"Mostrar dispositivo en la última pantalla enfocada"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 191a8eb..6ad6008 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Activo (solo izquierdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Activo (solo derecho)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Activos (izquierdo y derecho)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activado (solo para contenido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (solo para contenido multimedia); I: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (admite el uso compartido de audio); <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animador"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular pantallas secundarias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posición de visualización de la sombra"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicaciones"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Eliminar actividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Descartar todas las actividades en cuanto el usuario las abandona"</string>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
index b99219c..a4bb49e 100644
--- a/packages/SettingsLib/res/values-es/arrays.xml
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Solo en la pantalla del dispositivo (predeterminado)"</item>
+ <item msgid="9161645858025071955">"Pantalla externa"</item>
+ <item msgid="114384731934682483">"Basado en el enfoque"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar el panel solo en la pantalla del dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar el dispositivo en una sola pantalla externa"</item>
+ <item msgid="5280431949814340475">"Mostrar el dispositivo en la última pantalla enfocada"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 95ebbfa..6019751 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Activo (solo izquierdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Activo (solo derecho)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Activo (izquierdo y derecho)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activo (solo multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (solo multimedia). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (permite compartir audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animación"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular pantallas secundarias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posición del panel en la pantalla"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicaciones"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"No mantener actividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir actividades cuando el usuario salga de ellas"</string>
diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml
index 6762abf..9a77991 100644
--- a/packages/SettingsLib/res/values-et/arrays.xml
+++ b/packages/SettingsLib/res/values-et/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Ainult seadme ekraan (vaikimisi)"</item>
+ <item msgid="9161645858025071955">"Väline ekraan"</item>
+ <item msgid="114384731934682483">"Fookusepõhine"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Kuva menüü ainult seadme ekraanil"</item>
+ <item msgid="7795034287069726554">"Kuva seade ühe välisel ekraanil"</item>
+ <item msgid="5280431949814340475">"Kuva seade viimati esile tõstetud ekraanil"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 802c1e2..773b1e6 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiivne (ainult vasak)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiivne (ainult parem)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiivne (vasak ja parem)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiivne (ainult meedia). Aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiivne (ainult meedia). Aku: V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ühendatud (toetab heli jagamist). Aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ülemineku animatsioonimastaap"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaatori kestuse mastaap"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Modelleeri teisi ekraane"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Menüü kuvamise asukoht"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Rakendused"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ära hoia tegevusi alles"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Hävita kõik tegevused kohe, kui kasutaja neist lahkub"</string>
diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml
index 6ed484c..3d59a27 100644
--- a/packages/SettingsLib/res/values-eu/arrays.xml
+++ b/packages/SettingsLib/res/values-eu/arrays.xml
@@ -153,15 +153,15 @@
<item msgid="1333279807604675720">"Estereoa"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_ldac_playback_quality_titles">
- <item msgid="1241278021345116816">"Audioaren kalitatea areagotzeko optimizatua (990 Kb/s / 909 Kb/s)"</item>
+ <item msgid="1241278021345116816">"Audioaren kalitatea hobetzeko optimizatua (990 Kb/s / 909 Kb/s)"</item>
<item msgid="3523665555859696539">"Audioaren eta konexioaren kalitate orekatua (660 Kb/s / 606 Kb/s)"</item>
- <item msgid="886408010459747589">"Konexioaren kalitatea areagotzeko optimizatua (330 Kb/s / 303 Kb/s)"</item>
+ <item msgid="886408010459747589">"Konexioaren kalitatea hobetzeko optimizatua (330 Kb/s / 303 Kb/s)"</item>
<item msgid="3808414041654351577">"Emaitzarik onenak (bit-abiadura egokitua)"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_ldac_playback_quality_summaries">
- <item msgid="804499336721569838">"Audioaren kalitatea areagotzeko optimizatua"</item>
+ <item msgid="804499336721569838">"Audioaren kalitatea hobetzeko optimizatua"</item>
<item msgid="7451422070435297462">"Orekatu audioaren eta konexioaren kalitateak"</item>
- <item msgid="6173114545795428901">"Konexioaren kalitatea areagotzeko optimizatua"</item>
+ <item msgid="6173114545795428901">"Konexioaren kalitatea hobetzeko optimizatua"</item>
<item msgid="4349908264188040530">"Emaitzarik onenak (bit-abiadura egokitua)"</item>
</string-array>
<string-array name="bluetooth_audio_active_device_summaries">
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Gailuaren pantailan soilik (lehenetsia)"</item>
+ <item msgid="9161645858025071955">"Kanpoko pantailan"</item>
+ <item msgid="114384731934682483">"Fokuaren arabera"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Erakutsi itzalak gailuaren pantailan soilik"</item>
+ <item msgid="7795034287069726554">"Erakutsi gailua kanpoko pantaila bakarrean"</item>
+ <item msgid="5280431949814340475">"Erakutsi gailua fokuratutako azken pantailan"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 16dd1f6..274b9a1 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktibo (ezkerrekoa soilik)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktibo (eskuinekoa soilik)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktibo (ezkerrekoa eta eskuinekoa)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktibo (multimedia-edukia soilik). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktibo (multimedia-edukia soilik). L aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. R aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Trantsizioen animazio-eskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatzailearen iraupen-eskala"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulatu bigarren mailako pantailak"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Itzalak pantailan duen posizioa"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikazioak"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ez mantendu jarduerak"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Ezabatu jarduerak erabiltzailea haietatik irtetean"</string>
diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml
index d150538..9e1da41 100644
--- a/packages/SettingsLib/res/values-fa/arrays.xml
+++ b/packages/SettingsLib/res/values-fa/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"۲"</item>
<item msgid="4779928470672877922">"۳"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"فقط نمایشگر دستگاه (پیشفرض)"</item>
+ <item msgid="9161645858025071955">"نمایشگر خارجی"</item>
+ <item msgid="114384731934682483">"کانونیمحور"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"نمایش سایه فقط در نمایشگر دستگاه"</item>
+ <item msgid="7795034287069726554">"نمایش دستگاه در یک نمایشگر خارجی"</item>
+ <item msgid="5280431949814340475">"نمایش دستگاه در آخرین نمایشگر کانونیشده"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"نمایشگر_پیشفرض"</item>
+ <item msgid="774789415968826925">"هر_نمایشگر_خارجی"</item>
+ <item msgid="7880769915418638436">"آخرین_لمس_نوار_وضعیت"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 85ef0f9..6154b8c 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"فعال (فقط چپ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"فعال (فقط راست)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"فعال (چپ و راست)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"فعال (فقط رسانه). باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"فعال (فقط رسانه). باتری چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، باتری راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"متصل (از اشتراک صدا پشتیبانی میکند)، باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"مقیاس پویانمایی انتقالی"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"مقیاس طول مدت مقیاس مدت پویانماساز"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"شبیهسازی نمایشگر ثانویه"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"موقعیت سایه نمایشگر"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"برنامهها"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"فعالیتها نگه داشته نشوند"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"از بین بردن هر فعالیت به محض خروج کاربر از آن"</string>
diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml
index 92814de..0c970ec 100644
--- a/packages/SettingsLib/res/values-fi/arrays.xml
+++ b/packages/SettingsLib/res/values-fi/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Vain laitteen näyttö (oletus)"</item>
+ <item msgid="9161645858025071955">"Ulkoinen näyttö"</item>
+ <item msgid="114384731934682483">"Kohdistusperustainen"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Näytä ilmoitusalue vain laitteen näytöllä"</item>
+ <item msgid="7795034287069726554">"Näytä laite yhdellä ulkoisella näytöllä"</item>
+ <item msgid="5280431949814340475">"Näytä laite viimeksi kohdistetulla näytöllä"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 4b18d2f..7baf2a0 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiivinen (vain vasen)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiivinen (vain oikea)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiivinen (vasen ja oikea)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiivinen (vain media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiivinen (vain media). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, O: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> virtaa."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Yhdistetty (tukee audionjakoa). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Siirtymä"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaattori"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuloi toissijaiset näytöt"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Ilmoitusalueen sijainti näytöllä"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Sovellukset"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Älä säilytä toimintoja"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Tuhoa kaikki toiminnot, kun käyttäjä poistuu"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
index 15cb17d..6fc0ed9 100644
--- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Écran de l\'appareil seulement (par défaut)"</item>
+ <item msgid="9161645858025071955">"Écran externe"</item>
+ <item msgid="114384731934682483">"Affichage mis en évidence"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Afficher le volet sur l\'écran de l\'appareil seulement"</item>
+ <item msgid="7795034287069726554">"Afficher l\'appareil sur un seul écran externe"</item>
+ <item msgid="5280431949814340475">"Afficher l\'appareil sur le dernier affichage mis en évidence"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index a1d1599..699fa7f 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Actif (gauche seulement)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Actif (droite seulement)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Actif (gauche et droite)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actif (contenu multimédia uniquement). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actif (contenu multimédia uniquement). G. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connecté (prise en charge du partage audio). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Éch. d\'animation des transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle durée animation"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuler affich. secondaires"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Position d\'affichage du volet"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Applis"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne pas conserver activités"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Supprimer immédiatement les activités abandonnées"</string>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index b32adc9..970e217 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Écran de l\'appareil uniquement (par défaut)"</item>
+ <item msgid="9161645858025071955">"Écran externe"</item>
+ <item msgid="114384731934682483">"Basé sur la sélection"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Afficher le volet sur l\'écran de l\'appareil uniquement"</item>
+ <item msgid="7795034287069726554">"Afficher l\'appareil sur un seul écran externe"</item>
+ <item msgid="5280431949814340475">"Afficher l\'appareil sur le dernier écran sélectionné"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index f22f8bf..73dbdbf 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Actif (gauche uniquement)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Actif (droit uniquement)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Actifs (gauche et droit)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actif (multimédia uniquement). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actif (multimédia uniquement). Gauche : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batterie, droit : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batterie."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connecté (compatible avec le partage audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle d\'animation des transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle de durée d\'animation"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuler des écrans secondaires"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Position d\'affichage du volet"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Applications"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne pas conserver les activités"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Supprimer immédiatement les activités abandonnées"</string>
diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml
index 8f7a8b6..cd085fa 100644
--- a/packages/SettingsLib/res/values-gl/arrays.xml
+++ b/packages/SettingsLib/res/values-gl/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Só pantalla do dispositivo (opción predeterminada)"</item>
+ <item msgid="9161645858025071955">"Pantalla externa"</item>
+ <item msgid="114384731934682483">"En función do enfoque"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar panel despregable só na pantalla do dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar dispositivo nunha única pantalla externa"</item>
+ <item msgid="5280431949814340475">"Mostrar dispositivo na última pantalla enfocada"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"pantalla_predeterminada"</item>
+ <item msgid="774789415968826925">"calquera_pantalla_externa"</item>
+ <item msgid="7880769915418638436">"último_toque_barra_estado"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 6a22a9b..9f14f7c 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Activo (só o esquerdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Activo (só o dereito)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Activos (o esquerdo e o dereito)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activo (só contido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (só contido multimedia). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (compatible con audio compartido). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala animación-transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala duración animador"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular pantallas secundarias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posición do panel despregable na pantalla"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicacións"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Non manter actividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destrúe as actividades cando o usuario non as usa"</string>
diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml
index 4f7cbd2..912df2d 100644
--- a/packages/SettingsLib/res/values-gu/arrays.xml
+++ b/packages/SettingsLib/res/values-gu/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"માત્ર ડિવાઇસનું ડિસ્પ્લે (ડિફૉલ્ટ)"</item>
+ <item msgid="9161645858025071955">"બાહ્ય ડિસ્પ્લે"</item>
+ <item msgid="114384731934682483">"ફોકસ-આધારિત"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"માત્ર ડિવાઇસના ડિસ્પ્લે પર શેડ બતાવો"</item>
+ <item msgid="7795034287069726554">"માત્ર એક બાહ્ય ડિસ્પ્લે પર ડિવાઇસ બતાવો"</item>
+ <item msgid="5280431949814340475">"છેલ્લે ફોકસ કરેલા ડિસ્પ્લે પર ડિવાઇસ બતાવો"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 91518d3..74b19f6 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ચાલુ છે (માત્ર ડાબી બાજુ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ચાલુ છે (માત્ર જમણી બાજુ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ચાલુ છે (ડાબી અને જમણી બાજુ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"સક્રિય (માત્ર મીડિયા માટે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"સક્રિય (માત્ર મીડિયા માટે). ડાબી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, જમણી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> બૅટરી."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ટ્રાન્ઝિશન ઍનિમેશન સ્કેલ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ઍનિમેટર અવધિ સ્કેલ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"સેકન્ડરી ડિસ્પ્લેનું અનુકરણ કરો"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"શેડના ડિસ્પ્લેની સ્થિતિ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ઍપ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"પ્રવૃત્તિઓ રાખશો નહીં"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"જેવો વપરાશકર્તા તેને છોડે, તરત જ દરેક પ્રવૃત્તિ નષ્ટ કરો"</string>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index 2173ad6..25d6388 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"सिर्फ़ डिवाइस का डिसप्ले (डिफ़ॉल्ट)"</item>
+ <item msgid="9161645858025071955">"बाहरी डिसप्ले पर"</item>
+ <item msgid="114384731934682483">"फ़ोकस के हिसाब से"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"सिर्फ़ डिवाइस के डिसप्ले पर शेड दिखाएं"</item>
+ <item msgid="7795034287069726554">"शेड को बाहरी डिसप्ले पर दिखाएं"</item>
+ <item msgid="5280431949814340475">"फ़ोकस किए गए पिछले डिसप्ले पर शेड दिखाएं"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 10a46225..8f9229a 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"सिर्फ़ बाईं तरफ़ वाला चालू है"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"सिर्फ़ दाईं तरफ़ वाला चालू है"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"बाईं और दाईं तरफ़ वाला चालू है"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"चालू है (सिर्फ़ मीडिया के लिए). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"चालू है (सिर्फ़ मीडिया के लिए). बायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बैटरी."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांज़िशन ऐनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ऐनिमेटर ड्यूरेशन स्केल"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"कई साइज़ के डिसप्ले बनाएं"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"शेड दिखने की स्थिति"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ऐप्लिकेशन"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"गतिविधियों को न रखें"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"उपयोगकर्ता के छोड़ते ही हर गतिविधि को खत्म करें"</string>
diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml
index f4bb419..639e39e 100644
--- a/packages/SettingsLib/res/values-hr/arrays.xml
+++ b/packages/SettingsLib/res/values-hr/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Samo zaslon uređaja (zadano)"</item>
+ <item msgid="9161645858025071955">"Vanjski zaslon"</item>
+ <item msgid="114384731934682483">"Na temelju fokusa"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Prikaži sjenu samo na zaslonu uređaja"</item>
+ <item msgid="7795034287069726554">"Prikaži uređaj na jednom vanjskom zaslonu"</item>
+ <item msgid="5280431949814340475">"Prikaži uređaj na posljednjem fokusiranom zaslonu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index c3284ae..3a18da0 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktivno (samo lijevo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktivno (samo desno)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktivno (lijevo i desno)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo medijski sadržaji). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo medijski sadržaji), L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava zajedničko slušanje). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Brzina animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Brzina generiranja animacija"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulacija sekundarnih zaslona"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Položaj prikaza sjene"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ukloni aktivnosti"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Aktivnost se uklanja čim je korisnik napusti"</string>
diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml
index 6ece81a..d131966 100644
--- a/packages/SettingsLib/res/values-hu/arrays.xml
+++ b/packages/SettingsLib/res/values-hu/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Csak az eszköz kijelzője (alapértelmezett)"</item>
+ <item msgid="9161645858025071955">"Külső kijelző"</item>
+ <item msgid="114384731934682483">"Fókusz alapján"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Felület megjelenítése csak az eszköz kijelzőjén"</item>
+ <item msgid="7795034287069726554">"Felület megjelenítése egyetlen külső kijelzőn"</item>
+ <item msgid="5280431949814340475">"Felület megjelenítése a legutóbb fókuszban lévő kijelzőn"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index dcf1610..00ca5c6 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktív (csak bal)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktív (csak jobb)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktív (bal és jobb)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktív (csak médiatartalom lejátszása esetén). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktív (csak médiatartalom lejátszása esetén). Akkumulátorok töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (bal) és <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (jobb)."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Csatlakoztatva (támogatja a hang megosztását). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Áttűnési animáció tempója"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animáció tempója"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Másodlagos kijelzők szimulálása"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Felület megjelenítési pozíciója"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Alkalmazások"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Tevékenységek törlése"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Tevékenységek törlése, amint elhagyják azokat"</string>
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index 6819f31..5654501 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Միայն սարքի էկրանը (կանխադրված)"</item>
+ <item msgid="9161645858025071955">"Արտաքին էկրան"</item>
+ <item msgid="114384731934682483">"Ֆոկուսի հիման վրա"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Ցույց տալ երանգը միայն սարքի էկրանին"</item>
+ <item msgid="7795034287069726554">"Ցույց տալ սարքը մեկ արտաքին էկրանին"</item>
+ <item msgid="5280431949814340475">"Ցույց տալ սարքը վերջին ֆոկուսավորված էկրանին"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index cd6cfdf..58eca5c 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ակտիվ է (միայն ձախ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ակտիվ է (միայն աջ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ակտիվ է (ձախ և աջ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ակտիվ է (միայն մեդիա)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ակտիվ է (միայն մեդիա)։ Ձախ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, աջ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>։"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Անցումների շարժապատկեր"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Շարժանկարի տևողության սանդղակ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Կրկնաստեղծել երկրորդական էկրան"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Երանգի ցուցադրման դիրքը"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Հավելվածներ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Չպահել գործողությունները"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Օգտատիրոջ դուրս գալուց հետո հեռացնել բոլոր գործողությունները"</string>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
index 00ea04d..c256e8c 100644
--- a/packages/SettingsLib/res/values-in/arrays.xml
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Hanya layar perangkat (Default)"</item>
+ <item msgid="9161645858025071955">"Layar eksternal"</item>
+ <item msgid="114384731934682483">"Berbasis fokus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Tampilkan shade hanya di layar perangkat"</item>
+ <item msgid="7795034287069726554">"Tampilkan perangkat di satu layar eksternal"</item>
+ <item msgid="5280431949814340475">"Tampilkan perangkat di layar yang terakhir difokuskan"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index cd53507..1652ebf 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktif (hanya kiri)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktif (hanya kanan)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktif (kiri dan kanan)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktif (hanya media). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktif (hanya media). Baterai L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Terhubung (mendukung berbagi audio). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi transisi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala durasi animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulasikan tampilan sekunder"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posisi shade layar"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikasi"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Jangan simpan aktivitas"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Hancurkan aktivitas setelah ditinggal pengguna"</string>
diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml
index 928cdfa..1d81344 100644
--- a/packages/SettingsLib/res/values-is/arrays.xml
+++ b/packages/SettingsLib/res/values-is/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Aðeins skjár tækis (sjálfgefið)"</item>
+ <item msgid="9161645858025071955">"Ytri skjár"</item>
+ <item msgid="114384731934682483">"Byggt á fókus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Aðeins skyggja skjá tækis"</item>
+ <item msgid="7795034287069726554">"Sýna tæki á einum ytri skjá"</item>
+ <item msgid="5280431949814340475">"Sýna tæki á skjá sem var síðast í fókus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index ff4e38b..bc766325 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Kveikt (eingöngu vinstra)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Kveikt (eingöngu hægra)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Kveikt (vinstra og hægra)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Virkt (eingöngu margmiðlunarefni). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Virkt (eingöngu margmiðlunarefni), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> rafhlöðuhleðsla."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Tengt (styður hljóðdeilingu), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Lengd hreyfiumbreytinga"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tímalengd hreyfiáhrifa"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Herma eftir aukaskjáum"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Staðsetning skugga á skjá"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Forrit"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ekki vista virkni"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Eyðileggja öll verk um leið og notandi yfirgefur þau"</string>
diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml
index c9f31ff..331410c 100644
--- a/packages/SettingsLib/res/values-it/arrays.xml
+++ b/packages/SettingsLib/res/values-it/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Solo display del dispositivo (impostazione predefinita)"</item>
+ <item msgid="9161645858025071955">"Display esterno"</item>
+ <item msgid="114384731934682483">"In base alla selezione"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostra l\'area delle notifiche solo sul display del dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostra il dispositivo su un singolo display esterno"</item>
+ <item msgid="5280431949814340475">"Mostra il dispositivo sull\'ultimo display selezionato"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 183a799..a604e5b 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -110,6 +110,7 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Attivo (solo sinistro)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Attivo (solo destro)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Attivi (destro e sinistro)"</string>
+ <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossibile aggiornare audio ambientale"</string>
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Attivo (solo contenuti multimediali). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Attivo (solo contenuti multimediali). S: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> di batteria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> di batteria."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connesso (supporta la condivisione audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
@@ -423,6 +424,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scala animazione transizione"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scala durata animatore"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simula display secondari"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posizione display area delle notifiche"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"App"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Non conservare attività"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Elimina ogni attività appena l\'utente la interrompe"</string>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
index 01bb1fb..d1771fc 100644
--- a/packages/SettingsLib/res/values-iw/arrays.xml
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"מסך המכשיר בלבד (ברירת המחדל)"</item>
+ <item msgid="9161645858025071955">"מסך חיצוני"</item>
+ <item msgid="114384731934682483">"לפי התמקדות"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"הצגת הצללה במסך המכשיר בלבד"</item>
+ <item msgid="7795034287069726554">"הצגת המכשיר במסך חיצוני אחד"</item>
+ <item msgid="5280431949814340475">"הצגת המכשיר במסך האחרון שהתמקדת בו"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index c2b9cbc..f51c916 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"פעיל (שמאל בלבד)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"פעיל (ימין בלבד)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"פעיל (ימין ושמאל)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"פעיל (מדיה בלבד). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"פעיל (מדיה בלבד). סוללה בצד שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, סוללה בצד ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"מחובר (תמיכה בשיתוף אודיו). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"קנה מידה לאנימציית מעבר"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"קנה מידה למשך זמן אנימציה"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"יצירת הדמיה של תצוגות משניות"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"מיקום התצוגה של ההצללה"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"אפליקציות"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ללא שמירת פעילויות"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"השמדת כל פעילות ברגע שהמשתמש עוזב אותה"</string>
diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml
index 31bcec1..9dc234b 100644
--- a/packages/SettingsLib/res/values-ja/arrays.xml
+++ b/packages/SettingsLib/res/values-ja/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"デバイスのディスプレイのみ(デフォルト)"</item>
+ <item msgid="9161645858025071955">"外部ディスプレイ"</item>
+ <item msgid="114384731934682483">"フォーカスに基づく"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"デバイスのディスプレイにのみシェードを表示する"</item>
+ <item msgid="7795034287069726554">"1 台の外部ディスプレイにデバイスを表示する"</item>
+ <item msgid="5280431949814340475">"最後にフォーカスされたディスプレイにデバイスを表示する"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 081ab48..923054d 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"アクティブ(左のみ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"アクティブ(右のみ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"アクティブ(左と右)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"有効(メディアのみ)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"有効(メディアのみ)。左: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>、右: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"接続済み(音声の共有をサポート)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"トランジション アニメ スケール"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 再生時間スケール"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"第2画面のシミュレーション"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"シェードの表示位置"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"アプリ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"アクティビティを保持しない"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ユーザーが離れたアクティビティを直ちに破棄する"</string>
diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml
index 4de27e7..8d1adf6 100644
--- a/packages/SettingsLib/res/values-ka/arrays.xml
+++ b/packages/SettingsLib/res/values-ka/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"მხოლოდ მოწყობილობის ეკრანი (ნაგულისხმევი)"</item>
+ <item msgid="9161645858025071955">"გარე ეკრანი"</item>
+ <item msgid="114384731934682483">"ფოკუსის მიხედვით"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"ჩრდილის ჩვენება მხოლოდ მოწყობილობის ეკრანზე"</item>
+ <item msgid="7795034287069726554">"ჩრდილის ჩვენება ერთ გარე ეკრანზე"</item>
+ <item msgid="5280431949814340475">"მოწყობილობის ჩვენება ბოლო ფოკუსირებულ ეკრანზე"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 0ca04a1..e8f1b07 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"აქტიური (მხოლოდ მარცხენა)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"აქტიური (მხოლოდ მარჯვენა)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"აქტიური (მარცხენა და მარჯვენა)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"აქტიური (მხოლოდ მედია). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>%% ბატარეა."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"აქტიური (მხოლოდ მედია), მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, მარჯვენა:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ბატარეა."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). ბატარეა <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"გადასვლის მასშტაბი"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ანიმაციების ხანგრძლივობის მასშტაბი"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"მეორადი ეკრანების სიმულაცია"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ჩრდილის პოზიცია ეკრანზე"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"აპები"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ნუ შეინარჩუნებ მოქმედებებს"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ნებისმიერი აქტივობის განადგურება დასრულებისთანავე"</string>
diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml
index 6669820..e8996de 100644
--- a/packages/SettingsLib/res/values-kk/arrays.xml
+++ b/packages/SettingsLib/res/values-kk/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Тек құрылғы дисплейі (әдепкі)"</item>
+ <item msgid="9161645858025071955">"Сыртқы дисплей"</item>
+ <item msgid="114384731934682483">"Назарға негізделген"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Құрылғы дисплейінде ғана реңк көрсету"</item>
+ <item msgid="7795034287069726554">"Жалғыз сыртқы дисплейі бар құрылғыны көрсету"</item>
+ <item msgid="5280431949814340475">"Соңғы рет назарда болған дисплейдегі құрылғыны көрсету"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 87917af..a88517d 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Істеп тұр (тек сол жағы)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Істеп тұр (тек оң жағы)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Істеп тұр (екі жағы да)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Істеп тұр (тек мультимедиа). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Істеп тұр (тек мультимедиа). Сол жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. Оң жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Жалғанып тұр (аудио бөлісу мүмкіндігі бар). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ауысу анимациясының өлшемі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматор ұзақтығы"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Қосымша дисплей симуляциясы"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Реңк дисплей позициясы"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Қолданбалар"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Әрекеттерді сақтамау"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Әр әрекетті пайдаланушы аяқтай салысымен жою"</string>
diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml
index 3a533ce..ee6ee56 100644
--- a/packages/SettingsLib/res/values-km/arrays.xml
+++ b/packages/SettingsLib/res/values-km/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"ផ្ទាំងអេក្រង់ឧបករណ៍តែប៉ុណ្ណោះ (លំនាំដើម)"</item>
+ <item msgid="9161645858025071955">"ផ្ទាំងអេក្រង់ខាងក្រៅ"</item>
+ <item msgid="114384731934682483">"ផ្អែកលើការផ្ដោត"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"បង្ហាញផ្ទាំងនៅលើផ្ទាំងអេក្រង់ឧបករណ៍តែប៉ុណ្ណោះ"</item>
+ <item msgid="7795034287069726554">"បង្ហាញឧបករណ៍នៅលើផ្ទាំងអេក្រង់ខាងក្រៅតែមួយ"</item>
+ <item msgid="5280431949814340475">"បង្ហាញឧបករណ៍នៅលើផ្ទាំងអេក្រង់ដែលផ្ដោតចុងក្រោយ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 2398ca8..41b427a 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"សកម្ម (ខាងឆ្វេងប៉ុណ្ណោះ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"សកម្ម (ខាងស្ដាំប៉ុណ្ណោះ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"សកម្ម (ខាងឆ្វេង និងខាងស្ដាំ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)។ ឆ្វេង៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ស្ដាំ៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>។"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"មាត្រដ្ឋានចលនាបែបផែនឆ្លង"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"មាត្រដ្ឋានរយៈពេលចលនា"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ត្រាប់ជាអេក្រង់ទីពីរ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ទីតាំងបង្ហាញផ្ទាំង"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"កម្មវិធី"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"កុំរក្សាទុកសកម្មភាព"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"បំផ្លាញគ្រប់សកម្មភាព ពេលអ្នកប្រើចាកចេញ"</string>
diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml
index 1c8112a..51e6e15 100644
--- a/packages/SettingsLib/res/values-kn/arrays.xml
+++ b/packages/SettingsLib/res/values-kn/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"ಸಾಧನದ ಡಿಸ್ಪ್ಲೇ ಮಾತ್ರ (ಡೀಫಾಲ್ಟ್)"</item>
+ <item msgid="9161645858025071955">"ಬಾಹ್ಯ ಡಿಸ್ಪ್ಲೇ"</item>
+ <item msgid="114384731934682483">"ಫೋಕಸ್-ಆಧಾರಿತ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"ಸಾಧನದ ಡಿಸ್ಪ್ಲೇನಲ್ಲಿ ಮಾತ್ರ ಶೇಡ್ ತೋರಿಸಿ"</item>
+ <item msgid="7795034287069726554">"ಒಂದೇ ಬಾಹ್ಯ ಡಿಸ್ಪ್ಲೇನಲ್ಲಿ ಸಾಧನವನ್ನು ತೋರಿಸಿ"</item>
+ <item msgid="5280431949814340475">"ಕೊನೆಯ ಕೇಂದ್ರೀಕೃತ ಡಿಸ್ಪ್ಲೇನಲ್ಲಿ ಸಾಧನವನ್ನು ತೋರಿಸಿ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index a85d0cc..20b4c93 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ಸಕ್ರಿಯವಾಗಿದೆ (ಎಡಕಿವಿಯ ಸಾಧನ ಮಾತ್ರ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ಸಕ್ರಿಯವಾಗಿದೆ (ಬಲಕಿವಿಯ ಸಾಧನ ಮಾತ್ರ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ಸಕ್ರಿಯವಾಗಿವೆ (ಎಡ ಮತ್ತು ಬಲಕಿವಿಯ ಸಾಧನಗಳು)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ). ಎಡ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ಬಲ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ಕನೆಕ್ಟ್ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
@@ -241,7 +243,7 @@
<string name="category_clone" msgid="1554511758987195974">"ಕ್ಲೋನ್"</string>
<string name="development_settings_title" msgid="140296922921597393">"ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು"</string>
<string name="development_settings_enable" msgid="4285094651288242183">"ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
- <string name="development_settings_summary" msgid="8718917813868735095">"ಆ್ಯಪ್ ಅಭಿವೃದ್ಧಿಗಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿಸಿ"</string>
+ <string name="development_settings_summary" msgid="8718917813868735095">"ಆ್ಯಪ್ ಅಭಿವೃದ್ಧಿಗಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
<string name="development_settings_not_available" msgid="355070198089140951">"ಈ ಬಳಕೆದಾರರಿಗೆ ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN ಸೆಟ್ಟಿಂಗ್ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="tethering_settings_not_available" msgid="266821736434699780">"ಟೆಥರಿಂಗ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
@@ -361,7 +363,7 @@
<string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(ಪ್ರಾಯೋಗಿಕ) Android ನಲ್ಲಿ Linux ಟರ್ಮಿನಲ್ ಅನ್ನು ರನ್ ಮಾಡಿ"</string>
<string name="disable_linux_terminal_disclaimer" msgid="3054320531778388231">"ನೀವು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, Linux ಟರ್ಮಿನಲ್ ಡೇಟಾ ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ಪರೀಕ್ಷಿಸುವಿಕೆ"</string>
- <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP ಪರಿಶೀಲನಾ ನಡವಳಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
+ <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP ಪರಿಶೀಲನಾ ನಡವಳಿಕೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
<string name="debug_debugging_category" msgid="535341063709248842">"ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string>
<string name="debug_app" msgid="8903350241392391766">"ಡೀಬಗ್ ಆ್ಯಪ್ ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="debug_app_not_set" msgid="1934083001283807188">"ಯಾವುದೇ ಡೀಬಗ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೊಂದಿಸಿಲ್ಲ"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ಪರಿವರ್ತನೆ ಅನಿಮೇಶನ್ ಸ್ಕೇಲ್"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ಅನಿಮೇಟರ್ ಅವಧಿಯ ಪ್ರಮಾಣ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ಮಾಧ್ಯಮಿಕ ಡಿಸ್ಪ್ಲೇ ಸಿಮ್ಯುಲೇಟ್"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ಶೇಡ್ ಡಿಸ್ಪ್ಲೇ ಸ್ಥಾನ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ಚಟುವಟಿಕೆಗಳನ್ನು ಇರಿಸಬೇಡಿ"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ಬಳಕೆದಾರರು ಹೊರಹೋಗುತ್ತಿದ್ದಂತೆಯೇ ಚಟುವಟಿಕೆ ನಾಶಪಡಿಸು"</string>
@@ -466,7 +469,7 @@
<string name="runningservices_settings_title" msgid="6460099290493086515">"ರನ್ ಆಗುತ್ತಿರುವ ಸೇವೆಗಳು"</string>
<string name="runningservices_settings_summary" msgid="1046080643262665743">"ಈಗ ರನ್ ಆಗುತ್ತಿರುವ ಸೇವೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string>
<string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ಹೊಂದಿಸಿ"</string>
- <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ಅನುಷ್ಠಾನಗೊಳಿಸುವಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
+ <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ಅನುಷ್ಠಾನಗೊಳಿಸುವಿಕೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ಈ ಆಯ್ಕೆಯು ಇನ್ನು ಮುಂದೆ ಮಾನ್ಯವಾಗಿರುವುದಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="picture_color_mode" msgid="1013807330552931903">"ಚಿತ್ರ ಬಣ್ಣದ ಮೋಡ್"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ಬಳಸಿ"</string>
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
index 0a9663e..dd1121f 100644
--- a/packages/SettingsLib/res/values-ko/arrays.xml
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"기기 디스플레이만(기본값)"</item>
+ <item msgid="9161645858025071955">"외부 디스플레이"</item>
+ <item msgid="114384731934682483">"포커스 기반"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"기기 디스플레이에만 음영 표시"</item>
+ <item msgid="7795034287069726554">"단일 외부 디스플레이에 기기 표시"</item>
+ <item msgid="5280431949814340475">"마지막으로 포커스된 디스플레이에 기기 표시"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 3f3fa54..084ab17 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"활성(왼쪽만)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"활성(오른쪽만)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"활성(왼쪽 및 오른쪽)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"사용 중입니다(미디어 전용). 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"사용 중입니다(미디어 전용). 배터리는 왼쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 오른쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>입니다."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"연결되었습니다(오디오 공유 지원). 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"전환 애니메이션 배율"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 길이 배율"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"보조 디스플레이 시뮬레이션"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"음영 표시 위치"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"앱"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"활동 유지 안함"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"사용자가 종료하는 즉시 바로 제거"</string>
diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml
index f28026e..fe44fe0 100644
--- a/packages/SettingsLib/res/values-ky/arrays.xml
+++ b/packages/SettingsLib/res/values-ky/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Түзмөктүн экраны гана (демейки)"</item>
+ <item msgid="9161645858025071955">"Тышкы экран"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Көлөкөнү түзмөктүн экранында гана көрсөтүү"</item>
+ <item msgid="7795034287069726554">"Түзмөктү бир тышкы экранда көрсөтүү"</item>
+ <item msgid="5280431949814340475">"Түзмөктү акыркы активдүү экранда көрсөтүү"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index db55252..2d1ea867 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Иштеп жатат (сол тарап гана)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Иштеп жатат (оң тарап гана)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Иштеп жатат (сол жана оң)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Жигердүү (медиа үчүн гана). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Жигердүү (медиа үчүн гана). Батарея: L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Туташып турат (чогуу уксаңыз болот). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Өткөрүү анимацснн шкаласы"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимациянын узактыгы"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Көмөкчү экрандардын эмуляциясы"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Көлөкө экранынын абалы"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Колдонмолор"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Аракеттер сакталбасын"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Колдонуучу чыгып кетери менен бардык аракеттер өчүп калат"</string>
diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml
index 478b5d5..d9da45b4 100644
--- a/packages/SettingsLib/res/values-lo/arrays.xml
+++ b/packages/SettingsLib/res/values-lo/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"ຈໍສະແດງຜົນຂອງອຸປະກອນເທົ່ານັ້ນ (ຄ່າເລີ່ມຕົ້ນ)"</item>
+ <item msgid="9161645858025071955">"ຈໍສະແດງຜົນພາຍນອກ"</item>
+ <item msgid="114384731934682483">"ອີງຕາມການໂຟກັສ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"ສະແດງເສດສີໃນຈໍສະແດງຜົນຂອງອຸປະກອນເທົ່ານັ້ນ"</item>
+ <item msgid="7795034287069726554">"ສະແດງອຸປະກອນໃນຈໍສະແດງຜົນພາຍນອກເຄື່ອງດຽວ"</item>
+ <item msgid="5280431949814340475">"ສະແດງອຸປະກອນໃນຈໍສະແດງຜົນທີ່ໂຟກັສຫຼ້າສຸດ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index f60894b..ec06e5e 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ນຳໃຊ້ຢູ່ (ຊ້າຍເທົ່ານັ້ນ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ນຳໃຊ້ຢູ່ (ຂວາເທົ່ານັ້ນ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ນຳໃຊ້ຢູ່ (ຊ້າຍ ແລະ ຂວາ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ). ຊ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ຂ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ຂະໜາດສະຫຼັບອະນິເມຊັນ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ໄລຍະເວລາອະນິເມຊັນ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ຈຳລອງຈໍສະແດງຜົນທີສອງ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ຕຳແໜ່ງການສະແດງຜົນຂອງເສດສີ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ແອັບ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ບໍ່ຕ້ອງຮັກສາການເຄື່ອນໄຫວ"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ລຶບທຸກການເຄື່ອນໄຫວທັນທີທີ່ຜູ້ໃຊ້ອອກຈາກມັນ"</string>
diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml
index 5d3d596..cf9b8d8 100644
--- a/packages/SettingsLib/res/values-lt/arrays.xml
+++ b/packages/SettingsLib/res/values-lt/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Tik įrenginio ekranas (numatytasis nustatymas)"</item>
+ <item msgid="9161645858025071955">"Išorinis ekranas"</item>
+ <item msgid="114384731934682483">"Pagal fokusavimą"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Rodyti šešėlį tik įrenginio ekrane"</item>
+ <item msgid="7795034287069726554">"Rodyti įrenginį viename išoriniame ekrane"</item>
+ <item msgid="5280431949814340475">"Rodyti įrenginį paskutiniame fokusuotame ekrane"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 2932d21..f0a82e0 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktyvus (tik kairiojoje pusėje)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktyvus (tik dešiniojoje pusėje)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktyvus (kairiojoje ir dešiniojoje pusėse)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktyvus (tik medija). Akumuliatorius lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktyvus (tik medija), akumuliatoriaus lygis kairėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dešinėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animuoto perėjimo mast."</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator. trukmės skalė"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Imituoti antrin. ekranus"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Šešėlio rodymo padėtis"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Programos"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Nesaugoti veiklos"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Sunaikinti visą veiklą, kai naud. iš jos išeina"</string>
diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml
index 7626c66..92d141e 100644
--- a/packages/SettingsLib/res/values-lv/arrays.xml
+++ b/packages/SettingsLib/res/values-lv/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Tikai ierīces displejs (noklusējums)"</item>
+ <item msgid="9161645858025071955">"Ārējais displejs"</item>
+ <item msgid="114384731934682483">"Saskaņā ar fokusu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Rādīt ēnu tikai ierīces displejā"</item>
+ <item msgid="7795034287069726554">"Rādīt ierīci vienā ārējā displejā"</item>
+ <item msgid="5280431949814340475">"Rādīt ierīci pēdējā fokusētajā displejā"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 2f497fb..47fe2d9 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ierīce aktīva (tikai kreisā auss)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ierīce aktīva (tikai labā auss)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ierīces aktīvas (kreisā un labā auss)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktīvs (tikai multividei). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktīvs (tikai multividei). Akumulatora uzlādes līmenis kreisajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, labajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Pārejas animācijas mērogs"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animācijas ilguma mērogs"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulēt sekundāros ekr."</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Ēnas parādīšanas pozīcija"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Lietotnes"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Nesaglabāt darbības"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Iznīcināt katru darbību, kad lietotājs to pārtrauc"</string>
diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml
index f1a02bb..8e9bb21 100644
--- a/packages/SettingsLib/res/values-mk/arrays.xml
+++ b/packages/SettingsLib/res/values-mk/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Само на екранот на уредот (стандардно)"</item>
+ <item msgid="9161645858025071955">"Надворешен екран"</item>
+ <item msgid="114384731934682483">"Засновано на фокус"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Прикажувај сенка само на екранот на уредот"</item>
+ <item msgid="7795034287069726554">"Прикажувај сенка на еден надворешен екран"</item>
+ <item msgid="5280431949814340475">"Прикажувај сенка на последниот фокусиран екран"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"стандарден_екран"</item>
+ <item msgid="774789415968826925">"кој_било_надворешен_екран"</item>
+ <item msgid="7880769915418638436">"последен_допир_на_статусната_лента"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 54d1ff1..a8c8d83 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Активно (само лево)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Активно (само десно)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Активно (лево и десно)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само аудиовизуелни содржини). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само аудиовизуелни содржини). Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерија, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерија."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Поврзано (поддржува споделување аудио). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Брзина на преодни анимации"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Брзина на општи анимации"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Симул. секундарен екран"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Позиција на екранот за сенка"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Апликации"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Не чувај активности"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Уништи ја секоја активност штом корисникот ќе ја напушти"</string>
diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml
index 5e535d3..4b8dbce 100644
--- a/packages/SettingsLib/res/values-ml/arrays.xml
+++ b/packages/SettingsLib/res/values-ml/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"ഉപകരണ ഡിസ്പ്ലേ മാത്രം (ഡിഫോൾട്ട്)"</item>
+ <item msgid="9161645858025071955">"ബാഹ്യ ഡിസ്പ്ലേ"</item>
+ <item msgid="114384731934682483">"ഫോക്കസ്-അടിസ്ഥാനമാക്കിയുള്ളത്"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"ഉപകരണ ഡിസ്പ്ലേയിൽ മാത്രം ഷെയ്ഡ് കാണിക്കുക"</item>
+ <item msgid="7795034287069726554">"ഒരൊറ്റ ബാഹ്യ ഡിസ്പ്ലേയിൽ ഉപകരണം കാണിക്കുക"</item>
+ <item msgid="5280431949814340475">"അവസാനം ഫോക്കസ് ചെയ്ത ഡിസ്പ്ലേയിൽ ഉപകരണം കാണിക്കുക"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 19c380b..859c67e 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"സജീവമാണ് (ഇടതുഭാഗത്ത് മാത്രം)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"സജീവമാണ് (വലതുഭാഗത്ത് മാത്രം)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"സജീവമാണ് (ഇടതുഭാഗത്തും വലതുഭാഗത്തും)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"സജീവം (മീഡിയ മാത്രം). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"സജീവം (മീഡിയ മാത്രം). ഇടതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ബാറ്ററി, വലതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ബാറ്ററി."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ട്രാൻസിഷൻ ആനിമേഷൻ സ്കെയിൽ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ആനിമേറ്റർ ദൈർഘ്യ സ്കെയിൽ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"രണ്ടാം ഡിസ്പ്ലേകൾ പ്രവർത്തിപ്പിക്കുക"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ഷെയ്ഡ് ഡിസ്പ്ലേ സ്ഥാനം"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ആപ്പുകൾ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"പ്രവർത്തനങ്ങൾ സൂക്ഷിക്കരുത്"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ഉപയോക്താവ് ഉപേക്ഷിക്കുന്നതിനനുസരിച്ച് എല്ലാ പ്രവർത്തനങ്ങളും നശിപ്പിക്കുക"</string>
diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml
index 84c707f..5d5b8f9 100644
--- a/packages/SettingsLib/res/values-mn/arrays.xml
+++ b/packages/SettingsLib/res/values-mn/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Зөвхөн төхөөрөмжийн дэлгэц (өгөгдмөл)"</item>
+ <item msgid="9161645858025071955">"Гаднын дэлгэц"</item>
+ <item msgid="114384731934682483">"Төвлөрөлд тулгуурласан"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Зөвхөн төхөөрөмж дээрх дэлгэцэд сүүдрийг харуулах"</item>
+ <item msgid="7795034287069726554">"Зөвхөн гаднын нэг дэлгэц дээр төхөөрөмжийг харуулах"</item>
+ <item msgid="5280431949814340475">"Сүүлд төвлөрсөн дэлгэц дээр төхөөрөмжийг харуулах"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 0e3408e..c61bcde 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Идэвхтэй (зөвхөн зүүн тал)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Идэвхтэй (зөвхөн баруун тал)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Идэвхтэй (зүүн, баруун тал)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Идэвхтэй (зөвхөн медиа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Идэвхтэй (зөвхөн медиа). З: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Б: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батарей."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Холбогдсон (аудио хуваалцахыг дэмждэг). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Шилжилтийн анимацийн масштаб"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимацийн хугацааны масштаб"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Хоёр дахь дэлгэцийн симуляци хийх"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Сүүдрийн дэлгэцийн байрлал"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Апп"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Үйлдлүүдийг хадгалахгүй"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Үйлдэл бүрийг хэрэглэгч орхимогц нь устгах"</string>
diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml
index 9286e77..2fd2058 100644
--- a/packages/SettingsLib/res/values-mr/arrays.xml
+++ b/packages/SettingsLib/res/values-mr/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"फक्त डिव्हाइस डिस्प्ले (डीफॉल्ट)"</item>
+ <item msgid="9161645858025071955">"बाह्य डिस्प्ले"</item>
+ <item msgid="114384731934682483">"फोकसवर आधारित"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"फक्त डिव्हाइस डिस्प्लेवर शेड दाखवा"</item>
+ <item msgid="7795034287069726554">"एकल बाह्य डिस्प्लेवर डिव्हाइस दाखवा"</item>
+ <item msgid="5280431949814340475">"शेवटच्या फोकस केलेल्या डिस्प्लेवर डिव्हाइस दाखवा"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 9b7c99c..654b447 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"अॅक्टिव्ह आहे (फक्त डावे)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"अॅक्टिव्ह आहे (फक्त उजवे)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"अॅक्टिव्ह आहे (डावे आणि उजवे)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"अॅक्टिव्ह आहे (फक्त मीडिया). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ॲक्टिव्ह आहे (फक्त मीडिया). डावीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, उजवीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांझिशन ॲनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ॲनिमेटर कालावधी स्केल"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"दुय्यम डिस्प्ले सिम्युलेट करा"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"शेड डिस्प्लेशी संबंधित स्थिती"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"अॅप्स"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ॲक्टिव्हिटी ठेवू नका"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"वापरकर्त्याने प्रत्येक ॲक्टिव्हिटी सोडताच ती नष्ट करा"</string>
diff --git a/packages/SettingsLib/res/values-ms/arrays.xml b/packages/SettingsLib/res/values-ms/arrays.xml
index a159282..7b6cbe1 100644
--- a/packages/SettingsLib/res/values-ms/arrays.xml
+++ b/packages/SettingsLib/res/values-ms/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Paparan peranti sahaja (Lalai)"</item>
+ <item msgid="9161645858025071955">"Paparan luaran"</item>
+ <item msgid="114384731934682483">"Berasaskan fokus"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Tunjukkan rona warna pada paparan peranti sahaja"</item>
+ <item msgid="7795034287069726554">"Tunjukkan peranti pada satu paparan luaran"</item>
+ <item msgid="5280431949814340475">"Tunjukkan peranti pada paparan terakhir yang difokuskan"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 7c5d3f7..fcb5d6e 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktif (kiri sahaja)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktif (kanan sahaja)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktif (kiri dan kanan)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktif (media sahaja). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktif (media sahaja), L: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Disambungkan (menyokong perkongsian audio). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi peralihan"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala tempoh juruanimasi"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulasikan paparan kedua"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Kedudukan paparan rona warna"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikasi"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Jangan simpan aktiviti"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Hapus aktiviti selepas ditinggalkan oleh pengguna"</string>
diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml
index e795689..71a1c7c 100644
--- a/packages/SettingsLib/res/values-my/arrays.xml
+++ b/packages/SettingsLib/res/values-my/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"စက်ဖန်သားပြင် သီးသန့် (မူရင်း)"</item>
+ <item msgid="9161645858025071955">"ပြင်ပဖန်သားပြင်"</item>
+ <item msgid="114384731934682483">"ပြသမှုအခြေပြု"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"စက်ဖန်သားပြင်တွင်သာ အရိပ်ပြပါ"</item>
+ <item msgid="7795034287069726554">"ပြင်ပဖန်သားပြင်တစ်ခုတွင် စက်ကိုပြပါ"</item>
+ <item msgid="5280431949814340475">"နောက်ဆုံးပြသထားသော ဖန်သားပြင်တွင် စက်ကိုပြပါ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"မူရင်းဖန်သားပြင်"</item>
+ <item msgid="774789415968826925">"မည်သည့်ပြင်ပဖန်သားပြင်မဆို"</item>
+ <item msgid="7880769915418638436">"အခြေအနေပြဘား နောက်ဆုံးထိတွေ့မှု"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 0bd6ca6..4826c49 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"သုံးနေသည် (ဘယ်ဘက်သီးသန့်)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"သုံးနေသည် (ညာဘက်သီးသန့်)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"သုံးနေသည် (ဘယ်နှင့်ညာ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"အသုံးပြုနေသည် (မီဒီယာသီးသန့်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"အသုံးပြုနေသည် (မီဒီယာသီးသန့်)။ ဘက်ထရီ L- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>၊ R- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>။"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"သက်ဝင်အသွင်ပြောင်းခြင်း"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"လှုပ်ရှားမှုကြာချိန်စကေး"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ဆင့်ပွားမျက်နှာပြင် အသွင်ဆောင်ခြင်း"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"အရိပ်ပြကွက် တည်နေရာ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"အက်ပ်များ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ဆောင်ရွက်မှုများကို သိမ်းမထားပါနှင့်"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"သုံးသူထွက်သွားသည်နှင့် လုပ်ဆောင်ချက်များ ဖျက်ရန်"</string>
diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml
index c456ae1..8d52693 100644
--- a/packages/SettingsLib/res/values-nb/arrays.xml
+++ b/packages/SettingsLib/res/values-nb/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Bare enhetsskjermen (standard)"</item>
+ <item msgid="9161645858025071955">"Ekstern skjerm"</item>
+ <item msgid="114384731934682483">"Fokusbasert"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Vis skyggen bare på enhetsskjermen"</item>
+ <item msgid="7795034287069726554">"Vis enheten på én ekstern skjerm"</item>
+ <item msgid="5280431949814340475">"Vis enheten på den sist fokuserte skjermen"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"Standardskjerm"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index ab14606..e7be3c9 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiv (bare venstre)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiv (bare høyre)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiv (venstre og høyre)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (bare medieinnhold) <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (bare medieinnhold). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Tilkoblet (støtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animasjonsskala for overgang"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Varighetsskala for animasjoner"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulering av sekundærskjermer"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Plassering av skyggeskjermen"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apper"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ikke behold aktiviteter"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Fjern hver aktivitet så fort brukeren forlater den"</string>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index d2c3729..cd8448f 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"२"</item>
<item msgid="4779928470672877922">"३"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"डिभाइसको डिस्प्ले मात्र (डिफल्ट)"</item>
+ <item msgid="9161645858025071955">"बाह्य डिस्प्ले"</item>
+ <item msgid="114384731934682483">"फोकसमा आधारित"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"यो सेड डिभाइसकै डिस्प्लेमा मात्र देखाउनुहोस्"</item>
+ <item msgid="7795034287069726554">"यो डिभाइस एकल बाह्य डिस्प्लेमा देखाउनुहोस्"</item>
+ <item msgid="5280431949814340475">"यो डिभाइस पछिल्लो पटक फोकस गरिएको डिस्प्लेमा देखाउनुहोस्"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 50665f6..0478d9c 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"सक्रिय छ (बायाँ मात्र)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"सक्रिय छ (दायाँ मात्र)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"सक्रिय छ (दायाँ र बायाँ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"सक्रिय छ (मिडिया मात्र)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"सक्रिय छ (मिडिया मात्र)। बायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ब्याट्री।"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"संक्रमण एनिमेसन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"एनिमेसनको अवधि मापन"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"सहायक डिस्प्लेको नक्कल गर्नुहोस्"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"सेड देखाइने स्थिति"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"एपहरू"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"गतिविधि नराखियोस्"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"प्रयोगकर्ता कुनै गतिविधिबाट बाहिरिने बित्तिकै उक्त गतिविधि अन्त्य गर्नुहोस्"</string>
diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml
index 4451c93..d92b806 100644
--- a/packages/SettingsLib/res/values-nl/arrays.xml
+++ b/packages/SettingsLib/res/values-nl/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Alleen apparaatscherm (standaard)"</item>
+ <item msgid="9161645858025071955">"Extern scherm"</item>
+ <item msgid="114384731934682483">"Op focus gebaseerd"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Alleen paneel tonen op apparaatscherm"</item>
+ <item msgid="7795034287069726554">"Apparaat tonen op één extern scherm"</item>
+ <item msgid="5280431949814340475">"Apparaat tonen op laatste gefocuste scherm"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 035c2d9..bae7bb9 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Actief (alleen links)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Actief (alleen rechts)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Actief (links en rechts)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actief (alleen media). Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actief (alleen media), L: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Verbonden (ondersteunt audio delen), batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimatieschaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Duur van animatieschaal"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Secundaire displays simuleren"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Positie van paneelweergave"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Activiteiten niet opslaan"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Wis activiteit zodra de gebruiker ermee stopt"</string>
diff --git a/packages/SettingsLib/res/values-or/arrays.xml b/packages/SettingsLib/res/values-or/arrays.xml
index 37e5071..f9beb8a 100644
--- a/packages/SettingsLib/res/values-or/arrays.xml
+++ b/packages/SettingsLib/res/values-or/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"କେବଳ ଡିଭାଇସ ଡିସପ୍ଲେ (ଡିଫଲ୍ଟ)"</item>
+ <item msgid="9161645858025071955">"ଏକ୍ସଟର୍ନଲ ଡିସପ୍ଲେ"</item>
+ <item msgid="114384731934682483">"ଫୋକସ-ଆଧାରିତ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"କେବଳ ଡିଭାଇସରେ ଡିସପ୍ଲେ ସେଡ ଦେଖାନ୍ତୁ"</item>
+ <item msgid="7795034287069726554">"ସିଙ୍ଗଲ ଏକ୍ସଟର୍ନଲ ଡିସପ୍ଲେରେ ଡିଭାଇସ ଦେଖାନ୍ତୁ"</item>
+ <item msgid="5280431949814340475">"ଫୋକସ କରାଯାଇଥିବା ଗତ ଡିସପ୍ଲେରେ ଡିଭାଇସ ଦେଖାନ୍ତୁ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 8942737..7b8f3cc 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ସକ୍ରିୟ (କେବଳ ବାମ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ସକ୍ରିୟ (କେବଳ ଡାହାଣ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ସକ୍ରିୟ (ବାମ ଏବଂ ଡାହାଣ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)। ବାମ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ଡାହାଣ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ବେଟେରୀ।"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ଟ୍ରାଞ୍ଜିସନ୍ ଆନିମେସନ୍ ସ୍କେଲ୍"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ଆନିମେଟର୍ ଅବଧି ସ୍କେଲ୍"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ସେକେଣ୍ଡାରୀ ଡିସ୍ପ୍ଲେ ସିମୁଲେଟ୍ କରନ୍ତୁ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ସେଡ ଡିସପ୍ଲେ ସ୍ଥିତି"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ଆପ୍ସ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"କାର୍ଯ୍ୟକଳାପଗୁଡ଼ିକୁ ରଖନ୍ତୁ ନାହିଁ"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ୟୁଜର୍ ଏହାକୁ ଛାଡ଼ିବା କ୍ଷଣି ସମସ୍ତ କାର୍ଯ୍ୟକଳାପ ନଷ୍ଟ କରିଦିଅନ୍ତୁ"</string>
diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml
index 3cb0f50..1e7f055 100644
--- a/packages/SettingsLib/res/values-pa/arrays.xml
+++ b/packages/SettingsLib/res/values-pa/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਦੀ ਡਿਸਪਲੇ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item>
+ <item msgid="9161645858025071955">"ਬਾਹਰੀ ਡਿਸਪਲੇ"</item>
+ <item msgid="114384731934682483">"ਫੋਕਸ-ਆਧਾਰਿਤ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਦੀ ਡਿਸਪਲੇ \'ਤੇ ਸ਼ੇਡ ਦਿਖਾਓ"</item>
+ <item msgid="7795034287069726554">"ਇਕਹਿਰੀ ਬਾਹਰੀ ਡਿਸਪਲੇ \'ਤੇ ਡੀਵਾਈਸ ਦਿਖਾਓ"</item>
+ <item msgid="5280431949814340475">"ਫੋਕਸ ਕੀਤੀ ਗਈ ਪਿਛਲੀ ਡਿਸਪਲੇ \'ਤੇ ਡੀਵਾਈਸ ਦਿਖਾਓ"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 14e87aa..7e2a50f 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਖੱਬਾ)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਸੱਜਾ)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ਕਿਰਿਆਸ਼ੀਲ (ਖੱਬਾ ਅਤੇ ਸੱਜਾ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)। ਖੱਬੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ਸੱਜੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ਬੈਟਰੀ।"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ਟ੍ਰਾਂਜ਼ਿਸ਼ਨ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ਐਨੀਮੇਟਰ ਮਿਆਦ ਸਕੇਲ"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ਸੈਕੰਡਰੀ ਡਿਸਪਲੇ ਨੂੰ ਸਿਮੂਲੇਟ ਕਰੋ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ਸ਼ੇਡ ਦਿਖਣ ਦੀ ਸਥਿਤੀ"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ਐਪਾਂ"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ਸਰਗਰਮੀਆਂ ਨਾ ਰੱਖੋ"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ਹਰੇਕ ਸਰਗਰਮੀ ਨਸ਼ਟ ਕਰੋ, ਜਿਵੇਂ ਹੀ ਵਰਤੋਂਕਾਰ ਇਸਨੂੰ ਛੱਡੇ"</string>
diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml
index 9c25aaa..a9892b3 100644
--- a/packages/SettingsLib/res/values-pl/arrays.xml
+++ b/packages/SettingsLib/res/values-pl/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Tylko wyświetlanie na urządzeniu (domyślnie)"</item>
+ <item msgid="9161645858025071955">"Wyświetlacz zewnętrzny"</item>
+ <item msgid="114384731934682483">"Na podstawie zaznaczenia"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Pokaż cień tylko na wyświetlaczu urządzenia"</item>
+ <item msgid="7795034287069726554">"Pokaż urządzenie na pojedynczym wyświetlaczu zewnętrznym"</item>
+ <item msgid="5280431949814340475">"Pokaż urządzenie na ostatnim aktywnym wyświetlaczu"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index eaa12bd..397cb82 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktywne (tylko lewa strona)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktywne (tylko prawa strona)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktywne (lewa i prawa strona)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktywne (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktywne (tylko multimedia), lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Połączone (obsługa udostępniania dźwięku), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacji przejścia"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala długości animacji"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Symuluj ekrany dodatkowe"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Pozycja wyświetlania cienia"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacje"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Nie zachowuj działań"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Przerwij każde działanie, gdy użytkownik je porzuci"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
index bb18c47..35aa3b0 100644
--- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Somente a tela do dispositivo (padrão)"</item>
+ <item msgid="9161645858025071955">"Tela externa"</item>
+ <item msgid="114384731934682483">"Com base no foco"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar sombra apenas na tela do dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar o dispositivo em uma única tela externa"</item>
+ <item msgid="5280431949814340475">"Mostrar o dispositivo na última tela focada"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index afa7129..273c84d 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ativo (apenas o esquerdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ativo (apenas o direito)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ativo (esquerdo e direito)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas mídia). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala anim. de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala duração Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular telas secundárias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posição da sombra do dispositivo"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Não manter atividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir todas as atividades quando o usuário sair"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
index 50a90eb..2f870bf 100644
--- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Apenas no ecrã do dispositivo (predefinição)"</item>
+ <item msgid="9161645858025071955">"Ecrã externo"</item>
+ <item msgid="114384731934682483">"Com base no foco"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar a sombra apenas no ecrã do dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar o dispositivo num único ecrã externo"</item>
+ <item msgid="5280431949814340475">"Mostrar o dispositivo no último ecrã focado"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 986467a..9d56b43 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -110,6 +110,7 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ativo (apenas esquerdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ativo (apenas direito)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ativo (esquerdo e direito)"</string>
+ <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o ambiente"</string>
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas para multimédia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas para multimédia). E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ligado (suporta partilha de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
@@ -423,6 +424,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração de animação"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular apresentações secundárias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posição da sombra no ecrã"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Não manter atividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir atividades assim que o utilizador sair"</string>
diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml
index bb18c47..35aa3b0 100644
--- a/packages/SettingsLib/res/values-pt/arrays.xml
+++ b/packages/SettingsLib/res/values-pt/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Somente a tela do dispositivo (padrão)"</item>
+ <item msgid="9161645858025071955">"Tela externa"</item>
+ <item msgid="114384731934682483">"Com base no foco"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Mostrar sombra apenas na tela do dispositivo"</item>
+ <item msgid="7795034287069726554">"Mostrar o dispositivo em uma única tela externa"</item>
+ <item msgid="5280431949814340475">"Mostrar o dispositivo na última tela focada"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index afa7129..273c84d 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Ativo (apenas o esquerdo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Ativo (apenas o direito)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Ativo (esquerdo e direito)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas mídia). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala anim. de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala duração Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular telas secundárias"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posição da sombra do dispositivo"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Não manter atividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir todas as atividades quando o usuário sair"</string>
diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml
index c29a752..dba734c 100644
--- a/packages/SettingsLib/res/values-ro/arrays.xml
+++ b/packages/SettingsLib/res/values-ro/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Numai pe ecranul dispozitivului (prestabilit)"</item>
+ <item msgid="9161645858025071955">"Ecran extern"</item>
+ <item msgid="114384731934682483">"În funcție de focalizare"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Afișează umbra doar pe ecranul dispozitivului"</item>
+ <item msgid="7795034287069726554">"Afișează dispozitivul pe un singur ecran extern"</item>
+ <item msgid="5280431949814340475">"Afișează dispozitivul pe ultimul ecran focalizat"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index b64047c..1d77583 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Activ (numai stânga)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Activ (numai dreapta)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Activ (stânga și dreapta)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activ (numai pentru conținut media). Nivelul bateriei <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activ (numai pentru conținut media): nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scară tranziție animații"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scară durată Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulează afișaje secundare"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Poziția de afișare a umbrei"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicații"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Nu păstra activitățile"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Elimină activitățile imediat ce utilizatorul le închide"</string>
diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml
index e26b1a6..f0782eb 100644
--- a/packages/SettingsLib/res/values-ru/arrays.xml
+++ b/packages/SettingsLib/res/values-ru/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Только экран устройства (по умолчанию)"</item>
+ <item msgid="9161645858025071955">"Внешний дисплей"</item>
+ <item msgid="114384731934682483">"Активный дисплей"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Показывать тень только на экране устройства"</item>
+ <item msgid="7795034287069726554">"Показывать устройство на одном внешнем дисплее"</item>
+ <item msgid="5280431949814340475">"Показывать устройство на последнем активном дисплее"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 8c9ecb1..d697780 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Используется (только левый)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Используется (только правый)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Используется (левый и правый)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Используется (только для медиа), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Используется (только для медиа), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (Л), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (П)."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анимация переходов"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Длительность анимации"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Эмуляция доп. экранов"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Положение тени"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Приложения"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Вытеснение фоновых Activity"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Удалять все Activity после выхода пользователя"</string>
diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml
index dea89e5..855bbc9 100644
--- a/packages/SettingsLib/res/values-si/arrays.xml
+++ b/packages/SettingsLib/res/values-si/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"උපාංග සංදර්ශකය පමණි (පෙරනිමි)"</item>
+ <item msgid="9161645858025071955">"බාහිර සංදර්ශකය"</item>
+ <item msgid="114384731934682483">"නාභිගත කිරීම-පාදක"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"උපාංග සංදර්ශකයේ පමණක් සෙවන පෙන්වන්න"</item>
+ <item msgid="7795034287069726554">"උපාංගය තනි බාහිර සංදර්ශකයක පෙන්වන්න"</item>
+ <item msgid="5280431949814340475">"අවසන් වරට නාභිගත කළ සංදර්ශකයේ උපාංගය පෙන්වන්න"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 6c9abfb..df22ba7 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"සක්රිය (වම පමණි)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"සක්රිය (දකුණ පමණි)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"සක්රිය (වම සහ දකුණ)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ක්රියාත්මකයි (මාධ්ය පමණයි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ක්රියාත්මකයි (මාධ්ය පමණයි), බැටරිය ව: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ද: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"සම්බන්ධයි (ශ්රව්ය බෙදා ගැනීමට සහය දක්වයි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"සංක්රමණ සජීවන පරිමාණය"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"සජීවක කාල පරාස පරිමාණය"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ද්විතියික දර්ශනය අඟවන්න"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"සෙවන සංදර්ශක ස්ථානය"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"යෙදුම්"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ක්රියාකාරකම් තබාගන්න එපා"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"පරිශීලකයා ඉවත් වුන විගසම සෑම ක්රියාකාරකමක්ම විනාශ කරන්න"</string>
diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml
index 12adda5..3473e28 100644
--- a/packages/SettingsLib/res/values-sk/arrays.xml
+++ b/packages/SettingsLib/res/values-sk/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Iba obrazovka zariadenia (predvolené)"</item>
+ <item msgid="9161645858025071955">"Externá obrazovka"</item>
+ <item msgid="114384731934682483">"Na základe označenia"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Zobraziť panel iba na obrazovke zariadenia"</item>
+ <item msgid="7795034287069726554">"Zobraziť zariadenie na jednej externej obrazovke"</item>
+ <item msgid="5280431949814340475">"Zobraziť zariadenie na poslednej označenej obrazovke"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 05c7442..7af3825 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktívne (iba ľavé)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktívne (iba pravé)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktívne (ľavé aj pravé)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktívne (iba médiá). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktívne (iba médiá). Ľ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batérie, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batérie."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Pripojené (podporuje zdieľanie zvuku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mierka animácie premeny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mierka dĺžky animácie"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulovať sekundárne obrazovky"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Umiestnenie zobrazenia panela"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikácie"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Neuchovávať aktivity"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Zničiť každú aktivitu, hneď ako ju používateľ ukončí"</string>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
index bd35c82..c3bf79c 100644
--- a/packages/SettingsLib/res/values-sl/arrays.xml
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Prikaz samo v napravi (privzeto)"</item>
+ <item msgid="9161645858025071955">"Zunanji zaslon"</item>
+ <item msgid="114384731934682483">"Na podlagi fokusa"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Prikaz podokna samo na zaslonu naprave"</item>
+ <item msgid="7795034287069726554">"Prikaz naprave na enem zunanjem zaslonu"</item>
+ <item msgid="5280431949814340475">"Prikaz naprave na zadnjem zaslonu s fokusom"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index c0e4f81..e82feb4 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktivno (samo levo)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktivno (samo desno)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktivno (levo in desno)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo predstavnost). Baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo predstavnost), baterija – L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podpira deljenje zvoka), baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Merilo animacije prehoda"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Merilo trajanja animacije"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuliraj sekundarne zaslone"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Položaj prikaza podokna"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne obdrži dejavnosti"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uniči vsako dejavnost, ko uporabnik preneha z njo."</string>
diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml
index bd03199..7136bf75 100644
--- a/packages/SettingsLib/res/values-sq/arrays.xml
+++ b/packages/SettingsLib/res/values-sq/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Vetëm ekrani i pajisjes (parazgjedhja)"</item>
+ <item msgid="9161645858025071955">"Ekrani i jashtëm"</item>
+ <item msgid="114384731934682483">"Bazuar te fokusi"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Shfaq hijen vetëm në ekranin e pajisjes"</item>
+ <item msgid="7795034287069726554">"Shfaq pajisjen në një ekran të vetëm të jashtëm"</item>
+ <item msgid="5280431949814340475">"Shfaq pajisjen në ekranin e fundit të fokusuar"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 2676d0e..f857309 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktive (vetëm majtas)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktive (vetëm djathtas)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktive (majtas dhe djathtas)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (vetëm për media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (vetëm për media). Majtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> bateri, djathtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> bateri."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Lidhur (mbështet ndarjen e audios). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animacioni kalimtar"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Kohëzgjatja e animatorit"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulo ekranet dytësore"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Pozicioni i shfaqjes së hijes"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplikacionet"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Mos i ruaj aktivitetet"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Fshi çdo aktivitet sapo të largohet përdoruesi"</string>
diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml
index 1ee7fc0..84d0a7e 100644
--- a/packages/SettingsLib/res/values-sr/arrays.xml
+++ b/packages/SettingsLib/res/values-sr/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Приказ само на уређају (подразумевано)"</item>
+ <item msgid="9161645858025071955">"Спољни екран"</item>
+ <item msgid="114384731934682483">"Засновано на фокусу"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Прикажи сенку само на екрану уређаја"</item>
+ <item msgid="7795034287069726554">"Прикажи уређај на једном спољном екрану"</item>
+ <item msgid="5280431949814340475">"Прикажи уређај на последњем екрану у фокусу"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 8fce0a0..ad15dd4 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Активно (само лево)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Активно (само десно)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Активно (лево и десно)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само за медије). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само за медије). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Повезано (подржава дељење звука), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Размера анимације прелаза"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматорова размера трајања"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Симулирај секундарне екране"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Положај сенке на екрану"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Апликације"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Не чувај активности"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Уништава сваку активност чим је корисник напусти"</string>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
index 3a344ce..c69f01e 100644
--- a/packages/SettingsLib/res/values-sv/arrays.xml
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -288,4 +288,15 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <!-- no translation found for shade_display_awareness_entries:0 (816770658383209617) -->
+ <!-- no translation found for shade_display_awareness_entries:1 (9161645858025071955) -->
+ <!-- no translation found for shade_display_awareness_entries:2 (114384731934682483) -->
+ <!-- no translation found for shade_display_awareness_summaries:0 (2964753205732912921) -->
+ <!-- no translation found for shade_display_awareness_summaries:1 (7795034287069726554) -->
+ <!-- no translation found for shade_display_awareness_summaries:2 (5280431949814340475) -->
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index c7ce0f8..7f172db 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktiv (endast vänster)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktiv (endast höger)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktiv (vänster och höger)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (endast media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (endast media). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ansluten (ljuddelning stöds). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
@@ -423,6 +425,8 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala – övergångsanimering"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Längdskala för Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulera sekundär skärm"</string>
+ <!-- no translation found for shade_display_awareness_title (8000009404669495876) -->
+ <skip />
<string name="debug_applications_category" msgid="5394089406638954196">"Appar"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Behåll inte aktiviteter"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Förstör aktiviteter så fort användaren lämnar dem"</string>
diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml
index a75c6f9..145b56c 100644
--- a/packages/SettingsLib/res/values-sw/arrays.xml
+++ b/packages/SettingsLib/res/values-sw/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Kwenye skrini ya kifaa pekee (Chaguomsingi)"</item>
+ <item msgid="9161645858025071955">"Skrini ya nje"</item>
+ <item msgid="114384731934682483">"Inayoangaziwa"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Onyesha kiwango kwenye skrini ya kifaa pekee"</item>
+ <item msgid="7795034287069726554">"Onyesha kifaa kwenye skrini moja ya nje"</item>
+ <item msgid="5280431949814340475">"Onyesha kifaa kwenye skrini ya mwisho iliyoangaziwa"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 3bee28a..bf95f4e 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Inatumika (kushoto pekee)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Inatumika (kulia pekee)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Inatumika (kushoto na kulia)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Inatumika (maudhui pekee). Chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Inatumika (maudhui pekee), Kushoto: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Kulia: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Chaji imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mageuzi ya kipimo cha uhuishaji"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mizani ya muda wa uhuishaji"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Iga maonyesho mbadala"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Nafasi ya kiwango kwenye skrini"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Programu"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Usihifadhi shughuli"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Haribu kila shughuli pindi tu mtumiaji anapoondoka"</string>
diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml
index ade1db0..6881289 100644
--- a/packages/SettingsLib/res/values-ta/arrays.xml
+++ b/packages/SettingsLib/res/values-ta/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"சாதனக் காட்சி மட்டும் (இயல்பு)"</item>
+ <item msgid="9161645858025071955">"வெளிப்புறக் காட்சி"</item>
+ <item msgid="114384731934682483">"ஃபோகஸ் அடிப்படையிலானது"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"சாதனக் காட்சியில் மட்டும் ஷேடைக் காட்டும்"</item>
+ <item msgid="7795034287069726554">"ஒற்றை வெளிப்புறக் காட்சியில் சாதனத்தைக் காட்டும்"</item>
+ <item msgid="5280431949814340475">"கடைசியாக ஃபோகஸ் செய்யப்பட்ட காட்சியில் சாதனத்தைக் காட்டும்"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 289947e..24c2244 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"செயலில் உள்ளது (இடதுபுறம் மட்டும்)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"செயலில் உள்ளது (வலதுபுறம் மட்டும்)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"செயலில் உள்ளது (இடது மற்றும் வலதுபுறம்)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"செயலிலுள்ளது (மீடியா மட்டும்). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"செயலிலுள்ளது (மீடியா மட்டும்). இடது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, வலது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"அனிமேஷன் மாற்றத்தின் வேகம்"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"அனிமேட்டர் கால அளவு"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"இரண்டாம்நிலைக் காட்சிகளை உருவகப்படுத்து"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ஷேட் காட்சியின் நிலை"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ஆப்ஸ்"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"செயல்பாடுகளை வைத்திருக்காதே"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"பயனர் வெளியேறியதும் செயல்பாடுகளை நீக்கும்"</string>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index fd125b2..c18d771 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"పరికర డిస్ప్లేలో మాత్రమే (ఆటోమేటిక్ సెట్టింగ్)"</item>
+ <item msgid="9161645858025071955">"ఎక్స్టర్నల్ డిస్ప్లే"</item>
+ <item msgid="114384731934682483">"ఫోకస్-ఆధారిత"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"షేడ్ను పరికర డిస్ప్లేలో మాత్రమే చూపండి"</item>
+ <item msgid="7795034287069726554">"పరికరాన్ని ఒక ఎక్స్టర్నల్ డిస్ప్లేలో మాత్రమే చూపండి"</item>
+ <item msgid="5280431949814340475">"పరికరాన్ని ఫోకస్ చేసిన చివరి డిస్ప్లేలో మాత్రమే చూపండి"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index d6683bb..abee836 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"యాక్టివ్గా ఉంది (ఎడమ వైపు మాత్రమే)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"యాక్టివ్గా ఉంది (కుడి వైపు మాత్రమే)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"యాక్టివ్గా ఉంది (ఎడమ వైపు, కుడి వైపు)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"యాక్టివ్ (మీడియా మాత్రమే). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"యాక్టివ్ (మీడియా మాత్రమే). ఎడమ వైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> బ్యాటరీ, కుడివైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> బ్యాటరీ."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్కు సపోర్ట్ చేస్తుంది). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ట్రాన్సిషన్ యానిమేషన్ స్కేల్"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"యానిమేటర్ వ్యవధి స్కేల్"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ఇతర డిస్ప్లేలను సిమ్యులేట్ చేయండి"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"షేడ్ డిస్ప్లే స్థానం"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"యాప్లు"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"యాక్టివిటీస్ను ఉంచవద్దు"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"యూజర్ నిష్క్రమించాక పూర్తి యాక్టివిటీని తొలగించండి"</string>
diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml
index bf73a22..11cb2ec 100644
--- a/packages/SettingsLib/res/values-th/arrays.xml
+++ b/packages/SettingsLib/res/values-th/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"จอแสดงผลของอุปกรณ์เท่านั้น (ค่าเริ่มต้น)"</item>
+ <item msgid="9161645858025071955">"จอแสดงผลภายนอก"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"แสดงเฉดสีในจอแสดงผลของอุปกรณ์เท่านั้น"</item>
+ <item msgid="7795034287069726554">"แสดงอุปกรณ์ในจอแสดงผลภายนอกเครื่องเดียว"</item>
+ <item msgid="5280431949814340475">"แสดงอุปกรณ์ในจอแสดงผลที่โฟกัสล่าสุด"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 6095c50..f8f6af2 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"ใช้งานอยู่ (เฉพาะข้างซ้าย)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"ใช้งานอยู่ (เฉพาะข้างขวา)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"ใช้งานอยู่ (ข้างซ้ายและขวา)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ใช้งานอยู่ (สื่อเท่านั้น) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ใช้งานอยู่ (สื่อเท่านั้น) แบตเตอรี่ข้างซ้าย: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ข้างขวา: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"อัตราการเคลื่อนไหวของการเปลี่ยนภาพ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"อัตราความเร็วตามตัวสร้างภาพเคลื่อนไหว"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"จำลองจอแสดงผลรอง"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"ตำแหน่งการแสดงผลของเฉดสี"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"แอปพลิเคชัน"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"ไม่เก็บกิจกรรม"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ล้างทุกกิจกรรมทันทีที่ผู้ใช้ออกไป"</string>
diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml
index 94436aa..eae269c 100644
--- a/packages/SettingsLib/res/values-tl/arrays.xml
+++ b/packages/SettingsLib/res/values-tl/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Display ng device lang (Default)"</item>
+ <item msgid="9161645858025071955">"External na display"</item>
+ <item msgid="114384731934682483">"Focus-based"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Ipakita ang shade sa display ng device lang"</item>
+ <item msgid="7795034287069726554">"Ipakita ang device sa isang external na display"</item>
+ <item msgid="5280431949814340475">"Ipakita ang device sa huling na-focus na display"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 4eb5c1e..8536219 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Aktibo (kaliwa lang)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Aktibo (kanan lang)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Aktibo (kaliwa at kanan)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktibo (media lang). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktibo (media lang). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterya."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Nakakonekta (sinusuportahan ang pag-share ng audio), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scale ng transition animation"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scale ng tagal ng animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"I-simulate, ika-2 display"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posisyon ng display ng shade"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Mga App"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Huwag magtago ng mga aktibidad"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Burahin ang aktibidad kapag iniwan na ito ng user"</string>
diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml
index 27591be..fdb9d21 100644
--- a/packages/SettingsLib/res/values-tr/arrays.xml
+++ b/packages/SettingsLib/res/values-tr/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Yalnızca cihaz ekranı (Varsayılan)"</item>
+ <item msgid="9161645858025071955">"Harici ekran"</item>
+ <item msgid="114384731934682483">"Odaklanmaya dayalı"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Gölgeyi yalnızca cihaz ekranında göster"</item>
+ <item msgid="7795034287069726554">"Cihazı tek bir harici ekranda göster"</item>
+ <item msgid="5280431949814340475">"Cihazı son odaklanılan ekranda göster"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 705b714..8168d53 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Etkin (yalnızca sol taraf)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Etkin (yalnızca sağ taraf)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Etkin (sol ve sağ taraf)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Etkin (yalnızca medya). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Etkin (yalnızca medya). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil seviyesi."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Bağlı (ses paylaşımını destekler). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Geçiş animasyonu ölçeği"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatör süre ölçeği"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"İkincil ekranları simüle et"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Gölge ekran konumu"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Uygulamalar"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Etkinlikleri saklama"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Kullanıcının ayrıldığı her etkinliği hemen yok et"</string>
diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml
index 234af36..2949471 100644
--- a/packages/SettingsLib/res/values-uk/arrays.xml
+++ b/packages/SettingsLib/res/values-uk/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Лише екран пристрою (за умовчанням)"</item>
+ <item msgid="9161645858025071955">"Зовнішній дисплей"</item>
+ <item msgid="114384731934682483">"На основі фокусування"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Показувати панель лише на екрані пристрою"</item>
+ <item msgid="7795034287069726554">"Показувати панель на одному зовнішньому дисплеї"</item>
+ <item msgid="5280431949814340475">"Показувати панель на останньому активному дисплеї"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index dda905e..3167290 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Активовано (лише лівий)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Активовано (лише правий)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Активовано (лівий і правий)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активне з’єднання (лише для мультимедіа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активне з’єднання (лише для мультимедіа). Рівень заряду: лівий <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, правий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Підключено (підтримує надсилання аудіо). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анімація переходів"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Тривалість анімації"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Імітувати додаткові екрани"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Місце відображення панелі"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Додатки"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Не зберігати дії"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Видаляти зведення дій після їх завершення"</string>
diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml
index df0e56e..a9eadb8 100644
--- a/packages/SettingsLib/res/values-ur/arrays.xml
+++ b/packages/SettingsLib/res/values-ur/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"صرف آلے کا ڈسپلے (ڈیفالٹ)"</item>
+ <item msgid="9161645858025071955">"بیرونی ڈسپلے"</item>
+ <item msgid="114384731934682483">"فوکس پر مبنی"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"صرف آلے کے ڈسپلے پر شیڈ دکھائیں"</item>
+ <item msgid="7795034287069726554">"آلے کو واحد بیرونی ڈسپلے پر دکھائیں"</item>
+ <item msgid="5280431949814340475">"آلے کو آخری فوکس کردہ ڈسپلے پر دکھائیں"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 204663d..fe3dc05 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"فعال ہے (صرف بایاں)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"فعال ہے (صرف دایاں)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"فعال ہے (بایاں اور دایاں)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"فعال (صرف میڈیا)۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"فعال (صرف میڈیا)۔ L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> بیٹری۔"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ٹرانزیشن اینیمیشن اسکیل"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"اینیمیٹر دورانیے کا اسکیل"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"ثانوی ڈسپلیز کو تحریک دیں"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"شیڈ ڈسپلے کی پوزیشن"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"ایپس"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"سرگرمیوں کو نہ رکھیں"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"صارف کی ہر سرگرمی صارف کے چھوڑنے پر حذف کر دیں"</string>
diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml
index 3c96530..f3cae41 100644
--- a/packages/SettingsLib/res/values-uz/arrays.xml
+++ b/packages/SettingsLib/res/values-uz/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Faqat qurilma displeyi (birlamchi)"</item>
+ <item msgid="9161645858025071955">"Tashqi displey"</item>
+ <item msgid="114384731934682483">"Fokusga asoslangan"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Faqat qurilma displeyida soyani koʻrsatish"</item>
+ <item msgid="7795034287069726554">"Qurilmani alohida tashqi displeyda koʻrsatish"</item>
+ <item msgid="5280431949814340475">"Qurilmani oxirgi fokuslangan displeyda koʻrsatish"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index a7500a3..d046eff 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Faol (faqat chap)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Faol (faqat oʻng)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Faol (chap va oʻng)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Faol (faqat media uchun) Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Faol (faqat media uchun), quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (L), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (R)"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ulangan (audio yuborish mumkin), quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"O‘tish animatsiyasi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatsiya tezligi"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Qo‘shimcha ekran simulyatsiyasi"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Soya displeyi holati"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Ilovalar"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Faollik ma’lumoti saqlanmasin"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Amal tugagach, uning tarixi tozalansin"</string>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
index 9f7768c..e0ebc9f 100644
--- a/packages/SettingsLib/res/values-vi/arrays.xml
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Chỉ hiển thị trên thiết bị (Mặc định)"</item>
+ <item msgid="9161645858025071955">"Màn hình ngoài"</item>
+ <item msgid="114384731934682483">"Theo tiêu điểm"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Chỉ hiện ngăn thông báo trên màn hình thiết bị"</item>
+ <item msgid="7795034287069726554">"Hiện thiết bị trên một màn hình ngoài"</item>
+ <item msgid="5280431949814340475">"Hiện thiết bị trên màn hình được lấy tiêu điểm gần đây nhất"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 5d620e6..b9617f7 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Đang hoạt động (chỉ tai trái)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Đang hoạt động (chỉ tai phải)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Đang hoạt động (cả tai phải và tai trái)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Đang hoạt động (chỉ phát nội dung đa phương tiện). Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Đang hoạt động (chỉ phát nội dung đa phương tiện). Bên trái: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pin. Bên phải: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pin."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Tỷ lệ hình động chuyển tiếp"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tỷ lệ thời lượng của trình tạo hình động"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Mô phỏng màn hình phụ"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Vị trí hiển thị ngăn thông báo"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Ứng dụng"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Không lưu hoạt động"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Xoá mọi hoạt động ngay khi người dùng rời khỏi"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
index 939b4ec..c2147c7 100644
--- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"仅设备显示屏(默认)"</item>
+ <item msgid="9161645858025071955">"外接显示屏"</item>
+ <item msgid="114384731934682483">"基于焦点"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"仅在设备显示屏上显示通知栏"</item>
+ <item msgid="7795034287069726554">"在单个外接显示屏上显示设备"</item>
+ <item msgid="5280431949814340475">"在最近一次获得焦点的显示屏上显示设备"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 87e03dc..905b221 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"使用中(仅左耳助听器)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"使用中(仅右耳助听器)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"使用中(左右耳助听器)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"使用中(仅限媒体)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"使用中(仅限媒体)。左侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已连接(支持音频分享)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"过渡动画缩放"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 时长缩放"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"模拟辅助显示设备"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"通知栏显示位置"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"应用"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"不保留 activity"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"用户离开后即销毁每个 activity"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
index 1370263..37d7b29 100644
--- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"只限裝置顯示屏 (預設)"</item>
+ <item msgid="9161645858025071955">"外部顯示屏"</item>
+ <item msgid="114384731934682483">"突顯"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"只在裝置顯示屏上顯示陰影"</item>
+ <item msgid="7795034287069726554">"在單獨外部顯示屏上顯示裝置"</item>
+ <item msgid="5280431949814340475">"在上一次突顯的顯示屏上顯示裝置"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 6a8d6d5..ccac068 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"使用中 (僅左側)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"使用中 (僅右側)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"使用中 (左右兩側)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"啟用 (只限媒體)。<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"啟用 (只限媒體),左側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> 電量,右側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> 電量。"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已連線 (支援音訊分享功能),<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 片長比例"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"模擬次要顯示器"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"陰影顯示位置"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"應用程式"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"不要保留活動"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"使用者離開活動後隨即銷毀活動"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
index bbddf61..b851f46 100644
--- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"僅裝置螢幕 (預設)"</item>
+ <item msgid="9161645858025071955">"外接螢幕"</item>
+ <item msgid="114384731934682483">"使用中的螢幕"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"只在裝置螢幕顯示通知欄"</item>
+ <item msgid="7795034287069726554">"在單一外接螢幕顯示通知欄"</item>
+ <item msgid="5280431949814340475">"在上一次使用的螢幕顯示通知欄"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"預設螢幕"</item>
+ <item msgid="774789415968826925">"任何外接螢幕"</item>
+ <item msgid="7880769915418638436">"最新觸控狀態列"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index c5eb0bb..3bd3564 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"使用中 (僅左側)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"使用中 (僅右側)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"使用中 (左右兩側)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"已啟用 (僅限媒體)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"已啟用 (僅限媒體)。左側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已連線 (支援音訊分享)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"動畫影片長度比例"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"模擬次要顯示器"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"通知欄顯示位置"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"應用程式"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"不要保留活動"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"使用者離開活動後立刻刪除所有活動內容"</string>
diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml
index c202896..27ca40c 100644
--- a/packages/SettingsLib/res/values-zu/arrays.xml
+++ b/packages/SettingsLib/res/values-zu/arrays.xml
@@ -288,4 +288,19 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Ukuboniswa kwedivayisi kuphela (Okuzenzakalelayo)"</item>
+ <item msgid="9161645858025071955">"Ukubonisa Kwangaphandle"</item>
+ <item msgid="114384731934682483">"Kusekelwe ekugxileni"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Bonisa umthunzi esibonisini sedivayisi kuphela"</item>
+ <item msgid="7795034287069726554">"Bonisa idivayisi esibonisini sangaphandle esisodwa"</item>
+ <item msgid="5280431949814340475">"Bonisa idivayisi esibonisini sokugcina esigxilile"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_values">
+ <item msgid="3055776101992426514">"default_display"</item>
+ <item msgid="774789415968826925">"any_external_display"</item>
+ <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+ </string-array>
</resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index f467a3a..7d96423 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -110,6 +110,8 @@
<string name="bluetooth_hearing_aid_left_active" msgid="8330226430756799572">"Iyasebenza (ngakwesokunxele kuphela)"</string>
<string name="bluetooth_hearing_aid_right_active" msgid="2244728507170385397">"Iyasebenza (ngakwesokudla kuphela)"</string>
<string name="bluetooth_hearing_aid_left_and_right_active" msgid="4294571497939983181">"Iyasebenza (ngakwesokunxele nakwesokudla)"</string>
+ <!-- no translation found for bluetooth_hearing_device_ambient_error (6035857289108813878) -->
+ <skip />
<string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Iyasebenza (imidiya kuphela). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
<string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Iyasebenza (imidiya kuphela). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ibhethri."</string>
<string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
@@ -423,6 +425,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Isilinganiso sesithombe soku"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Isilinganiso sobude besikhathi somenzi womfanekiso onyakazayo"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Hlalisa kahle ukubukwa kwesibili"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Indawo yokubonisa umthunzi"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Izinhlelo zokusebenza"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Ungagcini imisibenzi"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Phihliza zonke izenzo ngokushesha ngemva kokuna umsebenzisi awuyeka"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index b4afb7d..7374f80 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -444,12 +444,23 @@
}
/**
- * @return {@code true} if {@code cachedBluetoothDevice} is hearing aid device
+ * @return {@code true} if {@code cachedBluetoothDevice} is hearing aid device.
+ * @deprecated use {@link #isHearingDevice() }
+ * // TODO: b/385679160 - Target to deprecate it and replace with #isHearingDevice()
*/
+ @Deprecated
public boolean isHearingAidDevice() {
return mHearingAidInfo != null;
}
+ /**
+ * @return {@code true} if {@code cachedBluetoothDevice} support any of hearing device profile.
+ */
+ public boolean isHearingDevice() {
+ return getProfiles().stream().anyMatch(
+ p -> (p instanceof HearingAidProfile || p instanceof HapClientProfile));
+ }
+
public int getDeviceSide() {
return mHearingAidInfo != null
? mHearingAidInfo.getSide() : HearingAidInfo.DeviceSide.SIDE_INVALID;
@@ -910,12 +921,33 @@
}
}
+ /**
+ * Checks if the device is connected to the specified Bluetooth profile.
+ *
+ * @param profile The Bluetooth profile to check.
+ * @return {@code true} if the device is connected to the profile.
+ */
public boolean isConnectedProfile(LocalBluetoothProfile profile) {
int status = getProfileConnectionState(profile);
return status == BluetoothProfile.STATE_CONNECTED;
}
+ /**
+ * Checks if the device is connected to the Bluetooth profile with the given ID.
+ *
+ * @param profileId The ID of the Bluetooth profile to check.
+ * @return {@code true} if the device is connected to the profile.
+ */
+ public boolean isConnectedProfile(int profileId) {
+ for (LocalBluetoothProfile profile : getProfiles()) {
+ if (profile.getProfileId() == profileId) {
+ return isConnectedProfile(profile);
+ }
+ }
+ return false;
+ }
+
public boolean isBusy() {
synchronized (mProfileLock) {
for (LocalBluetoothProfile profile : mProfiles) {
@@ -1891,13 +1923,6 @@
}
/**
- * @return {@code true} if {@code cachedBluetoothDevice} is LeAudio hearing aid device
- */
- public boolean isConnectedLeAudioHearingAidDevice() {
- return isConnectedHapClientDevice() && isConnectedLeAudioDevice();
- }
-
- /**
* @return {@code true} if {@code cachedBluetoothDevice} is hearing aid device
*
* The device may be an ASHA hearing aid that supports {@link HearingAidProfile} or a LeAudio
@@ -1908,6 +1933,13 @@
}
/**
+ * @return {@code true} if {@code cachedBluetoothDevice} is LeAudio hearing aid device
+ */
+ public boolean isConnectedLeAudioHearingAidDevice() {
+ return isConnectedHapClientDevice() && isConnectedLeAudioDevice();
+ }
+
+ /**
* @return {@code true} if {@code cachedBluetoothDevice} is LeAudio device
*/
public boolean isConnectedLeAudioDevice() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
index b754706..313013c 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
@@ -24,7 +24,10 @@
import android.content.Context;
import android.util.Log;
+import androidx.annotation.NonNull;
+
import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.flags.Flags;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -46,7 +49,7 @@
private final LocalBluetoothManager mBtManager;
@VisibleForTesting
- final List<CachedBluetoothDevice> mCachedDevices = new ArrayList<CachedBluetoothDevice>();
+ final List<CachedBluetoothDevice> mCachedDevices = new ArrayList<>();
@VisibleForTesting
HearingAidDeviceManager mHearingAidDeviceManager;
@VisibleForTesting
@@ -192,6 +195,20 @@
}
/**
+ * Notifies the connection status if device is hearing device.
+ *
+ * @param device The {@link CachedBluetoothDevice} need to be hearing device
+ */
+ public synchronized void notifyHearingDevicesConnectionStatusChangedIfNeeded(
+ @NonNull CachedBluetoothDevice device) {
+ if (!device.isHearingDevice()) {
+ return;
+ }
+
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+ }
+
+ /**
* Search for existing sub device {@link CachedBluetoothDevice}.
*
* @param device the address of the Bluetooth device
@@ -388,8 +405,14 @@
/** Handles when the device been set as active/inactive. */
public synchronized void onActiveDeviceChanged(CachedBluetoothDevice cachedBluetoothDevice) {
- if (cachedBluetoothDevice.isHearingAidDevice()) {
+ if (cachedBluetoothDevice == null) {
+ return;
+ }
+ if (cachedBluetoothDevice.isHearingDevice()) {
mHearingAidDeviceManager.onActiveDeviceChanged(cachedBluetoothDevice);
+ if (Flags.hearingDeviceSetConnectionStatusReport()) {
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+ }
}
}
@@ -421,6 +444,14 @@
mainDevice.unpair();
mainDevice.setSubDevice(null);
}
+
+ // TODO: b/386121967 - Should change to use isHearingDevice but mProfile get clear here.
+ // Need to consider where to put this logic when using isHearingDevice()
+ if (device.isHearingAidDevice()) {
+ if (Flags.hearingDeviceSetConnectionStatusReport()) {
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+ }
+ }
}
/**
@@ -579,6 +610,11 @@
return mOngoingSetMemberPair != null && mOngoingSetMemberPair.equals(device);
}
+ @NonNull
+ public HearingAidDeviceManager getHearingAidDeviceManager() {
+ return mHearingAidDeviceManager;
+ }
+
private void log(String msg) {
if (DEBUG) {
Log.d(TAG, msg);
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
index ad34e83..b2c2794 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
@@ -15,7 +15,11 @@
*/
package com.android.settingslib.bluetooth;
+import static android.bluetooth.BluetoothDevice.BOND_BONDED;
+
+import android.annotation.CallbackExecutor;
import android.bluetooth.BluetoothCsipSetCoordinator;
+import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHapClient;
import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothProfile;
@@ -30,15 +34,25 @@
import android.util.FeatureFlagUtils;
import android.util.Log;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.collection.ArraySet;
+
import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.bluetooth.HearingAidAudioRoutingConstants.RoutingValue;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
/**
- * HearingAidDeviceManager manages the set of remote HearingAid(ASHA) Bluetooth devices.
+ * HearingAidDeviceManager manages the set of remote bluetooth hearing devices.
*/
public class HearingAidDeviceManager {
private static final String TAG = "HearingAidDeviceManager";
@@ -49,6 +63,12 @@
private final LocalBluetoothManager mBtManager;
private final List<CachedBluetoothDevice> mCachedDevices;
private final HearingAidAudioRoutingHelper mRoutingHelper;
+ private static final Map<ConnectionStatusListener, Executor>
+ mConnectionStatusListeners = new ConcurrentHashMap<>();
+ @ConnectionStatus
+ private int mDevicesConnectionStatus = ConnectionStatus.NO_DEVICE_BONDED;
+ private boolean mInitialDevicesConnectionStatusUpdate = false;
+
HearingAidDeviceManager(Context context, LocalBluetoothManager localBtManager,
List<CachedBluetoothDevice> CachedDevices) {
mContext = context;
@@ -68,6 +88,191 @@
mRoutingHelper = routingHelper;
}
+ /**
+ * Defines the connection status for hearing devices.
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ ConnectionStatus.NO_DEVICE_BONDED,
+ ConnectionStatus.DISCONNECTED,
+ ConnectionStatus.CONNECTED,
+ ConnectionStatus.CONNECTING_OR_DISCONNECTING,
+ ConnectionStatus.ACTIVE
+ })
+ public @interface ConnectionStatus {
+ int NO_DEVICE_BONDED = -1;
+ int DISCONNECTED = 0;
+ int CONNECTED = 1;
+ int CONNECTING_OR_DISCONNECTING = 2;
+ int ACTIVE = 3;
+ }
+ /**
+ * Interface for connection status listener.
+ */
+ public interface ConnectionStatusListener {
+ /**
+ * Callback when hearing devices connection status change.
+ *
+ * <p>devices here means singular device or binaural device.
+ * E.g. One of hearing device is in CONNECTED status and another is in DISCONNECTED,
+ * it will callback CONNECTED status.
+ *
+ * @param status Updated {@link ConnectionStatus}
+ */
+ void onDevicesConnectionStatusChanged(@ConnectionStatus int status);
+ }
+
+ /**
+ * Registers a listener to be notified of connection status changes.
+ *
+ * @param listener The listener to register.
+ * @param executor The executor on which the listener's callback will be run.
+ */
+ public void registerConnectionStatusListener(
+ @NonNull ConnectionStatusListener listener,
+ @NonNull @CallbackExecutor Executor executor) {
+ mConnectionStatusListeners.put(listener, executor);
+ }
+
+ /**
+ * Unregisters a listener previously registered with
+ * {@link #registerConnectionStatusListener(ConnectionStatusListener, Executor)}.
+ *
+ * @param listener The listener to unregister.
+ */
+ public void unregisterConnectionStatusListener(
+ @NonNull ConnectionStatusListener listener) {
+ mConnectionStatusListeners.remove(listener);
+ }
+
+ private void notifyDevicesConnectionStatusChanged(int status) {
+ mConnectionStatusListeners.forEach((listener, executor) ->
+ executor.execute(() -> listener.onDevicesConnectionStatusChanged(status)));
+ }
+
+ /**
+ * Updates the connection status of the hearing devices based on the currently bonded
+ * hearing aid devices.
+ */
+ synchronized void notifyDevicesConnectionStatusChanged() {
+ final int prevVal = mDevicesConnectionStatus;
+ updateDevicesConnectionStatus();
+ if (mDevicesConnectionStatus != prevVal) {
+ notifyDevicesConnectionStatusChanged(mDevicesConnectionStatus);
+ }
+ }
+
+ private void updateDevicesConnectionStatus() {
+ mInitialDevicesConnectionStatusUpdate = true;
+ // Add all hearing devices including sub and member into a set.
+ Set<CachedBluetoothDevice> allHearingDevices = mCachedDevices.stream()
+ .filter(d -> d.getBondState() == BluetoothDevice.BOND_BONDED
+ && d.isHearingDevice())
+ .flatMap(d -> getAssociatedCachedDevice(d).stream())
+ .collect(Collectors.toSet());
+
+ // Status sequence matters here. If one of the hearing devices is in previous
+ // ConnectionStatus, we will treat whole hearing devices is in this status.
+ // E.g. One of hearing device is in CONNECTED status and another is in DISCONNECTED
+ // status, the hearing devices connection status will notify CONNECTED status.
+ if (isConnectingOrDisconnectingConnectionStatus(allHearingDevices)) {
+ mDevicesConnectionStatus = ConnectionStatus.CONNECTING_OR_DISCONNECTING;
+ } else if (isActiveConnectionStatus(allHearingDevices)) {
+ mDevicesConnectionStatus = ConnectionStatus.ACTIVE;
+ } else if (isConnectedStatus(allHearingDevices)) {
+ mDevicesConnectionStatus = ConnectionStatus.CONNECTED;
+ } else if (isDisconnectedStatus(allHearingDevices)) {
+ mDevicesConnectionStatus = ConnectionStatus.DISCONNECTED;
+ } else {
+ mDevicesConnectionStatus = ConnectionStatus.NO_DEVICE_BONDED;
+ }
+
+ if (DEBUG) {
+ Log.d(TAG, "updateDevicesConnectionStatus: " + mDevicesConnectionStatus);
+ }
+ }
+
+ /**
+ * @return all the related CachedBluetoothDevices for this device.
+ */
+ @NonNull
+ public Set<CachedBluetoothDevice> getAssociatedCachedDevice(
+ @NonNull CachedBluetoothDevice device) {
+ ArraySet<CachedBluetoothDevice> cachedDeviceSet = new ArraySet<>();
+ cachedDeviceSet.add(device);
+ // Associated device should be added into memberDevice if it support CSIP profile.
+ Set<CachedBluetoothDevice> memberDevices = device.getMemberDevice();
+ if (!memberDevices.isEmpty()) {
+ cachedDeviceSet.addAll(memberDevices);
+ return cachedDeviceSet;
+ }
+ // If not support CSIP profile, it should be ASHA hearing device and added into subDevice.
+ CachedBluetoothDevice subDevice = device.getSubDevice();
+ if (subDevice != null) {
+ cachedDeviceSet.add(subDevice);
+ return cachedDeviceSet;
+ }
+
+ return cachedDeviceSet;
+ }
+
+ private boolean isConnectingOrDisconnectingConnectionStatus(
+ Set<CachedBluetoothDevice> devices) {
+ HearingAidProfile hearingAidProfile = mBtManager.getProfileManager().getHearingAidProfile();
+ HapClientProfile hapClientProfile = mBtManager.getProfileManager().getHapClientProfile();
+
+ for (CachedBluetoothDevice device : devices) {
+ if (hearingAidProfile != null) {
+ int status = device.getProfileConnectionState(hearingAidProfile);
+ if (status == BluetoothProfile.STATE_DISCONNECTING
+ || status == BluetoothProfile.STATE_CONNECTING) {
+ return true;
+ }
+ }
+ if (hapClientProfile != null) {
+ int status = device.getProfileConnectionState(hapClientProfile);
+ if (status == BluetoothProfile.STATE_DISCONNECTING
+ || status == BluetoothProfile.STATE_CONNECTING) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean isActiveConnectionStatus(Set<CachedBluetoothDevice> devices) {
+ for (CachedBluetoothDevice device : devices) {
+ if ((device.isActiveDevice(BluetoothProfile.HEARING_AID)
+ && device.isConnectedProfile(BluetoothProfile.HEARING_AID))
+ || (device.isActiveDevice(BluetoothProfile.LE_AUDIO)
+ && device.isConnectedProfile(BluetoothProfile.LE_AUDIO))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean isConnectedStatus(Set<CachedBluetoothDevice> devices) {
+ return devices.stream().anyMatch(CachedBluetoothDevice::isConnected);
+ }
+
+ private boolean isDisconnectedStatus(Set<CachedBluetoothDevice> devices) {
+ return devices.stream().anyMatch(
+ d -> (!d.isConnected() && d.getBondState() == BOND_BONDED));
+ }
+
+ /**
+ * Gets the connection status for hearing device set. Will update connection status first if
+ * never updated.
+ */
+ @ConnectionStatus
+ public int getDevicesConnectionStatus() {
+ if (!mInitialDevicesConnectionStatusUpdate) {
+ updateDevicesConnectionStatus();
+ }
+ return mDevicesConnectionStatus;
+ }
+
void initHearingAidDeviceIfNeeded(CachedBluetoothDevice newDevice,
List<ScanFilter> leScanFilters) {
HearingAidInfo info = generateHearingAidInfo(newDevice);
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
index 8dfeb55..7c24df9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
@@ -47,12 +47,14 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.CollectionUtils;
+import com.android.settingslib.flags.Flags;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -345,11 +347,17 @@
oldState == BluetoothProfile.STATE_CONNECTING) {
Log.i(TAG, "Failed to connect " + mProfile + " device");
}
+ final boolean isAshaProfile = getHearingAidProfile() != null
+ && mProfile instanceof HearingAidProfile;
+ final boolean isHapClientProfile = getHapClientProfile() != null
+ && mProfile instanceof HapClientProfile;
+ final boolean isLeAudioProfile = getLeAudioProfile() != null
+ && mProfile instanceof LeAudioProfile;
+ final boolean isHapClientOrLeAudioProfile = isHapClientProfile || isLeAudioProfile;
+ final boolean isCsipProfile = getCsipSetCoordinatorProfile() != null
+ && mProfile instanceof CsipSetCoordinatorProfile;
- if (getHearingAidProfile() != null
- && mProfile instanceof HearingAidProfile
- && (newState == BluetoothProfile.STATE_CONNECTED)) {
-
+ if (isAshaProfile && (newState == BluetoothProfile.STATE_CONNECTED)) {
// Check if the HiSyncID has being initialized
if (cachedDevice.getHiSyncId() == BluetoothHearingAid.HI_SYNC_ID_INVALID) {
long newHiSyncId = getHearingAidProfile().getHiSyncId(cachedDevice.getDevice());
@@ -366,11 +374,6 @@
HearingAidStatsLogUtils.logHearingAidInfo(cachedDevice);
}
- final boolean isHapClientProfile = getHapClientProfile() != null
- && mProfile instanceof HapClientProfile;
- final boolean isLeAudioProfile = getLeAudioProfile() != null
- && mProfile instanceof LeAudioProfile;
- final boolean isHapClientOrLeAudioProfile = isHapClientProfile || isLeAudioProfile;
if (isHapClientOrLeAudioProfile && newState == BluetoothProfile.STATE_CONNECTED) {
// Checks if both profiles are connected to the device. Hearing aid info need
@@ -385,9 +388,7 @@
}
}
- if (getCsipSetCoordinatorProfile() != null
- && mProfile instanceof CsipSetCoordinatorProfile
- && newState == BluetoothProfile.STATE_CONNECTED) {
+ if (isCsipProfile && (newState == BluetoothProfile.STATE_CONNECTED)) {
// Check if the GroupID has being initialized
if (cachedDevice.getGroupId() == BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
final Map<Integer, ParcelUuid> groupIdMap = getCsipSetCoordinatorProfile()
@@ -403,6 +404,21 @@
}
}
+ // LE_AUDIO, CSIP_SET_COORDINATOR profiles will also impact the connection status
+ // change, e.g. device need to active on LE_AUDIO to become active connection status.
+ final Set<Integer> hearingDeviceConnectionStatusProfileId = Set.of(
+ BluetoothProfile.HEARING_AID,
+ BluetoothProfile.HAP_CLIENT,
+ BluetoothProfile.LE_AUDIO,
+ BluetoothProfile.CSIP_SET_COORDINATOR
+ );
+ if (Flags.hearingDeviceSetConnectionStatusReport()) {
+ if (hearingDeviceConnectionStatusProfileId.contains(mProfile.getProfileId())) {
+ mDeviceManager.notifyHearingDevicesConnectionStatusChangedIfNeeded(
+ cachedDevice);
+ }
+ }
+
cachedDevice.onProfileStateChanged(mProfile, newState);
// Dispatch profile changed after device update
boolean needDispatchProfileConnectionState = true;
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/DataServiceUtils.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/DataServiceUtils.java
index 714f951..f6acac1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/DataServiceUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/DataServiceUtils.java
@@ -18,8 +18,6 @@
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
-import android.telephony.UiccPortInfo;
-import android.telephony.UiccSlotMapping;
public class DataServiceUtils {
@@ -43,35 +41,6 @@
* {@see MobileNetworkUtils#isMobileDataEnabled(Context)}.
*/
public static final String COLUMN_IS_MOBILE_DATA_ENABLED = "isMobileDataEnabled";
-
- /**
- * The name of the show toggle for physicalSim state column,
- * {@see SubscriptionUtil#showToggleForPhysicalSim(SubscriptionManager)}.
- */
- public static final String COLUMN_SHOW_TOGGLE_FOR_PHYSICAL_SIM = "showToggleForPhysicalSim";
- }
-
- /**
- * Represents columns of the UiccInfoData table, define these columns from
- * {@link android.telephony.UiccSlotInfo}, {@link android.telephony.UiccCardInfo},
- * {@link UiccSlotMapping} and {@link android.telephony.UiccPortInfo}.If columns of these 4
- * classes are changed, we should also update the table except PII data.
- */
- public static final class UiccInfoData {
-
- /** The name of the UiccInfoData table. */
- public static final String TABLE_NAME = "uiccInfo";
-
- /**
- * The name of the ID column, set the {@link SubscriptionInfo#getSubscriptionId()}
- * as the primary key.
- */
- public static final String COLUMN_ID = "sudId";
-
- /**
- * The name of the active state column, see {@link UiccPortInfo#isActive()}.
- */
- public static final String COLUMN_IS_ACTIVE = "isActive";
}
/**
@@ -139,12 +108,5 @@
* {@link SubscriptionManager#isActiveSubscriptionId(int)}.
*/
public static final String COLUMN_IS_ACTIVE_SUBSCRIPTION_ID = "isActiveSubscription";
-
- /**
- * The name of the active data subscription state column, see
- * {@link SubscriptionManager#getActiveDataSubscriptionId()}.
- */
- public static final String COLUMN_IS_ACTIVE_DATA_SUBSCRIPTION =
- "isActiveDataSubscriptionId";
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkDatabase.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkDatabase.java
index 5f7fa27..6357382 100644
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkDatabase.java
+++ b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkDatabase.java
@@ -27,7 +27,7 @@
import java.util.List;
import java.util.Objects;
-@Database(entities = {SubscriptionInfoEntity.class, UiccInfoEntity.class,
+@Database(entities = {SubscriptionInfoEntity.class,
MobileNetworkInfoEntity.class}, exportSchema = false, version = 1)
public abstract class MobileNetworkDatabase extends RoomDatabase {
@@ -35,8 +35,6 @@
public abstract SubscriptionInfoDao mSubscriptionInfoDao();
- public abstract UiccInfoDao mUiccInfoDao();
-
public abstract MobileNetworkInfoDao mMobileNetworkInfoDao();
private static MobileNetworkDatabase sInstance;
@@ -73,16 +71,6 @@
}
/**
- * Insert the UICC info to the UiccInfoEntity table.
- *
- * @param uiccInfoEntity The uiccInfoEntity.
- */
- public void insertUiccInfo(UiccInfoEntity... uiccInfoEntity) {
- Log.d(TAG, "insertUiccInfo");
- mUiccInfoDao().insertUiccInfo(uiccInfoEntity);
- }
-
- /**
* Insert the mobileNetwork info to the MobileNetworkInfoEntity table.
*
* @param mobileNetworkInfoEntity The mobileNetworkInfoEntity.
@@ -100,14 +88,6 @@
}
/**
- * Query the subscription info by the subscription ID from the SubscriptionInfoEntity
- * table.
- */
- public SubscriptionInfoEntity querySubInfoById(String id) {
- return mSubscriptionInfoDao().querySubInfoById(id);
- }
-
- /**
* Query all mobileNetwork infos from the MobileNetworkInfoEntity
* table.
*/
@@ -116,21 +96,6 @@
}
/**
- * Query the mobileNetwork info by the subscription ID from the MobileNetworkInfoEntity
- * table.
- */
- public MobileNetworkInfoEntity queryMobileNetworkInfoById(String id) {
- return mMobileNetworkInfoDao().queryMobileNetworkInfoBySubId(id);
- }
-
- /**
- * Query all UICC infos from the UiccInfoEntity table.
- */
- public LiveData<List<UiccInfoEntity>> queryAllUiccInfo() {
- return mUiccInfoDao().queryAllUiccInfos();
- }
-
- /**
* Delete the subscriptionInfo info by the subscription ID from the SubscriptionInfoEntity
* table.
*/
@@ -145,11 +110,4 @@
public void deleteMobileNetworkInfoBySubId(String id) {
mMobileNetworkInfoDao().deleteBySubId(id);
}
-
- /**
- * Delete the UICC info by the subscription ID from the UiccInfoEntity table.
- */
- public void deleteUiccInfoBySubId(String id) {
- mUiccInfoDao().deleteBySubId(id);
- }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkInfoEntity.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkInfoEntity.java
index 13f99e9..6366708 100644
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkInfoEntity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/MobileNetworkInfoEntity.java
@@ -26,11 +26,9 @@
@Entity(tableName = DataServiceUtils.MobileNetworkInfoData.TABLE_NAME)
public class MobileNetworkInfoEntity {
- public MobileNetworkInfoEntity(@NonNull String subId, boolean isMobileDataEnabled,
- boolean showToggleForPhysicalSim) {
+ public MobileNetworkInfoEntity(@NonNull String subId, boolean isMobileDataEnabled) {
this.subId = subId;
this.isMobileDataEnabled = isMobileDataEnabled;
- this.showToggleForPhysicalSim = showToggleForPhysicalSim;
}
@PrimaryKey
@@ -41,15 +39,11 @@
@ColumnInfo(name = DataServiceUtils.MobileNetworkInfoData.COLUMN_IS_MOBILE_DATA_ENABLED)
public boolean isMobileDataEnabled;
- @ColumnInfo(name = DataServiceUtils.MobileNetworkInfoData.COLUMN_SHOW_TOGGLE_FOR_PHYSICAL_SIM)
- public boolean showToggleForPhysicalSim;
-
@Override
public int hashCode() {
int result = 17;
result = 31 * result + subId.hashCode();
result = 31 * result + Boolean.hashCode(isMobileDataEnabled);
- result = 31 * result + Boolean.hashCode(showToggleForPhysicalSim);
return result;
}
@@ -64,8 +58,7 @@
MobileNetworkInfoEntity info = (MobileNetworkInfoEntity) obj;
return TextUtils.equals(subId, info.subId)
- && isMobileDataEnabled == info.isMobileDataEnabled
- && showToggleForPhysicalSim == info.showToggleForPhysicalSim;
+ && isMobileDataEnabled == info.isMobileDataEnabled;
}
public String toString() {
@@ -74,8 +67,6 @@
.append(subId)
.append(", isMobileDataEnabled = ")
.append(isMobileDataEnabled)
- .append(", activeNetworkIsCellular = ")
- .append(showToggleForPhysicalSim)
.append(")}");
return builder.toString();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/SubscriptionInfoEntity.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/SubscriptionInfoEntity.java
index 88e6a57..ff0f27b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/SubscriptionInfoEntity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/SubscriptionInfoEntity.java
@@ -30,7 +30,7 @@
public SubscriptionInfoEntity(@NonNull String subId, int simSlotIndex, boolean isEmbedded,
boolean isOpportunistic, String uniqueName, boolean isSubscriptionVisible,
boolean isDefaultSubscriptionSelection, boolean isValidSubscription,
- boolean isActiveSubscriptionId, boolean isActiveDataSubscriptionId) {
+ boolean isActiveSubscriptionId) {
this.subId = subId;
this.simSlotIndex = simSlotIndex;
this.isEmbedded = isEmbedded;
@@ -40,7 +40,6 @@
this.isDefaultSubscriptionSelection = isDefaultSubscriptionSelection;
this.isValidSubscription = isValidSubscription;
this.isActiveSubscriptionId = isActiveSubscriptionId;
- this.isActiveDataSubscriptionId = isActiveDataSubscriptionId;
}
@PrimaryKey
@@ -73,17 +72,10 @@
@ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_ACTIVE_SUBSCRIPTION_ID)
public boolean isActiveSubscriptionId;
- @ColumnInfo(name = DataServiceUtils.SubscriptionInfoData.COLUMN_IS_ACTIVE_DATA_SUBSCRIPTION)
- public boolean isActiveDataSubscriptionId;
-
public int getSubId() {
return Integer.valueOf(subId);
}
- public CharSequence getUniqueDisplayName() {
- return uniqueName;
- }
-
public boolean isActiveSubscription() {
return isActiveSubscriptionId;
}
@@ -103,8 +95,7 @@
isSubscriptionVisible,
isDefaultSubscriptionSelection,
isValidSubscription,
- isActiveSubscriptionId,
- isActiveDataSubscriptionId);
+ isActiveSubscriptionId);
}
@Override
@@ -125,8 +116,7 @@
&& isSubscriptionVisible == info.isSubscriptionVisible
&& isDefaultSubscriptionSelection == info.isDefaultSubscriptionSelection
&& isValidSubscription == info.isValidSubscription
- && isActiveSubscriptionId == info.isActiveSubscriptionId
- && isActiveDataSubscriptionId == info.isActiveDataSubscriptionId;
+ && isActiveSubscriptionId == info.isActiveSubscriptionId;
}
public String toString() {
@@ -149,8 +139,6 @@
.append(isValidSubscription)
.append(", isActiveSubscriptionId = ")
.append(isActiveSubscriptionId)
- .append(", isActiveDataSubscriptionId = ")
- .append(isActiveDataSubscriptionId)
.append(")}");
return builder.toString();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoDao.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoDao.java
deleted file mode 100644
index 90e5189..0000000
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoDao.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.mobile.dataservice;
-
-import androidx.lifecycle.LiveData;
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-@Dao
-public interface UiccInfoDao {
-
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insertUiccInfo(UiccInfoEntity... uiccInfo);
-
- @Query("SELECT * FROM " + DataServiceUtils.UiccInfoData.TABLE_NAME + " ORDER BY "
- + DataServiceUtils.UiccInfoData.COLUMN_ID)
- LiveData<List<UiccInfoEntity>> queryAllUiccInfos();
-
- @Query("SELECT COUNT(*) FROM " + DataServiceUtils.UiccInfoData.TABLE_NAME)
- int count();
-
- @Query("DELETE FROM " + DataServiceUtils.UiccInfoData.TABLE_NAME + " WHERE "
- + DataServiceUtils.UiccInfoData.COLUMN_ID + " = :id")
- void deleteBySubId(String id);
-}
diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoEntity.java b/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoEntity.java
deleted file mode 100644
index 0f80edf..0000000
--- a/packages/SettingsLib/src/com/android/settingslib/mobile/dataservice/UiccInfoEntity.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.mobile.dataservice;
-
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-import androidx.room.ColumnInfo;
-import androidx.room.Entity;
-import androidx.room.PrimaryKey;
-
-@Entity(tableName = DataServiceUtils.UiccInfoData.TABLE_NAME)
-public class UiccInfoEntity {
-
- public UiccInfoEntity(@NonNull String subId, boolean isActive) {
- this.subId = subId;
- this.isActive = isActive;
- }
-
- @PrimaryKey
- @ColumnInfo(name = DataServiceUtils.UiccInfoData.COLUMN_ID, index = true)
- @NonNull
- public String subId;
-
- @ColumnInfo(name = DataServiceUtils.UiccInfoData.COLUMN_IS_ACTIVE)
- public boolean isActive;
-
- @Override
- public int hashCode() {
- int result = 17;
- result = 31 * result + subId.hashCode();
- result = 31 * result + Boolean.hashCode(isActive);
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (!(obj instanceof UiccInfoEntity)) {
- return false;
- }
-
- UiccInfoEntity info = (UiccInfoEntity) obj;
- return TextUtils.equals(subId, info.subId) && isActive == info.isActive;
- }
-
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append(" {UiccInfoEntity(subId = ")
- .append(subId)
- .append(", isActive = ")
- .append(isActive)
- .append(")}");
- return builder.toString();
- }
-}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
index c71b19c..e01f279 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
@@ -501,7 +501,7 @@
val wifiManager = context.getSystemService(WifiManager::class.java) ?: return@launch
val aapmManager = context.getSystemService(AdvancedProtectionManager::class.java)
if (isAdvancedProtectionEnabled(aapmManager)) {
- val intent = AdvancedProtectionManager.createSupportIntent(
+ val intent = aapmManager.createSupportIntent(
AdvancedProtectionManager.FEATURE_ID_DISALLOW_WEP,
AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION)
onStartActivity(intent)
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
index 05f471f..69e99c6 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java
@@ -33,21 +33,37 @@
import android.content.Context;
import android.os.Parcel;
import android.os.ParcelUuid;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
@RunWith(RobolectricTestRunner.class)
public class CachedBluetoothDeviceManagerTest {
+ @Rule
+ public MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+
private final static String DEVICE_NAME_1 = "TestName_1";
private final static String DEVICE_NAME_2 = "TestName_2";
private final static String DEVICE_NAME_3 = "TestName_3";
@@ -82,6 +98,8 @@
@Mock
private HearingAidProfile mHearingAidProfile;
@Mock
+ private HapClientProfile mHapClientProfile;
+ @Mock
private CsipSetCoordinatorProfile mCsipSetCoordinatorProfile;
@Mock
private BluetoothDevice mDevice1;
@@ -89,12 +107,11 @@
private BluetoothDevice mDevice2;
@Mock
private BluetoothDevice mDevice3;
+ private HearingAidDeviceManager mHearingAidDeviceManager;
private CachedBluetoothDevice mCachedDevice1;
private CachedBluetoothDevice mCachedDevice2;
private CachedBluetoothDevice mCachedDevice3;
private CachedBluetoothDeviceManager mCachedDeviceManager;
- private HearingAidDeviceManager mHearingAidDeviceManager;
- private Context mContext;
private BluetoothClass createBtClass(int deviceClass) {
Parcel p = Parcel.obtain();
@@ -108,8 +125,6 @@
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
when(mDevice1.getAddress()).thenReturn(DEVICE_ADDRESS_1);
when(mDevice2.getAddress()).thenReturn(DEVICE_ADDRESS_2);
when(mDevice3.getAddress()).thenReturn(DEVICE_ADDRESS_3);
@@ -129,13 +144,15 @@
when(mA2dpProfile.isProfileReady()).thenReturn(true);
when(mPanProfile.isProfileReady()).thenReturn(true);
when(mHearingAidProfile.isProfileReady()).thenReturn(true);
+ when(mHapClientProfile.isProfileReady()).thenReturn(true);
when(mCsipSetCoordinatorProfile.isProfileReady())
.thenReturn(true);
doAnswer((invocation) -> mHearingAidProfile).
when(mLocalProfileManager).getHearingAidProfile();
doAnswer((invocation) -> mCsipSetCoordinatorProfile)
.when(mLocalProfileManager).getCsipSetCoordinatorProfile();
- mCachedDeviceManager = new CachedBluetoothDeviceManager(mContext, mLocalBluetoothManager);
+ mCachedDeviceManager = spy(
+ new CachedBluetoothDeviceManager(mContext, mLocalBluetoothManager));
mCachedDevice1 = spy(new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice1));
mCachedDevice2 = spy(new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice2));
mCachedDevice3 = spy(new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice3));
@@ -621,12 +638,55 @@
public void onActiveDeviceChanged_validHiSyncId_callExpectedFunction() {
doNothing().when(mHearingAidDeviceManager).onActiveDeviceChanged(any());
when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
- CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1);
- cachedDevice1.setHearingAidInfo(
- new HearingAidInfo.Builder().setHiSyncId(HISYNCID1).build());
+ when(mCachedDevice1.getProfiles()).thenReturn(
+ ImmutableList.of(mHapClientProfile, mHearingAidProfile));
- mCachedDeviceManager.onActiveDeviceChanged(cachedDevice1);
+ mCachedDeviceManager.onActiveDeviceChanged(mCachedDevice1);
- verify(mHearingAidDeviceManager).onActiveDeviceChanged(cachedDevice1);
+ verify(mHearingAidDeviceManager).onActiveDeviceChanged(mCachedDevice1);
+ }
+
+ @Test
+ @RequiresFlagsEnabled(
+ com.android.settingslib.flags.Flags.FLAG_HEARING_DEVICE_SET_CONNECTION_STATUS_REPORT)
+ public void onActiveDeviceChanged_hearingDevice_callReportConnectionStatus() {
+ when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(
+ ImmutableList.of(mHapClientProfile, mHearingAidProfile));
+
+ mCachedDeviceManager.onActiveDeviceChanged(mCachedDevice1);
+
+ verify(mHearingAidDeviceManager).notifyDevicesConnectionStatusChanged();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(
+ com.android.settingslib.flags.Flags.FLAG_HEARING_DEVICE_SET_CONNECTION_STATUS_REPORT)
+ public void onDeviceUnpaired_hearingDevice_callReportConnectionStatus() {
+ when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(
+ ImmutableList.of(mHapClientProfile, mHearingAidProfile));
+
+ mCachedDeviceManager.onDeviceUnpaired(mCachedDevice1);
+
+ verify(mHearingAidDeviceManager).notifyDevicesConnectionStatusChanged();
+ }
+
+ @Test
+ public void notifyHearingDevicesConnectionStatusChanged_nonHearingDevice_notCallFunction() {
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mA2dpProfile));
+
+ mCachedDeviceManager.notifyHearingDevicesConnectionStatusChangedIfNeeded(mCachedDevice1);
+
+ verify(mHearingAidDeviceManager, never()).notifyDevicesConnectionStatusChanged();
+ }
+
+ @Test
+ public void notifyHearingDevicesConnectionStatusChanged_hearingDeviceProfile_callFunction() {
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile));
+
+ mCachedDeviceManager.notifyHearingDevicesConnectionStatusChangedIfNeeded(mCachedDevice1);
+
+ verify(mHearingAidDeviceManager).notifyDevicesConnectionStatusChanged();
}
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
index 30f8a79..d933a1c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
@@ -2074,6 +2074,21 @@
assertThat(mCachedDevice.getConnectionSummary(false)).isNull();
}
+ @Test
+ public void isHearingDevice_supportHearingRelatedProfiles_returnTrue() {
+ when(mCachedDevice.getProfiles()).thenReturn(
+ ImmutableList.of(mHapClientProfile, mHearingAidProfile));
+
+ assertThat(mCachedDevice.isHearingDevice()).isTrue();
+ }
+
+ @Test
+ public void isHearingDevice_supportOnlyLeAudioProfile_returnFalse() {
+ when(mCachedDevice.getProfiles()).thenReturn(ImmutableList.of(mLeAudioProfile));
+
+ assertThat(mCachedDevice.isHearingDevice()).isFalse();
+ }
+
private void updateProfileStatus(LocalBluetoothProfile profile, int status) {
doReturn(status).when(profile).getConnectionStatus(mDevice);
mCachedDevice.onProfileStateChanged(profile, status);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
index 2458c5b..21dde1f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
@@ -54,6 +54,8 @@
import androidx.test.core.app.ApplicationProvider;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager.ConnectionStatus;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -112,7 +114,10 @@
private BluetoothDevice mDevice1;
@Mock
private BluetoothDevice mDevice2;
-
+ @Mock
+ private HearingAidDeviceManager.ConnectionStatusListener mConnectionStatusListener;
+ @Mock
+ private HearingAidDeviceManager.ConnectionStatusListener mConnectionStatusListener2;
private BluetoothClass createBtClass(int deviceClass) {
Parcel p = Parcel.obtain();
@@ -140,6 +145,8 @@
when(mLocalProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile);
when(mLocalProfileManager.getLeAudioProfile()).thenReturn(mLeAudioProfile);
when(mLocalProfileManager.getHapClientProfile()).thenReturn(mHapClientProfile);
+ when(mHapClientProfile.getProfileId()).thenReturn(BluetoothProfile.HAP_CLIENT);
+ when(mLeAudioProfile.getProfileId()).thenReturn(BluetoothProfile.LE_AUDIO);
when(mAudioStrategy.getAudioAttributesForLegacyStreamType(
AudioManager.STREAM_MUSIC))
.thenReturn((new AudioAttributes.Builder()).build());
@@ -826,6 +833,125 @@
verify(mHapClientProfile).selectPreset(mDevice2, PRESET_INDEX_1);
}
+ @Test
+ public void getAssociatedCachedDevice_existSubDevice_returnSize2() {
+ mCachedDevice1.setSubDevice(mCachedDevice2);
+
+ //including self device
+ assertThat(mHearingAidDeviceManager.getAssociatedCachedDevice(
+ mCachedDevice1).size()).isEqualTo(2);
+ }
+
+ @Test
+ public void getAssociatedCachedDevice_existMemberDevice_returnSize2() {
+ mCachedDevice1.addMemberDevice(mCachedDevice2);
+
+ //including self device
+ assertThat(mHearingAidDeviceManager.getAssociatedCachedDevice(
+ mCachedDevice1).size()).isEqualTo(2);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_connecting_connectingStatus() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile));
+ when(mHapClientProfile.getConnectionStatus(mDevice1)).thenReturn(
+ BluetoothProfile.STATE_CONNECTING);
+
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ assertThat(mHearingAidDeviceManager.getDevicesConnectionStatus()).isEqualTo(
+ ConnectionStatus.CONNECTING_OR_DISCONNECTING);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_activeConnectedProfile_activeStatus() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile, mLeAudioProfile));
+ when(mLeAudioProfile.getConnectionStatus(mDevice1)).thenReturn(
+ BluetoothProfile.STATE_CONNECTED);
+ when(mCachedDevice1.isActiveDevice(BluetoothProfile.LE_AUDIO)).thenReturn(true);
+
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ assertThat(mHearingAidDeviceManager.getDevicesConnectionStatus()).isEqualTo(
+ ConnectionStatus.ACTIVE);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_isConnected_connectedStatus() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile, mLeAudioProfile));
+ when(mCachedDevice1.isConnected()).thenReturn(true);
+
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ assertThat(mHearingAidDeviceManager.getDevicesConnectionStatus()).isEqualTo(
+ ConnectionStatus.CONNECTED);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_bondedNotConnected_disconnectedStatus() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.isConnected()).thenReturn(false);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile));
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ assertThat(mHearingAidDeviceManager.getDevicesConnectionStatus()).isEqualTo(
+ ConnectionStatus.DISCONNECTED);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_bondNone_noDeviceBondedStatus() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ assertThat(mHearingAidDeviceManager.getDevicesConnectionStatus()).isEqualTo(
+ ConnectionStatus.NO_DEVICE_BONDED);
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_noRegisteredListener_noCallback() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile, mLeAudioProfile));
+ when(mCachedDevice1.isConnected()).thenReturn(true);
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+
+ mHearingAidDeviceManager.registerConnectionStatusListener(
+ mConnectionStatusListener, mContext.getMainExecutor());
+ mHearingAidDeviceManager.unregisterConnectionStatusListener(
+ mConnectionStatusListener);
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ verify(mConnectionStatusListener, never()).onDevicesConnectionStatusChanged(anyInt());
+ }
+
+ @Test
+ public void notifyDevicesConnectionStatusChanged_twoRegisteredListener_callbackEachConnected() {
+ when(mCachedDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+ when(mCachedDevice1.getProfiles()).thenReturn(List.of(mHapClientProfile, mLeAudioProfile));
+ when(mCachedDevice1.isConnected()).thenReturn(true);
+ mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);
+
+ mHearingAidDeviceManager.registerConnectionStatusListener(
+ mConnectionStatusListener, mContext.getMainExecutor());
+ mHearingAidDeviceManager.registerConnectionStatusListener(
+ mConnectionStatusListener2, mContext.getMainExecutor());
+ mHearingAidDeviceManager.notifyDevicesConnectionStatusChanged();
+
+ verify(mConnectionStatusListener).onDevicesConnectionStatusChanged(
+ ConnectionStatus.CONNECTED);
+ verify(mConnectionStatusListener2).onDevicesConnectionStatusChanged(
+ ConnectionStatus.CONNECTED);
+ }
+
private HearingAidInfo getLeftAshaHearingAidInfo(long hiSyncId) {
return new HearingAidInfo.Builder()
.setAshaDeviceSide(HearingAidInfo.DeviceSide.SIDE_LEFT)
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
index 6ff90ba..219bfe0 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java
@@ -37,10 +37,14 @@
import android.content.Context;
import android.content.Intent;
import android.os.ParcelUuid;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -56,6 +60,9 @@
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowBluetoothAdapter.class})
public class LocalBluetoothProfileManagerTest {
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
private static final long HISYNCID = 10;
private static final int GROUP_ID = 1;
@@ -305,6 +312,25 @@
verify(mCachedBluetoothDevice).refresh();
}
+ @Test
+ @RequiresFlagsEnabled(
+ com.android.settingslib.flags.Flags.FLAG_HEARING_DEVICE_SET_CONNECTION_STATUS_REPORT)
+ public void stateChangedHandler_hapProfileStateChanged_notifyHearingDevicesConnectionStatus() {
+ mShadowBluetoothAdapter.setSupportedProfiles(generateList(
+ new int[] {BluetoothProfile.HAP_CLIENT}));
+ mProfileManager.updateLocalProfiles();
+
+ mIntent = new Intent(BluetoothHapClient.ACTION_HAP_CONNECTION_STATE_CHANGED);
+ mIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
+ mIntent.putExtra(BluetoothProfile.EXTRA_PREVIOUS_STATE, BluetoothProfile.STATE_CONNECTING);
+ mIntent.putExtra(BluetoothProfile.EXTRA_STATE, BluetoothProfile.STATE_CONNECTED);
+
+ mContext.sendBroadcast(mIntent);
+
+ verify(mDeviceManager).notifyHearingDevicesConnectionStatusChangedIfNeeded(
+ mCachedBluetoothDevice);
+ }
+
private List<Integer> generateList(int[] profiles) {
if (profiles == null) {
return null;
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index 18bebd4..b9f8c71 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -289,5 +289,6 @@
Settings.Secure.MANDATORY_BIOMETRICS_REQUIREMENTS_SATISFIED,
Settings.Secure.ADVANCED_PROTECTION_MODE,
Settings.Secure.ACCESSIBILITY_KEY_GESTURE_TARGETS,
+ Settings.Secure.EM_VALUE,
};
}
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
index f1bbfc6..5b4ee8b 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
@@ -110,6 +110,7 @@
Settings.System.MOUSE_REVERSE_VERTICAL_SCROLLING,
Settings.System.MOUSE_SCROLLING_ACCELERATION,
Settings.System.MOUSE_SWAP_PRIMARY_BUTTON,
+ Settings.System.MOUSE_POINTER_ACCELERATION_ENABLED,
Settings.System.TOUCHPAD_POINTER_SPEED,
Settings.System.TOUCHPAD_NATURAL_SCROLLING,
Settings.System.TOUCHPAD_TAP_TO_CLICK,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 1d7608d..7c5e577 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -445,6 +445,8 @@
Secure.RESOLUTION_MODE_UNKNOWN, Secure.RESOLUTION_MODE_FULL));
VALIDATORS.put(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_SATURATION_LEVEL,
new InclusiveIntegerRangeValidator(0, 10));
+ VALIDATORS.put(Secure.EM_VALUE,
+ new InclusiveIntegerRangeValidator(0, 1));
VALIDATORS.put(Secure.CHARGE_OPTIMIZATION_MODE, new InclusiveIntegerRangeValidator(0, 10));
VALIDATORS.put(Secure.ON_DEVICE_INFERENCE_UNBIND_TIMEOUT_MS, ANY_LONG_VALIDATOR);
VALIDATORS.put(Secure.ON_DEVICE_INTELLIGENCE_UNBIND_TIMEOUT_MS, ANY_LONG_VALIDATOR);
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
index 6abd9b7..0432eea 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
@@ -226,6 +226,7 @@
VALIDATORS.put(System.MOUSE_REVERSE_VERTICAL_SCROLLING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_SWAP_PRIMARY_BUTTON, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_SCROLLING_ACCELERATION, BOOLEAN_VALIDATOR);
+ VALIDATORS.put(System.MOUSE_POINTER_ACCELERATION_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_POINTER_SPEED, new InclusiveIntegerRangeValidator(-7, 7));
VALIDATORS.put(System.TOUCHPAD_NATURAL_SCROLLING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_TAP_TO_CLICK, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 661a095..dedd7eb 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -2186,6 +2186,10 @@
SecureSettingsProto.EvenDimmer.EVEN_DIMMER_MIN_NITS);
p.end(evenDimmerToken);
+ dumpSetting(s, p,
+ Settings.Secure.EM_VALUE,
+ SecureSettingsProto.Accessibility.EM_VALUE);
+
final long gestureToken = p.start(SecureSettingsProto.GESTURE);
dumpSetting(s, p,
Settings.Secure.AWARE_ENABLED,
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 3ee2db1..b88ae37 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -278,13 +278,13 @@
"tests/src/**/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt",
"tests/src/**/systemui/temporarydisplay/chipbar/SwipeChipbarAwayGestureHandlerTest.kt",
"tests/src/**/systemui/qs/tiles/HotspotTileTest.java",
- "tests/src/**/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java",
+ "tests/src/**/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java",
"tests/src/**/systemui/navigationbar/NavigationBarControllerImplTest.java",
"tests/src/**/systemui/wmshell/BubblesTest.java",
"tests/src/**/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java",
"tests/src/**/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java",
"tests/src/**/systemui/shared/system/RemoteTransitionTest.java",
- "tests/src/**/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java",
+ "tests/src/**/systemui/qs/tiles/dialog/InternetDetailsContentControllerTest.java",
"tests/src/**/systemui/qs/external/TileLifecycleManagerTest.java",
"tests/src/**/systemui/ScreenDecorationsTest.java",
"tests/src/**/systemui/statusbar/policy/BatteryControllerStartableTest.java",
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 87fb58e..8dd7c7a 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -492,7 +492,7 @@
name: "status_bar_notification_chips"
namespace: "systemui"
description: "Show promoted ongoing notifications as chips in the status bar"
- bug: "361346412"
+ bug: "364653005"
}
flag {
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/ContentOverscrollEffect.kt b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
similarity index 75%
rename from packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/ContentOverscrollEffect.kt
rename to packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
index 2233deb..4ee6db3 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/ContentOverscrollEffect.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.compose.animation.scene.effect
+package com.android.compose.gesture.effect
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.AnimationSpec
@@ -118,56 +118,3 @@
}
}
}
-
-/** An overscroll effect that ensures only a single fling animation is triggered. */
-internal class GestureEffect(private val delegate: ContentOverscrollEffect) :
- ContentOverscrollEffect by delegate {
- private var shouldFling = false
-
- override fun applyToScroll(
- delta: Offset,
- source: NestedScrollSource,
- performScroll: (Offset) -> Offset,
- ): Offset {
- shouldFling = true
- return delegate.applyToScroll(delta, source, performScroll)
- }
-
- override suspend fun applyToFling(
- velocity: Velocity,
- performFling: suspend (Velocity) -> Velocity,
- ) {
- if (!shouldFling) {
- performFling(velocity)
- return
- }
- shouldFling = false
- delegate.applyToFling(velocity, performFling)
- }
-
- suspend fun ensureApplyToFlingIsCalled() {
- applyToFling(Velocity.Zero) { Velocity.Zero }
- }
-}
-
-/**
- * An overscroll effect that only applies visual effects and does not interfere with the actual
- * scrolling or flinging behavior.
- */
-internal class VisualEffect(private val delegate: ContentOverscrollEffect) :
- ContentOverscrollEffect by delegate {
- override fun applyToScroll(
- delta: Offset,
- source: NestedScrollSource,
- performScroll: (Offset) -> Offset,
- ): Offset {
- return performScroll(delta)
- }
-
- override suspend fun applyToFling(
- velocity: Velocity,
- performFling: suspend (Velocity) -> Velocity,
- ) {
- performFling(velocity)
- }
-}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffect.kt b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/OffsetOverscrollEffect.kt
similarity index 71%
rename from packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffect.kt
rename to packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/OffsetOverscrollEffect.kt
index f459c46..d992403 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffect.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/OffsetOverscrollEffect.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.compose.animation.scene.effect
+package com.android.compose.gesture.effect
import androidx.annotation.VisibleForTesting
import androidx.compose.animation.core.AnimationSpec
@@ -34,7 +34,6 @@
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.dp
-import com.android.compose.animation.scene.ProgressConverter
import kotlin.math.roundToInt
import kotlinx.coroutines.CoroutineScope
@@ -80,7 +79,7 @@
)
@VisibleForTesting
- internal fun computeOffset(density: Density, overscrollDistance: Float): Int {
+ fun computeOffset(density: Density, overscrollDistance: Float): Int {
val maxDistancePx = with(density) { MaxDistance.toPx() }
val progress = ProgressConverter.Default.convert(overscrollDistance / maxDistancePx)
return (progress * maxDistancePx).roundToInt()
@@ -98,3 +97,35 @@
OffsetOverscrollEffect(orientation, animationScope, animationSpec)
}
}
+
+/** This converter lets you change a linear progress into a function of your choice. */
+fun interface ProgressConverter {
+ fun convert(progress: Float): Float
+
+ companion object {
+ /** Starts linearly with some resistance and slowly approaches to 0.2f */
+ val Default = tanh(maxProgress = 0.2f, tilt = 3f)
+
+ /**
+ * The scroll stays linear, with [factor] you can control how much resistance there is.
+ *
+ * @param factor If you choose a value between 0f and 1f, the progress will grow more
+ * slowly, like there's resistance. A value of 1f means there's no resistance.
+ */
+ fun linear(factor: Float = 1f) = ProgressConverter { it * factor }
+
+ /**
+ * This function starts linear and slowly approaches [maxProgress].
+ *
+ * See a [visual representation](https://www.desmos.com/calculator/usgvvf0z1u) of this
+ * function.
+ *
+ * @param maxProgress is the maximum progress value.
+ * @param tilt behaves similarly to the factor in the [linear] function, and allows you to
+ * control how quickly you get to the [maxProgress].
+ */
+ fun tanh(maxProgress: Float, tilt: Float = 1f) = ProgressConverter {
+ maxProgress * kotlin.math.tanh(x = it / (maxProgress * tilt))
+ }
+ }
+}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt b/packages/SystemUI/compose/core/src/com/android/compose/ui/util/SpaceVectorConverter.kt
similarity index 100%
rename from packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt
rename to packages/SystemUI/compose/core/src/com/android/compose/ui/util/SpaceVectorConverter.kt
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffectTest.kt b/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/effect/OffsetOverscrollEffectTest.kt
similarity index 98%
rename from packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffectTest.kt
rename to packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/effect/OffsetOverscrollEffectTest.kt
index da8fe30..5a3f240 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/effect/OffsetOverscrollEffectTest.kt
+++ b/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/effect/OffsetOverscrollEffectTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.compose.animation.scene.effect
+package com.android.compose.gesture.effect
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.rememberScrollableState
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
index 7956d02..9643f19 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
@@ -34,7 +34,6 @@
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.SceneScope
import com.android.compose.modifiers.padding
-import com.android.compose.modifiers.thenIf
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.keyguard.ui.composable.LockscreenLongPress
import com.android.systemui.keyguard.ui.composable.section.AmbientIndicationSection
@@ -97,18 +96,15 @@
)
}
- Box {
+ Box(modifier = Modifier.fillMaxWidth()) {
with(topAreaSection) {
DefaultClockLayout(
smartSpacePaddingTop = viewModel::getSmartSpacePaddingTop,
isShadeLayoutWide = isShadeLayoutWide,
modifier =
- Modifier.thenIf(isShadeLayoutWide) {
- Modifier.fillMaxWidth(0.5f)
- }
- .graphicsLayer {
- translationX = unfoldTranslations.start
- },
+ Modifier.fillMaxWidth().graphicsLayer {
+ translationX = unfoldTranslations.start
+ },
)
}
if (isShadeLayoutWide && !isBypassEnabled) {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
index eae46e9..fb01e70 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
@@ -81,10 +81,7 @@
.padding(horizontal = dimensionResource(R.dimen.clock_padding_start))
.padding(top = { smallTopMargin })
.onTopPlacementChanged(onTopChanged)
- .burnInAware(
- viewModel = aodBurnInViewModel,
- params = burnInParams,
- )
+ .burnInAware(viewModel = aodBurnInViewModel, params = burnInParams)
.element(smallClockElementKey),
)
}
@@ -114,10 +111,7 @@
val dir = if (transition.toContent == splitShadeLargeClockScene) -1f else 1f
val distance = dir * getClockCenteringDistance()
val largeClock = checkNotNull(currentClock).largeClock
- largeClock.animations.onPositionUpdated(
- distance = distance,
- fraction = progress,
- )
+ largeClock.animations.onPositionUpdated(distance = distance, fraction = progress)
}
Element(key = largeClockElementKey, modifier = modifier) {
@@ -125,6 +119,16 @@
AndroidView(
factory = { context ->
FrameLayout(context).apply {
+ // By default, ViewGroups like FrameLayout clip their children. Turning
+ // off the clipping allows the child view to render outside of its
+ // bounds - letting the step animation of the clock push the digits out
+ // when needed.
+ //
+ // Note that, in Compose, clipping is actually disabled by default so
+ // there's no need to propagate this up the composable hierarchy.
+ clipChildren = false
+ clipToPadding = false
+
ensureClockViewExists(checkNotNull(currentClock).largeClock.view)
}
},
@@ -136,8 +140,8 @@
.burnInAware(
viewModel = aodBurnInViewModel,
params = burnInParams,
- isClock = true
- )
+ isClock = true,
+ ),
)
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
index cfbe667..ffdf509 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
@@ -58,7 +58,7 @@
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.LowestZIndexContentPicker
-import com.android.compose.animation.scene.effect.rememberOffsetOverscrollEffect
+import com.android.compose.gesture.effect.rememberOffsetOverscrollEffect
import com.android.compose.windowsizeclass.LocalWindowSizeClass
import com.android.systemui.res.R
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
index 7b30a2a..c704a3e 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
@@ -35,7 +35,7 @@
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
-import com.android.compose.animation.scene.effect.ContentOverscrollEffect
+import com.android.compose.gesture.effect.ContentOverscrollEffect
/**
* [SceneTransitionLayout] is a container that automatically animates its content whenever its state
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt
index 8794df0..fda6fab 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt
@@ -25,7 +25,6 @@
import androidx.compose.ui.unit.dp
import com.android.compose.animation.scene.content.state.TransitionState
import com.android.compose.animation.scene.transformation.Transformation
-import kotlin.math.tanh
/** Define the [transitions][SceneTransitions] to be used with a [SceneTransitionLayout]. */
fun transitions(builder: SceneTransitionsBuilder.() -> Unit): SceneTransitions {
@@ -476,35 +475,3 @@
/** Apply a [transformation] to the element(s) matching [matcher]. */
fun transformation(matcher: ElementMatcher, transformation: Transformation.Factory)
}
-
-/** This converter lets you change a linear progress into a function of your choice. */
-fun interface ProgressConverter {
- fun convert(progress: Float): Float
-
- companion object {
- /** Starts linearly with some resistance and slowly approaches to 0.2f */
- val Default = tanh(maxProgress = 0.2f, tilt = 3f)
-
- /**
- * The scroll stays linear, with [factor] you can control how much resistance there is.
- *
- * @param factor If you choose a value between 0f and 1f, the progress will grow more
- * slowly, like there's resistance. A value of 1f means there's no resistance.
- */
- fun linear(factor: Float = 1f) = ProgressConverter { it * factor }
-
- /**
- * This function starts linear and slowly approaches [maxProgress].
- *
- * See a [visual representation](https://www.desmos.com/calculator/usgvvf0z1u) of this
- * function.
- *
- * @param maxProgress is the maximum progress value.
- * @param tilt behaves similarly to the factor in the [linear] function, and allows you to
- * control how quickly you get to the [maxProgress].
- */
- fun tanh(maxProgress: Float, tilt: Float = 1f) = ProgressConverter {
- maxProgress * tanh(x = it / (maxProgress * tilt))
- }
- }
-}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
index 8c5a727..4c15f7a 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
@@ -53,10 +53,10 @@
import com.android.compose.animation.scene.ValueKey
import com.android.compose.animation.scene.animateSharedValueAsState
import com.android.compose.animation.scene.effect.GestureEffect
-import com.android.compose.animation.scene.effect.OffsetOverscrollEffect
import com.android.compose.animation.scene.effect.VisualEffect
import com.android.compose.animation.scene.element
import com.android.compose.animation.scene.modifiers.noResizeDuringTransitions
+import com.android.compose.gesture.effect.OffsetOverscrollEffect
import com.android.compose.modifiers.thenIf
import com.android.compose.ui.graphics.ContainerState
import com.android.compose.ui.graphics.container
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/GestureEffect.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/GestureEffect.kt
new file mode 100644
index 0000000..2db45aa
--- /dev/null
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/effect/GestureEffect.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compose.animation.scene.effect
+
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.nestedscroll.NestedScrollSource
+import androidx.compose.ui.unit.Velocity
+import com.android.compose.gesture.effect.ContentOverscrollEffect
+
+/** An overscroll effect that ensures only a single fling animation is triggered. */
+internal class GestureEffect(private val delegate: ContentOverscrollEffect) :
+ ContentOverscrollEffect by delegate {
+ private var shouldFling = false
+
+ override fun applyToScroll(
+ delta: Offset,
+ source: NestedScrollSource,
+ performScroll: (Offset) -> Offset,
+ ): Offset {
+ shouldFling = true
+ return delegate.applyToScroll(delta, source, performScroll)
+ }
+
+ override suspend fun applyToFling(
+ velocity: Velocity,
+ performFling: suspend (Velocity) -> Velocity,
+ ) {
+ if (!shouldFling) {
+ performFling(velocity)
+ return
+ }
+ shouldFling = false
+ delegate.applyToFling(velocity, performFling)
+ }
+
+ suspend fun ensureApplyToFlingIsCalled() {
+ applyToFling(Velocity.Zero) { Velocity.Zero }
+ }
+}
+
+/**
+ * An overscroll effect that only applies visual effects and does not interfere with the actual
+ * scrolling or flinging behavior.
+ */
+internal class VisualEffect(private val delegate: ContentOverscrollEffect) :
+ ContentOverscrollEffect by delegate {
+ override fun applyToScroll(
+ delta: Offset,
+ source: NestedScrollSource,
+ performScroll: (Offset) -> Offset,
+ ): Offset {
+ return performScroll(delta)
+ }
+
+ override suspend fun applyToFling(
+ velocity: Velocity,
+ performFling: suspend (Velocity) -> Velocity,
+ ) {
+ performFling(velocity)
+ }
+}
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
index 6769032..53495be 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
@@ -70,8 +70,8 @@
import com.android.compose.animation.scene.TestScenes.SceneA
import com.android.compose.animation.scene.TestScenes.SceneB
import com.android.compose.animation.scene.TestScenes.SceneC
-import com.android.compose.animation.scene.effect.OffsetOverscrollEffect
import com.android.compose.animation.scene.subjects.assertThat
+import com.android.compose.gesture.effect.OffsetOverscrollEffect
import com.android.compose.test.assertSizeIsEqualTo
import com.android.compose.test.setContentAndCreateMainScope
import com.android.compose.test.transition
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
index 80de087..2665910 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
@@ -29,6 +29,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.utils.TestUtils;
@@ -58,13 +59,15 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
@Before
public void setUp() throws Exception {
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
final SecureSettings mockSecureSettings = TestUtils.mockSecureSettings();
final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
- mockSecureSettings);
+ mockSecureSettings, mHearingAidDeviceManager);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
stubWindowManager);
final MenuView stubMenuView = spy(new MenuView(mContext, stubMenuViewModel,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
index 24f3a29..785493f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
@@ -16,6 +16,7 @@
package com.android.systemui.accessibility.floatingmenu;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -25,11 +26,13 @@
import android.content.Context;
import android.content.res.Configuration;
+import android.platform.test.annotations.EnableFlags;
import android.view.accessibility.AccessibilityManager;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.util.settings.SecureSettings;
@@ -45,6 +48,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import java.util.concurrent.Executor;
/** Tests for {@link MenuInfoRepository}. */
@RunWith(AndroidJUnit4.class)
@@ -55,9 +59,10 @@
@Mock
private AccessibilityManager mAccessibilityManager;
-
@Mock
- private MenuInfoRepository.OnSettingsContentsChanged mMockSettingsContentsChanged;
+ private HearingAidDeviceManager mHearingAidDeviceManager;
+ @Mock
+ private MenuInfoRepository.OnContentsChanged mMockSettingsContentsChanged;
@Mock
private SecureSettings mSecureSettings;
@@ -72,7 +77,7 @@
anyInt());
mMenuInfoRepository = new MenuInfoRepository(mContext, mAccessibilityManager,
- mMockSettingsContentsChanged, mSecureSettings);
+ mMockSettingsContentsChanged, mSecureSettings, mHearingAidDeviceManager);
}
@After
@@ -103,4 +108,16 @@
verify(mMockSettingsContentsChanged).onTargetFeaturesChanged(any());
}
+
+ @Test
+ @EnableFlags(
+ com.android.settingslib.flags.Flags.FLAG_HEARING_DEVICE_SET_CONNECTION_STATUS_REPORT)
+ public void registerObservers_addHearingDeviceTarget_verifyRegisterConnectionStatusListener() {
+ mShortcutTargets.add(ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString());
+ mMenuInfoRepository.registerObserversAndCallbacks();
+
+ verify(mHearingAidDeviceManager).registerConnectionStatusListener(
+ any(HearingAidDeviceManager.ConnectionStatusListener.class), any(
+ Executor.class));
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
index 157cccc..241da5f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
@@ -41,6 +41,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.utils.TestUtils;
@@ -68,6 +69,8 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
private final SecureSettings mSecureSettings = TestUtils.mockSecureSettings();
private RecyclerView mStubListView;
private MenuView mMenuView;
@@ -84,7 +87,7 @@
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
stubWindowManager);
final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
- mSecureSettings);
+ mSecureSettings, mHearingAidDeviceManager);
final int halfScreenHeight =
stubWindowManager.getCurrentWindowMetrics().getBounds().height() / 2;
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
index 46f076a..fbd8a71 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
@@ -41,6 +41,7 @@
import androidx.test.filters.SmallTest;
import com.android.internal.accessibility.dialog.AccessibilityTarget;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.MotionEventHelper;
@@ -82,13 +83,15 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
@Before
public void setUp() throws Exception {
final WindowManager windowManager = mContext.getSystemService(WindowManager.class);
final SecureSettings secureSettings = TestUtils.mockSecureSettings();
final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
- secureSettings);
+ secureSettings, mHearingAidDeviceManager);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
windowManager);
mStubMenuView = new MenuView(mContext, stubMenuViewModel, stubMenuViewAppearance,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
index fcdeff9..4f04310 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerControllerTest.java
@@ -41,6 +41,7 @@
import com.android.app.viewcapture.ViewCapture;
import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.util.settings.SecureSettings;
@@ -68,6 +69,8 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
@Mock
private SecureSettings mSecureSettings;
@@ -93,7 +96,7 @@
when(mWindowMetrics.getWindowInsets()).thenReturn(stubDisplayInsets());
mMenuViewLayerController = new MenuViewLayerController(mContext, mWindowManager,
viewCaptureAwareWm, mAccessibilityManager, mSecureSettings,
- mock(NavigationModeController.class));
+ mock(NavigationModeController.class), mHearingAidDeviceManager);
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
index ee8ce17..cb7c205 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
@@ -37,6 +37,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.Prefs;
import com.android.systemui.SysuiTestCase;
@@ -70,6 +71,8 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
private SysuiTestableContext mSpyContext;
@@ -90,7 +93,7 @@
final SecureSettings secureSettings = TestUtils.mockSecureSettings();
final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
- secureSettings);
+ secureSettings, mHearingAidDeviceManager);
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
mStubMenuViewAppearance = new MenuViewAppearance(mSpyContext, stubWindowManager);
mMenuView = spy(new MenuView(mSpyContext, stubMenuViewModel, mStubMenuViewAppearance,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepositoryImplTest.kt
index f68a1b5..eae5728 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepositoryImplTest.kt
@@ -16,7 +16,7 @@
package com.android.systemui.display.data.repository
-import android.content.testableContext
+import android.content.Context
import android.platform.test.annotations.EnableFlags
import android.view.Display
import android.view.layoutInflater
@@ -24,6 +24,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.SysuiTestableContext
import com.android.systemui.display.shared.model.DisplayWindowProperties
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
@@ -36,8 +37,12 @@
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mockito.doAnswer
+import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.whenever
@EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
@RunWith(AndroidJUnit4::class)
@@ -48,7 +53,8 @@
private val fakeDisplayRepository = kosmos.displayRepository
private val testScope = kosmos.testScope
- private val applicationContext = kosmos.testableContext
+ private val applicationContext = spy(context)
+
private val applicationWindowManager = kosmos.mockWindowManager
private val applicationLayoutInflater = kosmos.layoutInflater
@@ -64,6 +70,22 @@
}
@Before
+ fun setUpContext() {
+ doAnswer { createContextForDisplay(it.arguments[0] as Display) }
+ .whenever(applicationContext)
+ .createWindowContext(any(), any(), any())
+ }
+
+ private fun createContextForDisplay(display: Display): Context {
+ if (display.displayId == BEING_REMOVED_DISPLAY_ID) {
+ // Simulate what happens when a display is being removed.
+ // Return a context with the same display id as the original context.
+ return mContext
+ }
+ return SysuiTestableContext(mContext).also { it.display = display }
+ }
+
+ @Before
fun start() {
repo.start()
}
@@ -72,6 +94,7 @@
fun addDisplays() = runBlocking {
fakeDisplayRepository.addDisplay(createDisplay(DEFAULT_DISPLAY_ID))
fakeDisplayRepository.addDisplay(createDisplay(NON_DEFAULT_DISPLAY_ID))
+ fakeDisplayRepository.addDisplay(createDisplay(BEING_REMOVED_DISPLAY_ID))
}
@Test
@@ -94,7 +117,7 @@
@Test
fun get_nonDefaultDisplayId_returnsNewStatusBarContext() =
testScope.runTest {
- val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)
+ val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)!!
assertThat(displayContext.context).isNotSameInstanceAs(applicationContext)
}
@@ -102,7 +125,7 @@
@Test
fun get_nonDefaultDisplayId_returnsNewWindowManager() =
testScope.runTest {
- val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)
+ val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)!!
assertThat(displayContext.windowManager).isNotSameInstanceAs(applicationWindowManager)
}
@@ -110,7 +133,7 @@
@Test
fun get_nonDefaultDisplayId_returnsNewLayoutInflater() =
testScope.runTest {
- val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)
+ val displayContext = repo.get(NON_DEFAULT_DISPLAY_ID, WINDOW_TYPE_FOO)!!
assertThat(displayContext.layoutInflater).isNotSameInstanceAs(applicationLayoutInflater)
}
@@ -154,17 +177,26 @@
.isNotSameInstanceAs(displayContext)
}
- @Test(expected = IllegalArgumentException::class)
- fun get_nonExistingDisplayId_throws() =
- testScope.runTest { repo.get(NON_EXISTING_DISPLAY_ID, WINDOW_TYPE_FOO) }
+ @Test
+ fun get_nonExistingDisplayId_returnsNull() =
+ testScope.runTest {
+ assertThat(repo.get(NON_EXISTING_DISPLAY_ID, WINDOW_TYPE_FOO)).isNull()
+ }
+
+ @Test
+ fun get_displayBeingRemoved_returnsNull() =
+ testScope.runTest {
+ assertThat(repo.get(BEING_REMOVED_DISPLAY_ID, WINDOW_TYPE_FOO)).isNull()
+ }
private fun createDisplay(displayId: Int) =
- mock<Display> { on { getDisplayId() } doReturn displayId }
+ mock<Display> { on { getDisplayId() } doReturn (displayId) }
companion object {
private const val DEFAULT_DISPLAY_ID = Display.DEFAULT_DISPLAY
private const val NON_DEFAULT_DISPLAY_ID = DEFAULT_DISPLAY_ID + 1
private const val NON_EXISTING_DISPLAY_ID = DEFAULT_DISPLAY_ID + 2
+ private const val BEING_REMOVED_DISPLAY_ID = DEFAULT_DISPLAY_ID + 4
private const val WINDOW_TYPE_FOO = 123
private const val WINDOW_TYPE_BAR = 321
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayStoreImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayStoreImplTest.kt
index 6a0781b..73957eb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayStoreImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayStoreImplTest.kt
@@ -80,9 +80,9 @@
assertThat(store.forDisplay(NON_DEFAULT_DISPLAY_ID)).isNotSameInstanceAs(instance)
}
- @Test(expected = IllegalArgumentException::class)
- fun forDisplay_nonExistingDisplayId_throws() =
- testScope.runTest { store.forDisplay(NON_EXISTING_DISPLAY_ID) }
+ @Test
+ fun forDisplay_nonExistingDisplayId_returnsNull() =
+ testScope.runTest { assertThat(store.forDisplay(NON_EXISTING_DISPLAY_ID)).isNull() }
@Test
fun forDisplay_afterDisplayRemoved_onDisplayRemovalActionInvoked() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
index 67a4332..7c694b4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
@@ -23,7 +23,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.communal.ui.view.layout.sections.CommunalTutorialIndicatorSection
import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.view.KeyguardRootView
@@ -71,7 +70,6 @@
@Mock private lateinit var splitShadeGuidelines: SplitShadeGuidelines
@Mock private lateinit var aodNotificationIconsSection: AodNotificationIconsSection
@Mock private lateinit var aodBurnInSection: AodBurnInSection
- @Mock private lateinit var communalTutorialIndicatorSection: CommunalTutorialIndicatorSection
@Mock private lateinit var clockSection: ClockSection
@Mock private lateinit var smartspaceSection: SmartspaceSection
@Mock private lateinit var keyguardSliceViewSection: KeyguardSliceViewSection
@@ -94,7 +92,6 @@
defaultNSSLSection,
aodNotificationIconsSection,
aodBurnInSection,
- communalTutorialIndicatorSection,
clockSection,
smartspaceSection,
keyguardSliceViewSection,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt
new file mode 100644
index 0000000..88fd333
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectValues
+import com.android.systemui.flags.DisableSceneContainer
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@ExperimentalCoroutinesApi
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class GlanceableHubToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
+ private val underTest by lazy { kosmos.glanceableHubToPrimaryBouncerTransitionViewModel }
+
+ @Test
+ @DisableSceneContainer
+ fun blurBecomesMaxValueImmediately() =
+ testScope.runTest {
+ val values by collectValues(underTest.windowBlurRadius)
+
+ kosmos.bouncerWindowBlurTestUtil.assertTransitionToBlurRadius(
+ transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f),
+ startValue = kosmos.blurConfig.maxBlurRadiusPx,
+ endValue = kosmos.blurConfig.maxBlurRadiusPx,
+ actualValuesProvider = { values },
+ transitionFactory = { step, transitionState ->
+ TransitionStep(
+ from = KeyguardState.GLANCEABLE_HUB,
+ to = KeyguardState.PRIMARY_BOUNCER,
+ value = step,
+ transitionState = transitionState,
+ ownerName = "GlanceableHubToPrimaryBouncerTransitionViewModelTest",
+ )
+ },
+ checkInterpolatedValues = false,
+ )
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt
new file mode 100644
index 0000000..e11e307
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectValues
+import com.android.systemui.flags.DisableSceneContainer
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@ExperimentalCoroutinesApi
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class OccludedToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
+ private val underTest by lazy { kosmos.occludedToPrimaryBouncerTransitionViewModel }
+
+ @Test
+ @DisableSceneContainer
+ fun blurBecomesMaxValueImmediately() =
+ testScope.runTest {
+ val values by collectValues(underTest.windowBlurRadius)
+
+ kosmos.bouncerWindowBlurTestUtil.assertTransitionToBlurRadius(
+ transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f),
+ startValue = kosmos.blurConfig.maxBlurRadiusPx,
+ endValue = kosmos.blurConfig.maxBlurRadiusPx,
+ actualValuesProvider = { values },
+ transitionFactory = { step, transitionState ->
+ TransitionStep(
+ from = KeyguardState.OCCLUDED,
+ to = KeyguardState.PRIMARY_BOUNCER,
+ value = step,
+ transitionState = transitionState,
+ ownerName = "OccludedToPrimaryBouncerTransitionViewModelTest",
+ )
+ },
+ checkInterpolatedValues = false,
+ )
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt
new file mode 100644
index 0000000..8a2fc56
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectValues
+import com.android.systemui.flags.DisableSceneContainer
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@ExperimentalCoroutinesApi
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class PrimaryBouncerToOccludedTransitionViewModelTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
+ private val underTest by lazy { kosmos.primaryBouncerToOccludedTransitionViewModel }
+
+ @Test
+ @DisableSceneContainer
+ fun blurBecomesMaxValueImmediately() =
+ testScope.runTest {
+ val values by collectValues(underTest.windowBlurRadius)
+
+ kosmos.bouncerWindowBlurTestUtil.assertTransitionToBlurRadius(
+ transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f),
+ startValue = kosmos.blurConfig.minBlurRadiusPx,
+ endValue = kosmos.blurConfig.minBlurRadiusPx,
+ actualValuesProvider = { values },
+ transitionFactory = { step, transitionState ->
+ TransitionStep(
+ from = KeyguardState.PRIMARY_BOUNCER,
+ to = KeyguardState.OCCLUDED,
+ value = step,
+ transitionState = transitionState,
+ ownerName = "PrimaryBouncerToOccludedTransitionViewModelTest",
+ )
+ },
+ checkInterpolatedValues = false,
+ )
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt
new file mode 100644
index 0000000..765c02a
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.shared
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.ActivityInfo
+import android.content.pm.PackageManager
+import android.content.pm.ResolveInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.android.systemui.user.data.repository.fakeUserRepository
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.any
+import org.mockito.Mockito.anyInt
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+import org.mockito.kotlin.whenever
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class QSSettingsPackageRepositoryTest : SysuiTestCase() {
+
+ @get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
+
+ @Mock private lateinit var context: Context
+ @Mock private lateinit var packageManager: PackageManager
+ @Mock private lateinit var resolveInfo: ResolveInfo
+ @Mock private lateinit var activityInfo: ActivityInfo
+
+ private val kosmos = testKosmos()
+ private val scope = kosmos.testScope
+ private val userRepository = kosmos.fakeUserRepository
+
+ private lateinit var underTest: QSSettingsPackageRepository
+
+ @Before
+ fun setUp() {
+ whenever(context.createContextAsUser(any(), anyInt())).thenReturn(context)
+ whenever(context.packageManager).thenReturn(packageManager)
+ whenever(packageManager.queryIntentActivities(any(Intent::class.java), anyInt()))
+ .thenReturn(listOf(resolveInfo))
+ resolveInfo.activityInfo = activityInfo
+
+ underTest = QSSettingsPackageRepository(context, scope, userRepository)
+ }
+
+ @Test
+ fun getSettingsPackageName_noInit_returnsDefaultPackageName() {
+ assertThat(underTest.getSettingsPackageName()).isEqualTo(DEFAULT_SETTINGS_PACKAGE_NAME)
+ }
+
+ @Test
+ fun getSettingsPackageName_repositoryWithCustomPackage_returnsCustomPackageName() {
+ scope.runTest {
+ activityInfo.packageName = CUSTOM_SETTINGS_PACKAGE_NAME
+
+ underTest.init()
+ runCurrent()
+
+ assertThat(underTest.getSettingsPackageName()).isEqualTo(CUSTOM_SETTINGS_PACKAGE_NAME)
+ }
+ }
+
+ @Test
+ fun getSettingsPackageName_noMatchingActivity_returnsDefaultPackageName() {
+ scope.runTest {
+ whenever(packageManager.queryIntentActivities(any(Intent::class.java), anyInt()))
+ .thenReturn(emptyList())
+
+ underTest.init()
+ runCurrent()
+
+ assertThat(underTest.getSettingsPackageName()).isEqualTo(DEFAULT_SETTINGS_PACKAGE_NAME)
+ }
+ }
+
+ @Test
+ fun getSettingsPackageName_nullActivityInfo_returnsDefaultPackageName() {
+ scope.runTest {
+ resolveInfo.activityInfo = null
+
+ underTest.init()
+ runCurrent()
+
+ assertThat(underTest.getSettingsPackageName()).isEqualTo(DEFAULT_SETTINGS_PACKAGE_NAME)
+ }
+ }
+
+ companion object {
+ private const val DEFAULT_SETTINGS_PACKAGE_NAME = "com.android.settings"
+ private const val CUSTOM_SETTINGS_PACKAGE_NAME = "com.android.test.settings"
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
index 028beb5..e5e8d4a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorCorrectionTileTest.java
@@ -39,6 +39,7 @@
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.qs.shared.QSSettingsPackageRepository;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.FakeSettings;
import com.android.systemui.util.settings.SecureSettings;
@@ -55,6 +56,7 @@
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
public class ColorCorrectionTileTest extends SysuiTestCase {
+ private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
@Mock
private QSHost mHost;
@@ -70,6 +72,8 @@
private QsEventLogger mUiEventLogger;
@Mock
private UserTracker mUserTracker;
+ @Mock
+ private QSSettingsPackageRepository mQSSettingsPackageRepository;
private TestableLooper mTestableLooper;
private SecureSettings mSecureSettings;
@@ -83,6 +87,8 @@
mTestableLooper = TestableLooper.get(this);
when(mHost.getContext()).thenReturn(mContext);
+ when(mQSSettingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME);
mTile = new ColorCorrectionTile(
mHost,
@@ -95,7 +101,8 @@
mActivityStarter,
mQSLogger,
mUserTracker,
- mSecureSettings
+ mSecureSettings,
+ mQSSettingsPackageRepository
);
mTile.initialize();
@@ -119,5 +126,6 @@
anyInt(), any());
assertThat(IntentCaptor.getValue().getAction()).isEqualTo(
Settings.ACTION_COLOR_CORRECTION_SETTINGS);
+ assertThat(IntentCaptor.getValue().getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME);
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
index a58dd63..cbde998 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ColorInversionTileTest.java
@@ -45,6 +45,7 @@
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.flags.QsInCompose;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.qs.shared.QSSettingsPackageRepository;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
@@ -59,15 +60,16 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.util.List;
-
import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;
+import java.util.List;
+
@RunWith(ParameterizedAndroidJunit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
public class ColorInversionTileTest extends SysuiTestCase {
+ private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
private static final Integer COLOR_INVERSION_DISABLED = 0;
private static final Integer COLOR_INVERSION_ENABLED = 1;
@@ -90,6 +92,8 @@
private QsEventLogger mUiEventLogger;
@Mock
private UserTracker mUserTracker;
+ @Mock
+ private QSSettingsPackageRepository mQSSettingsPackageRepository;
private TestableLooper mTestableLooper;
private SecureSettings mSecureSettings;
@@ -108,6 +112,8 @@
mTestableLooper = TestableLooper.get(this);
when(mHost.getContext()).thenReturn(mContext);
+ when(mQSSettingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME);
mTile = new ColorInversionTile(
mHost,
@@ -120,7 +126,8 @@
mActivityStarter,
mQSLogger,
mUserTracker,
- mSecureSettings
+ mSecureSettings,
+ mQSSettingsPackageRepository
);
mTile.initialize();
@@ -144,6 +151,7 @@
anyInt(), any());
assertThat(IntentCaptor.getValue().getAction()).isEqualTo(
Settings.ACTION_COLOR_INVERSION_SETTINGS);
+ assertThat(IntentCaptor.getValue().getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME);
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
index c854920..ae4da9d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt
@@ -32,11 +32,10 @@
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.logging.QSLogger
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.concurrency.FakeExecutor
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import org.junit.After
@@ -49,8 +48,10 @@
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@@ -68,21 +69,24 @@
@Mock private lateinit var dialog: SystemUIDialog
@Mock private lateinit var expandable: Expandable
@Mock private lateinit var controller: DialogTransitionAnimator.Controller
+ @Mock private lateinit var settingsPackageRepository: QSSettingsPackageRepository
+
+ @Captor private lateinit var argumentCaptor: ArgumentCaptor<Runnable>
private lateinit var testableLooper: TestableLooper
private lateinit var systemClock: FakeSystemClock
private lateinit var backgroundDelayableExecutor: FakeExecutor
private lateinit var fontScalingTile: FontScalingTile
- @Captor private lateinit var argumentCaptor: ArgumentCaptor<Runnable>
-
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
testableLooper = TestableLooper.get(this)
- `when`(qsHost.getContext()).thenReturn(mContext)
- `when`(fontScalingDialogDelegate.createDialog()).thenReturn(dialog)
- `when`(expandable.dialogTransitionController(any())).thenReturn(controller)
+ whenever(qsHost.getContext()).thenReturn(mContext)
+ whenever(fontScalingDialogDelegate.createDialog()).thenReturn(dialog)
+ whenever(expandable.dialogTransitionController(any())).thenReturn(controller)
+ whenever(settingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME)
systemClock = FakeSystemClock()
backgroundDelayableExecutor = FakeExecutor(systemClock)
@@ -100,6 +104,7 @@
keyguardStateController,
mDialogTransitionAnimator,
{ fontScalingDialogDelegate },
+ settingsPackageRepository,
)
fontScalingTile.initialize()
testableLooper.processAllMessages()
@@ -120,7 +125,7 @@
@Test
fun clickTile_screenUnlocked_showDialogAnimationFromView() {
- `when`(keyguardStateController.isShowing).thenReturn(false)
+ whenever(keyguardStateController.isShowing).thenReturn(false)
fontScalingTile.click(expandable)
testableLooper.processAllMessages()
@@ -130,7 +135,7 @@
eq(null),
eq(true),
eq(true),
- eq(false)
+ eq(false),
)
argumentCaptor.value.run()
verify(mDialogTransitionAnimator).show(any(), any(), anyBoolean())
@@ -138,7 +143,7 @@
@Test
fun clickTile_onLockScreen_neverShowDialogAnimationFromView() {
- `when`(keyguardStateController.isShowing).thenReturn(true)
+ whenever(keyguardStateController.isShowing).thenReturn(true)
fontScalingTile.click(expandable)
testableLooper.processAllMessages()
@@ -148,7 +153,7 @@
eq(null),
eq(true),
eq(true),
- eq(false)
+ eq(false),
)
argumentCaptor.value.run()
verify(mDialogTransitionAnimator, never()).show(any(), any(), anyBoolean())
@@ -159,5 +164,10 @@
val intent: Intent? = fontScalingTile.getLongClickIntent()
assertThat(intent!!.action).isEqualTo(Settings.ACTION_TEXT_READING_SETTINGS)
+ assertThat(intent.getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME)
+ }
+
+ companion object {
+ private const val SETTINGS_PACKAGE_NAME = "com.android.settings"
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
index 5c6657b..cfbc812 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
@@ -1,6 +1,6 @@
package com.android.systemui.qs.tiles.dialog;
-import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT;
+import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.MAX_WIFI_ENTRY_COUNT;
import static com.google.common.truth.Truth.assertThat;
@@ -63,7 +63,7 @@
@Mock
private WifiEntry mWifiEntry;
@Mock
- private InternetDialogController mInternetDialogController;
+ private InternetDetailsContentController mInternetDetailsContentController;
@Mock
private Drawable mWifiDrawable;
@Mock
@@ -86,7 +86,7 @@
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
- mInternetAdapter = new InternetAdapter(mInternetDialogController, mScope);
+ mInternetAdapter = new InternetAdapter(mInternetDetailsContentController, mScope);
mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0);
mInternetAdapter.setWifiEntries(Arrays.asList(mWifiEntry), 1 /* wifiEntriesCount */);
}
@@ -124,7 +124,7 @@
@Test
public void onBindViewHolder_getWifiDrawableNull_noCrash() {
- when(mInternetDialogController.getWifiDrawable(any())).thenReturn(null);
+ when(mInternetDetailsContentController.getWifiDrawable(any())).thenReturn(null);
mInternetAdapter.onBindViewHolder(mViewHolder, 0);
@@ -133,7 +133,7 @@
@Test
public void onBindViewHolder_getWifiDrawableNotNull_setWifiIconDrawable() {
- when(mInternetDialogController.getWifiDrawable(any())).thenReturn(mWifiDrawable);
+ when(mInternetDetailsContentController.getWifiDrawable(any())).thenReturn(mWifiDrawable);
mInternetAdapter.onBindViewHolder(mViewHolder, 0);
@@ -232,7 +232,7 @@
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
- verify(mInternetDialogController).startActivityForDialog(any());
+ verify(mInternetDetailsContentController).startActivityForDialog(any());
verify(mSpyContext, never()).startActivity(any());
}
@@ -242,7 +242,7 @@
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
- verify(mInternetDialogController).connect(mWifiEntry);
+ verify(mInternetDetailsContentController).connect(mWifiEntry);
}
@Test
@@ -252,7 +252,7 @@
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
- verify(mInternetDialogController).launchWifiDetailsSetting(anyString(), any());
+ verify(mInternetDetailsContentController).launchWifiDetailsSetting(anyString(), any());
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileUserActionInteractorTest.kt
index 3bc53b27..0cf3734 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileUserActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileUserActionInteractorTest.kt
@@ -23,29 +23,45 @@
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.data.repository.FakeColorCorrectionRepository
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
import com.android.systemui.qs.tiles.impl.colorcorrection.domain.model.ColorCorrectionTileModel
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+import org.mockito.kotlin.whenever
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
class ColorCorrectionTileUserActionInteractorTest : SysuiTestCase() {
+ @get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
+
+ @Mock private lateinit var settingsPackageRepository: QSSettingsPackageRepository
+
private val testUser = UserHandle.CURRENT
private val repository = FakeColorCorrectionRepository()
private val inputHandler = FakeQSTileIntentUserInputHandler()
- private val underTest =
- ColorCorrectionUserActionInteractor(
- repository,
- inputHandler,
- )
+ private lateinit var underTest: ColorCorrectionUserActionInteractor
+
+ @Before
+ fun setUp() {
+ whenever(settingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME)
+
+ underTest =
+ ColorCorrectionUserActionInteractor(repository, inputHandler, settingsPackageRepository)
+ }
@Test
fun handleClickWhenEnabled() = runTest {
@@ -86,6 +102,11 @@
QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
assertThat(it.intent.action).isEqualTo(Settings.ACTION_COLOR_CORRECTION_SETTINGS)
+ assertThat(it.intent.getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME)
}
}
+
+ companion object {
+ private const val SETTINGS_PACKAGE_NAME = "com.android.settings"
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingUserActionInteractorTest.kt
index d309554..9bd4895 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingUserActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingUserActionInteractorTest.kt
@@ -29,6 +29,7 @@
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.intentInputs
import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
@@ -36,11 +37,7 @@
import com.android.systemui.qs.tiles.impl.fontscaling.domain.model.FontScalingTileModel
import com.android.systemui.statusbar.phone.FakeKeyguardStateController
import com.android.systemui.statusbar.phone.SystemUIDialog
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.eq
-import com.android.systemui.util.mockito.mock
-import com.android.systemui.util.mockito.whenever
-import com.google.common.truth.Truth
+import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -51,15 +48,14 @@
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
class FontScalingUserActionInteractorTest : SysuiTestCase() {
- private val kosmos = Kosmos()
- private val qsTileIntentUserActionHandler = FakeQSTileIntentUserInputHandler()
- private val keyguardStateController = FakeKeyguardStateController()
-
- private lateinit var underTest: FontScalingTileUserActionInteractor
@Mock private lateinit var fontScalingDialogDelegate: FontScalingDialogDelegate
@Mock private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator
@@ -67,35 +63,47 @@
@Mock private lateinit var activityStarter: ActivityStarter
@Mock private lateinit var expandable: Expandable
@Mock private lateinit var controller: DialogTransitionAnimator.Controller
+ @Mock private lateinit var settingsPackageRepository: QSSettingsPackageRepository
@Captor private lateinit var argumentCaptor: ArgumentCaptor<Runnable>
+ private val kosmos = Kosmos()
+ private val scope = kosmos.testScope
+ private val qsTileIntentUserActionHandler = FakeQSTileIntentUserInputHandler()
+ private val keyguardStateController = FakeKeyguardStateController()
+
+ private lateinit var underTest: FontScalingTileUserActionInteractor
+
@Before
fun setup() {
activityStarter = mock<ActivityStarter>()
mDialogTransitionAnimator = mock<DialogTransitionAnimator>()
dialog = mock<SystemUIDialog>()
- fontScalingDialogDelegate =
- mock<FontScalingDialogDelegate> { whenever(createDialog()).thenReturn(dialog) }
+ fontScalingDialogDelegate = mock<FontScalingDialogDelegate>()
+ whenever(fontScalingDialogDelegate.createDialog()).thenReturn(dialog)
controller = mock<DialogTransitionAnimator.Controller>()
- expandable =
- mock<Expandable> { whenever(dialogTransitionController(any())).thenReturn(controller) }
+ expandable = mock<Expandable>()
+ whenever(expandable.dialogTransitionController(any())).thenReturn(controller)
+ settingsPackageRepository = mock<QSSettingsPackageRepository>()
+ whenever(settingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME)
argumentCaptor = ArgumentCaptor.forClass(Runnable::class.java)
underTest =
FontScalingTileUserActionInteractor(
- kosmos.testScope.coroutineContext,
+ scope.coroutineContext,
qsTileIntentUserActionHandler,
{ fontScalingDialogDelegate },
keyguardStateController,
mDialogTransitionAnimator,
- activityStarter
+ activityStarter,
+ settingsPackageRepository,
)
}
@Test
fun clickTile_screenUnlocked_showDialogAnimationFromView() =
- kosmos.testScope.runTest {
+ scope.runTest {
keyguardStateController.isShowing = false
underTest.handleInput(click(FontScalingTileModel, expandable = expandable))
@@ -106,7 +114,7 @@
eq(null),
eq(true),
eq(true),
- eq(false)
+ eq(false),
)
argumentCaptor.value.run()
verify(mDialogTransitionAnimator).show(any(), any(), anyBoolean())
@@ -114,7 +122,7 @@
@Test
fun clickTile_onLockScreen_neverShowDialogAnimationFromView_butShowsDialog() =
- kosmos.testScope.runTest {
+ scope.runTest {
keyguardStateController.isShowing = true
underTest.handleInput(click(FontScalingTileModel, expandable = expandable))
@@ -125,7 +133,7 @@
eq(null),
eq(true),
eq(true),
- eq(false)
+ eq(false),
)
argumentCaptor.value.run()
verify(mDialogTransitionAnimator, never()).show(any(), any(), anyBoolean())
@@ -134,17 +142,20 @@
@Test
fun handleLongClick() =
- kosmos.testScope.runTest {
+ scope.runTest {
underTest.handleInput(QSTileInputTestKtx.longClick(FontScalingTileModel))
- Truth.assertThat(qsTileIntentUserActionHandler.handledInputs).hasSize(1)
- val intentInput = qsTileIntentUserActionHandler.intentInputs.last()
- val actualIntentAction = intentInput.intent.action
- val expectedIntentAction = Settings.ACTION_TEXT_READING_SETTINGS
- Truth.assertThat(actualIntentAction).isEqualTo(expectedIntentAction)
+ assertThat(qsTileIntentUserActionHandler.handledInputs).hasSize(1)
+ val it = qsTileIntentUserActionHandler.intentInputs.last()
+ assertThat(it.intent.action).isEqualTo(Settings.ACTION_TEXT_READING_SETTINGS)
+ assertThat(it.intent.getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME)
}
private class FontScalingTileTestView(context: Context) : View(context), LaunchableView {
override fun setShouldBlockVisibilityChanges(block: Boolean) {}
}
+
+ companion object {
+ private const val SETTINGS_PACKAGE_NAME = "com.android.settings"
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt
index f574f79..3f77b86 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt
@@ -23,29 +23,45 @@
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.data.repository.FakeColorInversionRepository
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+import org.mockito.kotlin.whenever
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
class ColorInversionUserActionInteractorTest : SysuiTestCase() {
+ @get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
+
+ @Mock private lateinit var settingsPackageRepository: QSSettingsPackageRepository
+
private val testUser = UserHandle.CURRENT
private val repository = FakeColorInversionRepository()
private val inputHandler = FakeQSTileIntentUserInputHandler()
- private val underTest =
- ColorInversionUserActionInteractor(
- repository,
- inputHandler,
- )
+ private lateinit var underTest: ColorInversionUserActionInteractor
+
+ @Before
+ fun setUp() {
+ whenever(settingsPackageRepository.getSettingsPackageName())
+ .thenReturn(SETTINGS_PACKAGE_NAME)
+
+ underTest =
+ ColorInversionUserActionInteractor(repository, inputHandler, settingsPackageRepository)
+ }
@Test
fun handleClickWhenEnabled() = runTest {
@@ -86,6 +102,11 @@
QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
assertThat(it.intent.action).isEqualTo(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ assertThat(it.intent.getPackage()).isEqualTo(SETTINGS_PACKAGE_NAME)
}
}
+
+ companion object {
+ private const val SETTINGS_PACKAGE_NAME = "com.android.settings"
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerStateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerStateTest.kt
new file mode 100644
index 0000000..e68045f
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerStateTest.kt
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.chips.ui.compose
+
+import android.text.format.DateUtils.formatElapsedTime
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.cancelAndJoin
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.advanceTimeBy
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ChronometerStateTest : SysuiTestCase() {
+
+ private lateinit var mockTimeSource: MutableTimeSource
+
+ @Before
+ fun setup() {
+ mockTimeSource = MutableTimeSource()
+ }
+
+ @Test
+ fun initialText_isCorrect() = runTest {
+ val state = ChronometerState(mockTimeSource, 0L)
+ assertThat(state.currentTimeText).isEqualTo(formatElapsedTime(0))
+ }
+
+ @Test
+ fun textUpdates_withTime() = runTest {
+ val startTime = 1000L
+ val state = ChronometerState(mockTimeSource, startTime)
+ val job = launch { state.run() }
+
+ val elapsedTime = 5000L
+ mockTimeSource.time = startTime + elapsedTime
+ advanceTimeBy(elapsedTime)
+ assertThat(state.currentTimeText).isEqualTo(formatElapsedTime(elapsedTime / 1000))
+
+ job.cancelAndJoin()
+ }
+
+ @Test
+ fun textUpdates_toLargerValue() = runTest {
+ val startTime = 1000L
+ val state = ChronometerState(mockTimeSource, startTime)
+ val job = launch { state.run() }
+
+ val elapsedTime = 15000L
+ mockTimeSource.time = startTime + elapsedTime
+ advanceTimeBy(elapsedTime)
+ assertThat(state.currentTimeText).isEqualTo(formatElapsedTime(elapsedTime / 1000))
+
+ job.cancelAndJoin()
+ }
+
+ @Test
+ fun textUpdates_afterResettingBase() = runTest {
+ val initialElapsedTime = 30000L
+ val startTime = 50000L
+ val state = ChronometerState(mockTimeSource, startTime)
+ val job = launch { state.run() }
+
+ mockTimeSource.time = startTime + initialElapsedTime
+ advanceTimeBy(initialElapsedTime)
+ assertThat(state.currentTimeText).isEqualTo(formatElapsedTime(initialElapsedTime / 1000))
+
+ job.cancelAndJoin()
+
+ val newElapsedTime = 5000L
+ val newStartTime = 100000L
+ val newState = ChronometerState(mockTimeSource, newStartTime)
+ val newJob = launch { newState.run() }
+
+ mockTimeSource.time = newStartTime + newElapsedTime
+ advanceTimeBy(newElapsedTime)
+ assertThat(newState.currentTimeText).isEqualTo(formatElapsedTime(newElapsedTime / 1000))
+
+ newJob.cancelAndJoin()
+ }
+}
+
+/** A fake implementation of [TimeSource] that allows the caller to set the current time */
+class MutableTimeSource(var time: Long = 0L) : TimeSource {
+ override fun getCurrentTime(): Long {
+ return time
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarInitializerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarInitializerTest.kt
index 009b33b..3515c56 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarInitializerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarInitializerTest.kt
@@ -26,10 +26,12 @@
import com.android.systemui.SysuiTestCase
import com.android.systemui.fragments.FragmentHostManager
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
+import com.android.systemui.plugins.fakeDarkIconDispatcher
import com.android.systemui.statusbar.data.repository.fakeStatusBarModePerDisplayRepository
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment
import com.android.systemui.statusbar.phone.fragment.dagger.HomeStatusBarComponent
import com.android.systemui.statusbar.pipeline.shared.ui.composable.StatusBarRootFactory
+import com.android.systemui.statusbar.policy.statusBarConfigurationController
import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
import com.android.systemui.testKosmos
@@ -77,6 +79,8 @@
componentFactory = mock(HomeStatusBarComponent.Factory::class.java),
creationListeners = setOf(),
statusBarModePerDisplayRepository = statusBarModePerDisplayRepository,
+ darkIconDispatcher = kosmos.fakeDarkIconDispatcher,
+ statusBarConfigurationController = kosmos.statusBarConfigurationController,
)
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/LightBarControllerStoreImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/LightBarControllerStoreImplTest.kt
index 18eef33..884c35c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/LightBarControllerStoreImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/LightBarControllerStoreImplTest.kt
@@ -51,7 +51,7 @@
@Test
fun forDisplay_startsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance).start()
}
@@ -59,7 +59,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -67,7 +67,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayDarkIconDispatcherStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayDarkIconDispatcherStoreTest.kt
index a2c3c66..f37648a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayDarkIconDispatcherStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayDarkIconDispatcherStoreTest.kt
@@ -56,7 +56,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -64,7 +64,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarContentInsetsProviderStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarContentInsetsProviderStoreTest.kt
index 4a26fdf..e0a1f27 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarContentInsetsProviderStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarContentInsetsProviderStoreTest.kt
@@ -51,7 +51,7 @@
@Test
fun forDisplay_startsInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance).start()
}
@@ -59,7 +59,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -67,7 +67,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarModeRepositoryStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarModeRepositoryStoreTest.kt
index a9920ec5..11fd902 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarModeRepositoryStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/MultiDisplayStatusBarModeRepositoryStoreTest.kt
@@ -53,7 +53,7 @@
@Test
fun forDisplay_startsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance).start()
}
@@ -61,7 +61,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStoreImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStoreImplTest.kt
index e65c04c..3cc592c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStoreImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStoreImplTest.kt
@@ -56,7 +56,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -64,7 +64,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
index d38fb50..5f154ac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
@@ -48,7 +48,7 @@
import com.android.systemui.statusbar.notification.domain.interactor.lockScreenShowOnlyUnseenNotificationsSetting
import com.android.systemui.statusbar.notification.domain.interactor.seenNotificationsInteractor
import com.android.systemui.statusbar.notification.headsup.OnHeadsUpChangedListener
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.FakeSettings
@@ -625,7 +625,7 @@
val keyguardCoordinator =
OriginalUnseenKeyguardCoordinator(
dumpManager = kosmos.dumpManager,
- headsUpManager = kosmos.headsUpManager,
+ headsUpManager = kosmos.mockHeadsUpManager,
keyguardRepository = kosmos.keyguardRepository,
keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor,
logger = KeyguardCoordinatorLogger(logcatLogBuffer()),
@@ -663,7 +663,8 @@
val onHeadsUpChangedListener: OnHeadsUpChangedListener
get() =
- argumentCaptor { verify(kosmos.headsUpManager).addListener(capture()) }.lastValue
+ argumentCaptor { verify(kosmos.mockHeadsUpManager).addListener(capture()) }
+ .lastValue
}
companion object {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModelTest.kt
index be20bc1..d86c6ef 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModelTest.kt
@@ -225,7 +225,7 @@
val displayId = 123
darkIconRepository.darkState(displayId).value =
SysuiDarkIconDispatcher.DarkChange(emptyList(), 0f, 0xAABBCC)
- val iconColors by collectLastValue(underTest.iconColors(displayId))
+ val iconColors by collectLastValue(underTest.iconColors(displayId)!!)
assertThat(iconColors).isNotNull()
assertThat(iconColors!!.tint).isEqualTo(0xAABBCC)
@@ -241,7 +241,7 @@
val displayId = 321
darkIconRepository.darkState(displayId).value =
SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)
- val iconColors by collectLastValue(underTest.iconColors(displayId))
+ val iconColors by collectLastValue(underTest.iconColors(displayId)!!)
val staticDrawableColor = iconColors?.staticDrawableColor(Rect(6, 6, 7, 7))
assertThat(staticDrawableColor).isEqualTo(DarkIconDispatcher.DEFAULT_ICON_TINT)
}
@@ -252,7 +252,7 @@
val displayId = 987
darkIconRepository.darkState(displayId).value =
SysuiDarkIconDispatcher.DarkChange(listOf(Rect(0, 0, 5, 5)), 0f, 0xAABBCC)
- val iconColors by collectLastValue(underTest.iconColors(displayId))
+ val iconColors by collectLastValue(underTest.iconColors(displayId)!!)
assertThat(iconColors!!.staticDrawableColor(Rect(6, 6, 7, 7)))
.isEqualTo(DarkIconDispatcher.DEFAULT_ICON_TINT)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
index 87abd0a..256da253 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
@@ -22,6 +22,7 @@
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.statusbar.notification.shared.NotificationMinimalism
+import com.android.systemui.statusbar.notification.shelf.NotificationShelfIconContainer
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.StackScrollAlgorithmState
import com.android.systemui.util.mockito.mock
import junit.framework.Assert.assertEquals
@@ -134,89 +135,208 @@
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testAlignment_splitShade_LTR() {
// Given: LTR mode, split shade
+ val width = 100
+ val actualWidth = 40
+ val iconContainerPadding = 16f
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ iconContainerPadding = iconContainerPadding,
+ )
// Then: shelf should align to end
assertTrue(shelfSpy.isAlignedToEnd)
assertTrue(shelfSpy.isAlignedToRight)
assertTrue(shelfSpy.mBackgroundNormal.alignToEnd)
- assertTrue(shelfSpy.mShelfIcons.alignToEnd)
+
+ // Then: icon container should align to end, right
+ val iconContainer = shelfSpy.shelfIcons as NotificationShelfIconContainer
+ assertTrue(iconContainer.alignToEnd)
+ assertTrue(iconContainer.isAlignedToRight)
+
+ // Then: icon container bounds are updated based on the widths and paddings
+ val actualPaddingStart = iconContainerPadding
+ val actualPaddingEnd = iconContainerPadding
+ val expectedLeftBound = width - actualWidth + actualPaddingStart
+ val expectedRightBound = width - actualPaddingEnd
+ assertEquals(expectedLeftBound, iconContainer.leftBound)
+ assertEquals(expectedRightBound, iconContainer.rightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testAlignment_nonSplitShade_LTR() {
// Given: LTR mode, non split shade
+ val width = 100
+ val actualWidth = 40
+ val iconContainerPadding = 16f
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ iconContainerPadding = iconContainerPadding,
+ )
// Then: shelf should not align to end
+ // left bound of icon container should be 16f (actualPaddingStart)
+ // right bound of icon container should be 24f (actualWidth - actualPaddingEnd)
assertFalse(shelfSpy.isAlignedToEnd)
assertFalse(shelfSpy.isAlignedToRight)
assertFalse(shelfSpy.mBackgroundNormal.alignToEnd)
- assertFalse(shelfSpy.mShelfIcons.alignToEnd)
+
+ // Then: icon container should align to start, left
+
+ val iconContainer = shelfSpy.shelfIcons as NotificationShelfIconContainer
+ assertFalse(iconContainer.alignToEnd)
+ assertFalse(iconContainer.isAlignedToRight)
+
+ // Then: icon container bounds are updated based on the widths and paddings
+ val actualPaddingStart = iconContainerPadding
+ val actualPaddingEnd = iconContainerPadding
+ val expectedLeftBound = actualPaddingStart
+ val expectedRightBound = actualWidth - actualPaddingEnd
+ assertEquals(expectedLeftBound, iconContainer.leftBound)
+ assertEquals(expectedRightBound, iconContainer.rightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testAlignment_splitShade_RTL() {
// Given: RTL mode, split shade
+ val width = 100
+ val actualWidth = 40
+ val iconContainerPadding = 16f
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ iconContainerPadding = iconContainerPadding,
+ )
// Then: shelf should align to end, but to left due to RTL
+ // left bound of icon container should be 16f (actualPaddingStart)
+ // right bound of icon container should be 24f (actualWidth - actualPaddingEnd)
assertTrue(shelfSpy.isAlignedToEnd)
assertFalse(shelfSpy.isAlignedToRight)
assertTrue(shelfSpy.mBackgroundNormal.alignToEnd)
- assertTrue(shelfSpy.mShelfIcons.alignToEnd)
+
+ // Then: icon container should align to end, left
+ val iconContainer = shelfSpy.shelfIcons as NotificationShelfIconContainer
+ assertTrue(iconContainer.alignToEnd)
+ assertFalse(iconContainer.isAlignedToRight)
+
+ // Then: icon container bounds are updated based on the widths and paddings
+ val actualPaddingStart = iconContainerPadding
+ val actualPaddingEnd = iconContainerPadding
+ val expectedLeftBound = actualPaddingStart
+ val expectedRightBound = actualWidth - actualPaddingEnd
+ assertEquals(expectedLeftBound, iconContainer.leftBound)
+ assertEquals(expectedRightBound, iconContainer.rightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testAlignment_nonSplitShade_RTL() {
// Given: RTL mode, non split shade
+ val width = 100
+ val actualWidth = 40
+ val iconContainerPadding = 16f
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ iconContainerPadding = iconContainerPadding,
+ )
// Then: shelf should not align to end, but to right due to RTL
assertFalse(shelfSpy.isAlignedToEnd)
assertTrue(shelfSpy.isAlignedToRight)
assertFalse(shelfSpy.mBackgroundNormal.alignToEnd)
- assertFalse(shelfSpy.mShelfIcons.alignToEnd)
+
+ // Then: icon container should align to start, right
+ val iconContainer = shelfSpy.shelfIcons as NotificationShelfIconContainer
+ assertFalse(iconContainer.alignToEnd)
+ assertTrue(iconContainer.isAlignedToRight)
+
+ // Then: icon container bounds are updated based on the widths and paddings
+ val actualPaddingStart = iconContainerPadding
+ val actualPaddingEnd = iconContainerPadding
+ val expectedLeftBound = width - actualWidth + actualPaddingStart
+ val expectedRightBound = width - actualPaddingEnd
+ assertEquals(expectedLeftBound, iconContainer.leftBound)
+ assertEquals(expectedRightBound, iconContainer.rightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfLeftBound_splitShade_LTR() {
// Given: LTR mode, split shade
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ )
// When: get the left bound of the shelf
val shelfLeftBound = shelfSpy.shelfLeftBound
// Then: should be equal to shelf's width - actual width
- assertEquals(60f, shelfLeftBound)
+ val expectedLeftBound = (width - actualWidth).toFloat()
+ assertEquals(expectedLeftBound, shelfLeftBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfRightBound_splitShade_LTR() {
// Given: LTR mode, split shade, width 100, actual width 40
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ )
// Then: the right bound of the shelf should be equal to shelf's width
- assertEquals(100f, shelfSpy.shelfRightBound)
+ val expectedRightBound = width.toFloat()
+ assertEquals(expectedRightBound, shelfSpy.shelfRightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfLeftBound_nonSplitShade_LTR() {
// Given: LTR mode, non split shade
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ )
// When: get the left bound of the shelf
val shelfLeftBound = shelfSpy.shelfLeftBound
@@ -229,19 +349,35 @@
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfRightBound_nonSplitShade_LTR() {
// Given: LTR mode, non split shade, width 100, actual width 40
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = false, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = false,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ )
// Then: the right bound of the shelf should be equal to shelf's actual width
- assertEquals(40f, shelfSpy.shelfRightBound)
+ assertEquals(actualWidth.toFloat(), shelfSpy.shelfRightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfLeftBound_splitShade_RTL() {
// Given: RTL mode, split shade
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ )
// When: get the left bound of the shelf
val shelfLeftBound = shelfSpy.shelfLeftBound
@@ -254,36 +390,61 @@
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfRightBound_splitShade_RTL() {
// Given: RTL mode, split shade, width 100, actual width 40
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = true, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = true,
+ width = width,
+ actualWidth = actualWidth,
+ )
// Then: the right bound of the shelf should be equal to shelf's actual width
- assertEquals(40f, shelfSpy.shelfRightBound)
+ assertEquals(actualWidth.toFloat(), shelfSpy.shelfRightBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfLeftBound_nonSplitShade_RTL() {
// Given: RTL mode, non split shade
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ )
// When: get the left bound of the shelf
val shelfLeftBound = shelfSpy.shelfLeftBound
// Then: should be equal to shelf's width - actual width
- assertEquals(60f, shelfLeftBound)
+ val expectedLeftBound = (width - actualWidth).toFloat()
+ assertEquals(expectedLeftBound, shelfLeftBound)
}
@Test
@EnableFlags(NotificationMinimalism.FLAG_NAME)
fun testGetShelfRightBound_nonSplitShade_RTL() {
// Given: LTR mode, non split shade, width 100, actual width 40
+ val width = 100
+ val actualWidth = 40
val shelfSpy =
- prepareShelfSpy(shelf, rtl = true, splitShade = false, width = 100, actualWidth = 40)
+ prepareShelfSpy(
+ shelf,
+ rtl = true,
+ splitShade = false,
+ width = width,
+ actualWidth = actualWidth,
+ )
// Then: the right bound of the shelf should be equal to shelf's width
- assertEquals(100f, shelfSpy.shelfRightBound)
+ assertEquals(width.toFloat(), shelfSpy.shelfRightBound)
}
private fun prepareShelfSpy(
@@ -292,12 +453,23 @@
splitShade: Boolean,
width: Int,
actualWidth: Int,
+ iconContainerPadding: Float? = null,
): NotificationShelf {
val shelfSpy = spy(shelf)
whenever(shelfSpy.isLayoutRtl).thenReturn(rtl)
whenever(ambientState.useSplitShade).thenReturn(splitShade)
- whenever(shelfSpy.width).thenReturn(width)
+ shelfSpy.layout(0, 0, width, 5)
+ shelfSpy.mShelfIcons.layout(0, 0, width, 5)
+ iconContainerPadding?.let {
+ shelfSpy.mShelfIcons.actualPaddingStart = it
+ shelfSpy.mShelfIcons.setActualPaddingEnd(it)
+ }
shelfSpy.setActualWidth(actualWidth.toFloat())
+
+ val iconContainerSpy = spy(shelf.mShelfIcons)
+ whenever(iconContainerSpy.isLayoutRtl).thenReturn(rtl)
+ whenever(shelfSpy.shelfIcons).thenReturn(iconContainerSpy)
+
return shelfSpy
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.kt
index f4c2545..216f51d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.kt
@@ -38,7 +38,7 @@
import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationIconInteractor
import com.android.systemui.statusbar.notification.domain.interactor.headsUpNotificationIconInteractor
import com.android.systemui.statusbar.notification.headsup.PinnedStatus
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation
@@ -75,7 +75,7 @@
private val keyguardStateController = kosmos.keyguardStateController
private val commandQueue = kosmos.commandQueue
private val notificationRoundnessManager = mock<NotificationRoundnessManager>()
- private var headsUpManager = kosmos.headsUpManager
+ private var headsUpManager = kosmos.mockHeadsUpManager
private lateinit var testHelper: NotificationTestHelper
private lateinit var row: ExpandableNotificationRow
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/MultiDisplayAutoHideControllerStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/MultiDisplayAutoHideControllerStoreTest.kt
index 90506a1..d163726 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/MultiDisplayAutoHideControllerStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/MultiDisplayAutoHideControllerStoreTest.kt
@@ -56,7 +56,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -64,7 +64,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt
index 2d9880a..659d91a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt
@@ -39,7 +39,7 @@
fun isLowProfile_lightsOutStatusBarMode_false() = runTest {
statusBarModeRepository.defaultDisplay.statusBarMode.value = StatusBarMode.LIGHTS_OUT
- val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID))
+ val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID)!!)
assertThat(actual).isTrue()
}
@@ -49,7 +49,7 @@
statusBarModeRepository.defaultDisplay.statusBarMode.value =
StatusBarMode.LIGHTS_OUT_TRANSPARENT
- val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID))
+ val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID)!!)
assertThat(actual).isTrue()
}
@@ -58,7 +58,7 @@
fun isLowProfile_transparentStatusBarMode_false() = runTest {
statusBarModeRepository.defaultDisplay.statusBarMode.value = StatusBarMode.TRANSPARENT
- val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID))
+ val actual by collectLastValue(interactor.isLowProfile(DISPLAY_ID)!!)
assertThat(actual).isFalse()
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/MultiDisplayStatusBarWindowControllerStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/MultiDisplayStatusBarWindowControllerStoreTest.kt
index 7a9d017..769f012 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/MultiDisplayStatusBarWindowControllerStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/MultiDisplayStatusBarWindowControllerStoreTest.kt
@@ -53,7 +53,7 @@
@Test
fun beforeDisplayRemoved_doesNotStopInstances() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
verify(instance, never()).stop()
}
@@ -61,7 +61,7 @@
@Test
fun displayRemoved_stopsInstance() =
testScope.runTest {
- val instance = underTest.forDisplay(DEFAULT_DISPLAY)
+ val instance = underTest.forDisplay(DEFAULT_DISPLAY)!!
fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
index 8972f3e..8b526bb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureRecognizerTest.kt
@@ -30,12 +30,14 @@
import com.android.systemui.touchpad.ui.gesture.FakeVelocityTracker
import com.google.common.truth.Truth.assertThat
import org.junit.Before
+import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
@SmallTest
+@Ignore("b/386412866")
@RunWith(ParameterizedAndroidJunit4::class)
class ThreeFingerGestureRecognizerTest(
private val recognizer: GestureRecognizer,
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 41c3e06..83a607b 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -42,7 +42,7 @@
<string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIMa PUKaren bidez desblokeatu behar da."</string>
<string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIMa desblokeatzen…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN kodearen eremua"</string>
- <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Gailuaren pasahitza"</string>
+ <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Gailuko pasahitza"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM txartelaren PIN kodearen eremua"</string>
<string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"SIM txartelaren PUK kodearen eremua"</string>
<string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Ezabatu"</string>
diff --git a/packages/SystemUI/res-product/values-ar/strings.xml b/packages/SystemUI/res-product/values-ar/strings.xml
index 7332ec8..a25e8c1 100644
--- a/packages/SystemUI/res-product/values-ar/strings.xml
+++ b/packages/SystemUI/res-product/values-ar/strings.xml
@@ -66,8 +66,6 @@
<string name="global_action_lock_message" product="device" msgid="3165224897120346096">"يمكنك فتح قفل جهازك للوصول إلى مزيد من الخيارات."</string>
<string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"جارٍ تشغيل الوسائط على هذا الهاتف."</string>
<string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"جارٍ تشغيل الوسائط على هذا الجهاز اللوحي."</string>
- <!-- no translation found for finder_active (2734050945122991747) -->
- <skip />
- <!-- no translation found for finder_active (8045583079989970505) -->
- <skip />
+ <string name="finder_active" product="default" msgid="2734050945122991747">"يمكنك تحديد مكان هذا الهاتف باستخدام تطبيق \"العثور على جهازي\" حتى عندما يكون مُطفأً"</string>
+ <string name="finder_active" product="tablet" msgid="8045583079989970505">"يمكنك تحديد مكان هذا الجهاز اللوحي باستخدام تطبيق \"العثور على جهازي\" حتى عندما يكون مُطفأً"</string>
</resources>
diff --git a/packages/SystemUI/res-product/values-hi/strings.xml b/packages/SystemUI/res-product/values-hi/strings.xml
index 92d5505..67bc2a3 100644
--- a/packages/SystemUI/res-product/values-hi/strings.xml
+++ b/packages/SystemUI/res-product/values-hi/strings.xml
@@ -66,8 +66,6 @@
<string name="global_action_lock_message" product="device" msgid="3165224897120346096">"ज़्यादा विकल्प देखने के लिए, अपना डिवाइस अनलॉक करें"</string>
<string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"मीडिया इस फ़ोन पर चल रहा है"</string>
<string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"मीडिया इस टैबलेट पर चल रहा है"</string>
- <!-- no translation found for finder_active (2734050945122991747) -->
- <skip />
- <!-- no translation found for finder_active (8045583079989970505) -->
- <skip />
+ <string name="finder_active" product="default" msgid="2734050945122991747">"आप Find My Device की मदद से, इस फ़ोन के बंद होने पर भी इसकी जगह की जानकारी का पता लगा सकते हैं"</string>
+ <string name="finder_active" product="tablet" msgid="8045583079989970505">"आप Find My Device की मदद से, इस टैबलेट के बंद होने पर भी इसकी जगह की जानकारी का पता लगा सकते हैं"</string>
</resources>
diff --git a/packages/SystemUI/res-product/values-pt-rBR/strings.xml b/packages/SystemUI/res-product/values-pt-rBR/strings.xml
index 1a99a16..f21bbd0 100644
--- a/packages/SystemUI/res-product/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-product/values-pt-rBR/strings.xml
@@ -66,6 +66,6 @@
<string name="global_action_lock_message" product="device" msgid="3165224897120346096">"Desbloqueie seu dispositivo para ver mais opções"</string>
<string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"Tocando neste smartphone"</string>
<string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"Mídia tocando neste tablet"</string>
- <string name="finder_active" product="default" msgid="2734050945122991747">"Localize o smartphone com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
- <string name="finder_active" product="tablet" msgid="8045583079989970505">"Localize o tablet com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
+ <string name="finder_active" product="default" msgid="2734050945122991747">"Você pode localizar o smartphone com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
+ <string name="finder_active" product="tablet" msgid="8045583079989970505">"Você pode localizar o tablet com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
</resources>
diff --git a/packages/SystemUI/res-product/values-pt/strings.xml b/packages/SystemUI/res-product/values-pt/strings.xml
index 1a99a16..f21bbd0 100644
--- a/packages/SystemUI/res-product/values-pt/strings.xml
+++ b/packages/SystemUI/res-product/values-pt/strings.xml
@@ -66,6 +66,6 @@
<string name="global_action_lock_message" product="device" msgid="3165224897120346096">"Desbloqueie seu dispositivo para ver mais opções"</string>
<string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"Tocando neste smartphone"</string>
<string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"Mídia tocando neste tablet"</string>
- <string name="finder_active" product="default" msgid="2734050945122991747">"Localize o smartphone com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
- <string name="finder_active" product="tablet" msgid="8045583079989970505">"Localize o tablet com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
+ <string name="finder_active" product="default" msgid="2734050945122991747">"Você pode localizar o smartphone com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
+ <string name="finder_active" product="tablet" msgid="8045583079989970505">"Você pode localizar o tablet com o Encontre Meu Dispositivo mesmo se ele estiver desligado"</string>
</resources>
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index bad5711..3270759 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -33,15 +33,25 @@
app:layout_constraintStart_toStartOf="@id/volume_dialog_main_slider_container"
app:layout_constraintTop_toTopOf="@id/volume_ringer_drawer" />
+ <View
+ android:id="@+id/volume_ringer_horizontal_background"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:background="@drawable/volume_dialog_background"
+ app:layout_constraintBottom_toTopOf="@id/volume_dialog_main_slider_container"
+ app:layout_constraintEnd_toEndOf="@id/volume_ringer_drawer"
+ app:layout_constraintStart_toStartOf="@id/volume_ringer_drawer"
+ app:layout_constraintTop_toTopOf="@id/volume_dialog_background" />
+
<include
android:id="@id/volume_ringer_drawer"
layout="@layout/volume_ringer_drawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/volume_dialog_components_spacing"
+ android:layout_marginRight="@dimen/volume_dialog_ringer_drawer_diff_right_margin"
app:layout_constraintBottom_toTopOf="@id/volume_dialog_main_slider_container"
app:layout_constraintEnd_toEndOf="@id/volume_dialog_main_slider_container"
- app:layout_constraintStart_toStartOf="@id/volume_dialog_main_slider_container"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1" />
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 72b57ca..ebc1935 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Deurlopende kennisgewing vir \'n skermopnamesessie"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Neem jou skerm op?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Neem een app op"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Neem hele skerm op"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Neem hele skerm op: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Wanneer jy jou hele skerm opneem, word enigiets wat op jou skerm wys, opgeneem. Wees dus versigtig met dinge soos wagwoorde, betalingbesonderhede, boodskappe, foto’s, en oudio en video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Wanneer jy ’n app opneem, word enigiets wat in daardie app gewys of gespeel word, opgeneem. Wees dus versigtig met dinge soos wagwoorde, betalingbesonderhede, boodskappe, foto’s, en oudio en video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Neem skerm op"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Kon nie voorafstelling opdateer nie"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voorafstelling"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Gekies"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Nutsgoed"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Intydse Onderskrifte"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Wys laeprioriteit-kennisgewingikone"</string>
<string name="other" msgid="429768510980739978">"Ander"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"verwyder teël"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"voeg teël aan einde by"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Skuif teël"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Voeg teël by"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Skuif na <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Voeg by posisie <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posisie is ongeldig."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"kies gebruiker"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Geen internet nie"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Maak <xliff:g id="ID_1">%s</xliff:g>-instellings oop."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Wysig volgorde van instellings."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Aan/af-kieslys"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Bladsy <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Sluitskerm"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ontkoppel)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Kan nie wissel nie. Tik om weer te probeer."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Koppel ’n toestel"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Maak die app oop om hierdie sessie uit te saai."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Onbekende app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Hou op uitsaai"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Beskikbare toestelle vir oudio-uitsette."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Gaan na tuisskerm"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Bekyk onlangse apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Probeer weer!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gaan terug"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swiep links of regs met drie vingers op jou raakpaneel"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Mooi so!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Jy het die Gaan Terug-gebaar voltooi."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Swiep links of regs met drie vingers om terug te gaan met jou raakpaneel"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Gaan na tuisskerm"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swiep op met drie vingers op jou raakpaneel"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Uitstekende werk!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Jy het die Gaan na Tuisskerm-gebaar voltooi"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swiep op met drie vingers op jou raakpaneel om na jou tuisskerm te gaan"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Bekyk onlangse apps"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swiep op en hou met drie vingers op jou raakpaneel"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Knap gedaan!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Jy het die Bekyk Onlangse Apps-gebaar voltooi."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Swiep op en hou met drie vingers op jou raakpaneel om onlangse apps te bekyk"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Bekyk alle apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Druk die handelingsleutel op jou sleutelbord"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Welgedaan!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Jy het die Bekyk Onlangse Apps-gebaar voltooi"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Druk die handelingsleutel op jou sleutelbord om al jou apps te bekyk"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutoriaalanimasie; klik om te onderbreek of hervat om te speel."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Sleutelbordlig"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Vlak %1$d van %2$d"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 586c204..18bffac 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ለአንድ የማያ ገፅ ቀረጻ ክፍለ-ጊዜ በመካሄድ ያለ ማሳወቂያ"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ማያ ገፅዎን ይቀዳሉ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"አንድ መተግበሪያ ቅዳ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"መላው ማያ ገፅን ቅረጽ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ሙሉ ማያ ገፅን ቅዳ፦ %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"መላው ማያ ገፅዎን በሚቀዱበት ጊዜ፣ በማያ ገፅዎ ላይ የሚታየው ማንኛውም ነገር ይቀዳል። ስለዚህ እንደ የይለፍ ቃላት፣ የክፍያ ዝርዝሮች፣ መልዕክቶች፣ ፎቶዎች እና ኦዲዮ እና ቪድዮ ላሉ ነገሮች ጥንቃቄ ያድርጉ።"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"መተግበሪያን ሲቀዱ በዚያ መተግበሪያ ውስጥ የሚታይ ወይም የሚጫወት ማንኛውም ነገር ይቀዳል። ስለዚህ እንደ የይለፍ ቃላት፣ የክፍያ ዝርዝሮች፣ መልዕክቶች፣ ፎቶዎች እና ኦዲዮ እና ቪድዮ ላሉ ነገሮች ጥንቃቄ ያድርጉ።"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ማያ ገፅን ቅረጽ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ቅድመ-ቅምጥን ማዘመን አልተቻለም"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ቅድመ-ቅምጥ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ተመርጧል"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"መሣሪያዎች"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"የቀጥታ መግለጫ ጽሑፍ"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ማስታወሻ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"አነስተኛ ቅድሚያ ያላቸው የማሳወቂያ አዶዎችን አሳይ"</string>
<string name="other" msgid="429768510980739978">"ሌላ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ሰቅ አስወግድ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ሰቅ መጨረሻው ላይ አክል"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ሰቁን ውሰድ"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ሰቅ ያክሉ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ወደ <xliff:g id="POSITION">%1$d</xliff:g> ውሰድ"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ወደ <xliff:g id="POSITION">%1$d</xliff:g> ቦታ አክል"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"አቀማመጡ ተቀባይነት የለውም።"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ተጠቃሚ ይምረጡ"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ምንም በይነመረብ የለም"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"የ<xliff:g id="ID_1">%s</xliff:g> ቅንብሮችን ክፈት።"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"የቅንብሮድ ቅደም-ተከተል አርትዕ።"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"የኃይል ምናሌ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"ገፅ <xliff:g id="ID_1">%1$d</xliff:g> ከ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ማያ ገፅ ቁልፍ"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ተቋርጧል)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"መቀየር አይቻልም። እንደገና ለመሞከር መታ ያድርጉ።"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"አንድ መሣሪያ ያገናኙ"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ይህን ክፍለ ጊዜ cast ለማድረግ፣ እባክዎ መተግበሪያውን ይክፈቱ።"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"የማይታወቅ መተግበሪያ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Cast ማድረግ አቁም"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ለኦዲዮ ውጽዓት ተገኚ የሆኑ መሣሪያዎች"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ወደ መነሻ ሂድ"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"የቅርብ ጊዜ መተግበሪያዎችን አሳይ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ተከናውኗል"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"እንደገና ይሞክሩ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ወደኋላ ተመለስ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"የመዳሰሻ ሰሌዳዎ ላይ ሦስት ጣቶችን በመጠቀም ወደ ግራ ወይም ወደ ቀኝ ያንሸራትቱ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"አሪፍ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"ወደኋላ የመመለስ ምልክትን አጠናቅቀዋል።"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"የመዳሰሻ ሰሌዳዎን ወደመጠቀም ለመመለስ ሦስት ጣቶችን በመጠቀም ወደ ግራ ወይም ወደ ቀኝ ያንሸራትቱ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ወደ መነሻ ሂድ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"በመዳሰሻ ሰሌዳዎ ላይ በሦስት ጣቶች ወደ ላይ ያንሸራትቱ"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"ጥሩ ሥራ!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ወደ መነሻ ሂድ ምልክትን አጠናቅቀዋል"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ወደ መነሻ ማያ ገፅዎ ለመሄድ የመዳሰሻ ሰሌዳዎ ላይ በሦስት ጣቶች ወደ ላይ ያንሸራትቱ"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"የቅርብ ጊዜ መተግበሪያዎችን አሳይ"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"የመዳሰሻ ሰሌዳዎ ላይ ሦስት ጣቶችን በመጠቀም ወደላይ ያንሸራትቱ እና ይያዙ"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"ጥሩ ሠርተዋል!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"የቅርብ ጊዜ መተግበሪያዎች አሳይ ምልክትን አጠናቅቀዋል።"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"የቅርብ ጊዜ መተግበሪያዎችን ለማየት የመዳሰሻ ሰሌዳዎ ላይ ሦስት ጣቶችን በመጠቀም ወደላይ ያንሸራትቱ እና ይያዙ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ሁሉንም መተግበሪያዎች ይመልከቱ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"በቁልፍ ሰሌዳዎ ላይ ያለውን የተግባር ቁልፍ ይጫኑ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ጥሩ ሠርተዋል!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"የሁሉንም መተግበሪያዎች አሳይ ምልክትን አጠናቅቀዋል"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"ሁሉንም መተግበሪያዎችዎን ለማየት በቁልፍ ሰሌዳዎ ላይ ያለውን የድርጊት ቁልፍ ይጫኑ"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"የአጋዥ ሥልጠና እነማ፣ ማጫወትን ባለበት ለማቆም እና ከቆመበት ለመቀጠል ጠቅ ያድርጉ።"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"የቁልፍ ሰሌዳ የጀርባ ብርሃን"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"ደረጃ %1$d ከ %2$d"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 92d0cbb..20668f8 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"إشعار مستمر لجلسة تسجيل شاشة"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"هل تريد تسجيل الشاشة؟"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"تسجيل شاشة تطبيق واحد"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"تسجيل الشاشة بكاملها"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"تسجيل محتوى الشاشة بالكامل: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"أثناء تسجيل محتوى الشاشة بالكامل، يتم تسجيل كل المحتوى المعروض على شاشتك، لذا يُرجى توخي الحذر بشأن المعلومات الظاهرة، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور والمقاطع الصوتية والفيديوهات."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"سيتم تسجيل كل المحتوى المعروض أو المشغَّل على شاشة التطبيق، لذا يُرجى توخي الحذر بشأن المعلومات الظاهرة، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور والمقاطع الصوتية والفيديوهات."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"تسجيل الشاشة"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"تعذَّر تعديل الإعداد المسبق"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"الإعدادات المسبقة"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"تمّ اختياره"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"الأدوات"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"النسخ النصي التلقائي"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ملاحظات"</string>
@@ -753,20 +769,13 @@
<string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"قمر صناعي، الاتصال متوفّر"</string>
<string name="satellite_connected_carrier_text" msgid="118524195198532589">"اتصالات الطوارئ بالقمر الصناعي"</string>
<string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"مكالمات الطوارئ أو ميزة \"اتصالات طوارئ بالقمر الصناعي\""</string>
- <!-- no translation found for accessibility_phone_string_format (7798841417881811812) -->
- <skip />
- <!-- no translation found for accessibility_no_signal (7052827511409250167) -->
- <skip />
- <!-- no translation found for accessibility_one_bar (5342012847647834506) -->
- <skip />
- <!-- no translation found for accessibility_two_bars (122628483354508429) -->
- <skip />
- <!-- no translation found for accessibility_three_bars (5143286602926069024) -->
- <skip />
- <!-- no translation found for accessibility_four_bars (8838495563822541844) -->
- <skip />
- <!-- no translation found for accessibility_signal_full (1519655809806462972) -->
- <skip />
+ <string name="accessibility_phone_string_format" msgid="7798841417881811812">"\"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>\"، <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>"</string>
+ <string name="accessibility_no_signal" msgid="7052827511409250167">"ما مِن أشرطة إشارة"</string>
+ <string name="accessibility_one_bar" msgid="5342012847647834506">"شريط إشارة واحد"</string>
+ <string name="accessibility_two_bars" msgid="122628483354508429">"شريطا إشارة"</string>
+ <string name="accessibility_three_bars" msgid="5143286602926069024">"ثلاثة أشرطة إشارة"</string>
+ <string name="accessibility_four_bars" msgid="8838495563822541844">"أربعة أشرطة إشارة"</string>
+ <string name="accessibility_signal_full" msgid="1519655809806462972">"شريط إشارة كاملة"</string>
<string name="accessibility_managed_profile" msgid="4703836746209377356">"ملف العمل"</string>
<string name="tuner_warning_title" msgid="7721976098452135267">"متعة للبعض وليس للجميع"</string>
<string name="tuner_warning" msgid="1861736288458481650">"توفر لك أداة ضبط واجهة مستخدم النظام طرقًا إضافية لتعديل واجهة مستخدم Android وتخصيصها. ويمكن أن تطرأ تغييرات على هذه الميزات التجريبية أو يمكن أن تتعطل هذه الميزات أو تختفي في الإصدارات المستقبلية. عليك متابعة الاستخدام مع توخي الحذر."</string>
@@ -967,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"إظهار رموز الإشعارات ذات الأولوية المنخفضة"</string>
<string name="other" msgid="429768510980739978">"غير ذلك"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"إزالة بطاقة"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"إضافة بطاقة إلى نهاية الإعدادات السريعة"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"نقل بطاقة"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"إضافة بطاقة"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"الانتقال إلى <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"الإضافة إلى الموضع <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"الموضِع غير صالح."</string>
@@ -985,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"اختيار مستخدم"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"لا يتوفر اتصال إنترنت."</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"فتح إعدادات <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"تعديل ترتيب الإعدادات."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"قائمة زر التشغيل"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"الصفحة <xliff:g id="ID_1">%1$d</xliff:g> من <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"شاشة القفل"</string>
@@ -1216,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(غير متّصل)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"لا يمكن التبديل. انقر لإعادة المحاولة."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ربط جهاز"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"لبث هذه الجلسة، يُرجى فتح التطبيق"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"تطبيق غير معروف"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"إيقاف البث"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"الأجهزة المتاحة لإخراج الصوت"</string>
@@ -1475,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"الانتقال إلى الصفحة الرئيسية"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"عرض التطبيقات المستخدَمة مؤخرًا"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تم"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"يُرجى إعادة المحاولة"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"رجوع"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"مرِّر سريعًا لليمين أو لليسار باستخدام 3 أصابع على لوحة اللمس"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"أحسنت."</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"لقد أكملت التدريب على إيماءة الرجوع."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"للرجوع باستخدام لوحة اللمس، يُرجى التمرير سريعًا لليمين أو لليسار باستخدام ثلاثة أصابع"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"الانتقال إلى الشاشة الرئيسية"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"مرّر سريعًا للأعلى باستخدام 3 أصابع على لوحة اللمس"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"أحسنت صنعًا."</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"لقد أكملت الدليل التوجيهي عن إيماءة \"الانتقال إلى الشاشة الرئيسية\""</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"يُرجى التمرير سريعًا للأعلى باستخدام ثلاثة أصابع على لوحة اللمس للانتقال إلى الشاشة الرئيسية"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"عرض التطبيقات المستخدَمة مؤخرًا"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"مرِّر سريعًا للأعلى مع الاستمرار باستخدام 3 أصابع على لوحة اللمس"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"أحسنت."</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"لقد أكملْت التدريب على إيماءة عرض التطبيقات المستخدَمة مؤخرًا."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"لعرض التطبيقات المستخدَمة مؤخرًا، يُرجى التمرير سريعًا للأعلى مع الاستمرار باستخدام ثلاثة أصابع على لوحة اللمس"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"عرض جميع التطبيقات"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"اضغط على مفتاح الإجراء في لوحة المفاتيح"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"أحسنت!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"لقد أكملْت التدريب على إيماءة عرض جميع التطبيقات"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"يمكنك الضغط على مفتاح الإجراء في لوحة المفاتيح لعرض جميع التطبيقات"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"صورة متحركة للدليل التوجيهي: يمكنك النقر عليها لإيقاف تشغيلها مؤقتًا واستئنافه."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"الإضاءة الخلفية للوحة المفاتيح"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"مستوى الإضاءة: %1$d من %2$d"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 89e5083..fb0030f 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"স্ক্রীন ৰেকৰ্ডিং ছেশ্বন চলি থকা সময়ত পোৱা জাননী"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"আপোনাৰ স্ক্ৰীনখন ৰেকৰ্ড কৰিবনে?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"এটা এপ্ ৰেকৰ্ড কৰক"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"গোটেই স্ক্ৰীনখন ৰেকৰ্ড কৰক"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"গোটেই স্ক্ৰীনখন ৰেকৰ্ড কৰক: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"আপুনি গোটেই স্ক্ৰীনখন ৰেকৰ্ডিং কৰিলে, আপোনাৰ স্ক্ৰীনখনত দেখুওৱা যিকোনো বস্তু ৰেকৰ্ড কৰা হয়। গতিকে, পাছৱৰ্ড, পৰিশোধৰ সবিশেষ, বাৰ্তা, ফট’ আৰু অডিঅ’ আৰু ভিডিঅ’ৰ ক্ষেত্ৰত সাৱধান হওক।"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"আপুনি কোনো এপ্ ৰেকৰ্ড কৰিলে, সেই এপত দেখুওৱা বা প্লে’ কৰা যিকোনো বস্তু ৰেকৰ্ড কৰা হয়। গতিকে, পাছৱৰ্ড, পৰিশোধৰ সবিশেষ, বাৰ্তা, ফট’ আৰু অডিঅ’ আৰু ভিডিঅ’ৰ ক্ষেত্ৰত সাৱধান হওক।"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"স্ক্ৰীনখন ৰেকৰ্ড কৰক"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"প্ৰিছেট আপডে’ট কৰিব পৰা নগ’ল"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"প্ৰিছেট"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"বাছনি কৰা হৈছে"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"সঁজুলি"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"লাইভ কেপশ্বন"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"টোকা"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"কম গুৰুত্বপূৰ্ণ জাননীৰ আইকনসমূহ দেখুৱাওক"</string>
<string name="other" msgid="429768510980739978">"অন্যান্য"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"টাইল আঁতৰাবলৈ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"টাইল শেষত যোগ দিবলৈ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"টাইল স্থানান্তৰ কৰক"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"টাইল যোগ দিয়ক"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> নম্বৰলৈ স্থানান্তৰ কৰক"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> নম্বৰ স্থানত যোগ দিয়ক"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"স্থান অমান্য।"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ব্যৱহাৰকাৰী বাছনি কৰক"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ইণ্টাৰনেট সংযোগ নাই"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g>ৰ ছেটিং খোলক।"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ছেটিঙৰ ক্ৰম সম্পাদনা কৰক।"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"পাৱাৰ মেনু"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g>ৰ পৃষ্ঠা <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"লক স্ক্ৰীন"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(সংযোগ বিচ্ছিন্ন কৰা হৈছে)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"সলনি কৰিব নোৱাৰি। আকৌ চেষ্টা কৰিবলৈ টিপক।"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ডিভাইচ সংযোগ কৰক"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"এই ছেশ্বনটো কাষ্ট কৰিবলৈ, অনুগ্ৰহ কৰি এপ্টো খোলক"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"অজ্ঞাত এপ্"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"কাষ্ট বন্ধ কৰক"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"অডিঅ\' আউটপুটৰ বাবে উপলব্ধ ডিভাইচ।"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"গৃহ পৃষ্ঠালৈ যাওক"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"শেহতীয়া এপ্সমূহ চাওক"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হ’ল"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"পুনৰ চেষ্টা কৰক!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"উভতি যাওক"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"আপোনাৰ টাচ্চপেডত তিনিটা আঙুলি ব্যৱহাৰ কৰি বাওঁফাললৈ বা সোঁফাললৈ ছোৱাইপ কৰক"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"সুন্দৰ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"আপুনি উভতি যোৱাৰ নিৰ্দেশটো সম্পূৰ্ণ কৰিলে।"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"আপোনাৰ টাচ্চপেড ব্যৱহাৰ কৰি উভতি যাবলৈ, তিনিটা আঙুলি ব্যৱহাৰ কৰি বাওঁ বা সোঁফালে ছোৱাইপ কৰক"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"গৃহ পৃষ্ঠালৈ যাওক"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"আপোনাৰ টাচ্চপেডত তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰক"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"বঢ়িয়া!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"আপুনি গৃহ স্ক্ৰীনলৈ যোৱাৰ নিৰ্দেশটো সম্পূৰ্ণ কৰিলে"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"আপোনাৰ গৃহ স্ক্ৰীনলৈ যাবলৈ আপোনাৰ টাচ্চপেডত তিনিটা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰক"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"শেহতীয়া এপ্সমূহ চাওক"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"আপোনাৰ টাচ্চপেডত তিনিটা আঙুলি ব্যৱহাৰ কৰি ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"বঢ়িয়া!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"আপুনি শেহতীয়া এপ্ চোৱাৰ নিৰ্দেশনাটো সম্পূৰ্ণ কৰিছে।"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"শেহতীয়া এপ্সমূহ চাবলৈ, আপোনাৰ টাচ্চপেডত তিনিটা আঙুলি ব্যৱহাৰ কৰি ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"আটাইবোৰ এপ্ চাওক"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"আপোনাৰ কীব’ৰ্ডৰ কাৰ্য কীটোত টিপক"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"বঢ়িয়া!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"আপুনি আটাইবোৰ এপ্ চোৱাৰ নিৰ্দেশনাটো সম্পূৰ্ণ কৰিছে"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"আপোনাৰ আটাইবোৰ এপ্ চাবলৈ আপোনাৰ কীব’ৰ্ডত কাৰ্য কীটো টিপক"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"টিউট’ৰিয়েল এনিমেশ্বন, পজ কৰিবলৈ আৰু প্লে’ কৰাটো পুনৰ আৰম্ভ কৰিবলৈ ক্লিক কৰক।"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"কীব’ৰ্ডৰ বেকলাইট"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dৰ %1$d স্তৰ"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 31238d0..532fceb 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekranın video çəkimi ərzində silinməyən bildiriş"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Ekran qeydə alınsın?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Bir tətbiqi qeydə alın"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Bütün ekranı qeydə alın"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Bütün ekranı qeydə alın: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Bütün ekranı qeydə alarkən ekranda göstərilən bütün kontent qeydə alınır. Parol, ödəniş detalları, mesaj, foto, habelə audio və video kimi məlumatlarla bağlı diqqətli olun."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Tətbiq qeydə aldıqda həmin tətbiqdə göstərilən və ya işə salınan bütün kontent qeydə alınır. Parol, ödəniş detalları, mesaj, foto, habelə audio və video kimi məlumatlarla bağlı diqqətli olun."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ekranı qeydə alın"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Hazır ayar güncəllənmədi"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Hazır Ayar"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Seçilib"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alətlər"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Canlı Altyazı"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Qeyd"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Aşağı prioritet bildiriş işarələrini göstərin"</string>
<string name="other" msgid="429768510980739978">"Digər"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"lövhəni silin"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"sona lövhə əlavə edin"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Lövhəni köçürün"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lövhə əlavə edin"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> mövqeyinə köçürün"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> mövqeyinə əlavə edin"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Mövqe yanlışdır."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"istifadəçi seçin"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"İnternet yoxdur"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ayarlarını açın."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Ayarların sıralanmasını redaktə edin."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Qidalanma düyməsi menyusu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> səhifədən <xliff:g id="ID_1">%1$d</xliff:g> səhifə"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ekran kilidi"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(bağlantı kəsildi)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Dəyişmək olmur. Yenidən cəhd etmək üçün toxunun."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Cihaz qoşun"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu sessiyanı yayımlamaq üçün tətbiqi açın."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Naməlum tətbiq"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Yayımı dayandırın"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Audio çıxış üçün əlçatan cihazlar."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Əsas səhifəyə keçin"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son tətbiqlərə baxın"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hazırdır"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Yenidən cəhd edin!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri qayıdın"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Taçpeddə üç barmaqla sola və ya sağa sürüşdürün"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Əla!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Geri getmə jestini tamamladınız."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Taçpedi istifadə edərək geri qayıtmaq üçün üç barmağınızla sola və ya sağa çəkin"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Əsas səhifəyə keçin"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Taçpeddə üç barmaqla yuxarı sürüşdürün"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Əla!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Əsas səhifəyə keçid jestini tamamladınız"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Ana ekrana keçmək üçün taçpeddə üç barmağınızla yuxarı çəkin"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Son tətbiqlərə baxın"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Taçpeddə üç barmaqla yuxarı çəkib saxlayın"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Əla!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Son tətbiqlərə baxmaq jestini tamamladınız."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ən son tətbiqlərə baxmaq üçün taçpeddə üç barmağınızla yuxarı çəkin və saxlayın"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Bütün tətbiqlərə baxın"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Klaviaturada fəaliyyət açarına basın"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Əla!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"\"Bütün tətbiqlərə baxın\" jestini tamamladınız"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Bütün tətbiqlərinizə baxmaq üçün klaviaturada fəaliyyət düyməsini basın"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Öyrədici animasiya, oxudulmanı durdurmaq və davam etdirmək üçün klikləyin."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatura işığı"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Səviyyə %1$d/%2$d"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 6810018..d0c3fa3 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Obaveštenje o sesiji snimanja ekrana je aktivno"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Želite da snimite ekran?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Snimi jednu aplikaciju"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Snimi ceo ekran"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Snimite ceo ekran: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kada snimate ceo ekran, snima se sve što je na njemu. Zato pazite na lozinke, informacije o plaćanju, poruke, slike, audio i video sadržaj."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kada snimate aplikaciju, snima se sav sadržaj koji se prikazuje ili pušta u njoj. Zato pazite na lozinke, informacije o plaćanju, poruke, slike, audio i video sadržaj."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Snimi ekran"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje zadatih podešavanja nije uspelo"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Unapred određena podešavanja"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Izabrano"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alatke"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Titl uživo"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Beleška"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obaveštenja niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Drugo"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklonili pločicu"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodali pločicu na kraj"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premestite pločicu"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodajte pločicu"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premestite na <xliff:g id="POSITION">%1$d</xliff:g>. poziciju"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodajte na <xliff:g id="POSITION">%1$d</xliff:g>. poziciju"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Pozicija je nevažeća."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"odabrali korisnika"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nema interneta"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otvori podešavanja za <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Izmeni redosled podešavanja."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Meni dugmeta za uključivanje"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>. strana od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Zaključan ekran"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(veza je prekinuta)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Prebacivanje nije uspelo. Probajte ponovo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Povežite uređaj"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da biste prebacivali ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi prebacivanje"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostupni uređaji za audio izlaz."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Idi na početni ekran"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Prikaži nedavno korišćene aplikacije"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Probajte ponovo."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazad"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Prevucite ulevo ili udesno sa tri prsta na tačpedu"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Super!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Dovršili ste pokret za povratak."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Da biste se vratili pomoću tačpeda, prevucite ulevo ili udesno sa tri prsta"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Idi na početni ekran"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Prevucite nagore sa tri prsta na tačpedu"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Odlično!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Dovršili ste pokret za povratak na početnu stranicu."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Da biste otišli na početni ekran, prevucite nagore sa tri prsta na tačpedu"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Prikaži nedavno korišćene aplikacije"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Prevucite nagore i zadržite sa tri prsta na tačpedu"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Odlično!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Dovršili ste pokret za prikazivanje nedavno korišćenih aplikacija."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Da biste pregledali nedavne aplikacije, prevucite nagore i zadržite sa tri prsta na tačpedu"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Prikaži sve aplikacije"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pritisnite taster radnji na tastaturi"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Odlično!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Dovršili ste pokret za prikazivanje svih aplikacija."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pritisnite taster radnji na tastaturi da biste pregledali sve aplikacije"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacija vodiča, kliknite da biste pauzirali i nastavili reprodukciju."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvetljenje tastature"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index d95fd67..b40801d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Бягучае апавяшчэнне для сеанса запісу экрана"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Запісаць экран?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Запісаць адну праграму"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Запісаць змесціва ўсяго экрана"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Запісваць экран цалкам: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Пры запісе ўсяго экрана запісваецца ўсё, што паказваецца на экране. Таму прадухіліце паказ пароляў, плацежных рэквізітаў, паведамленняў, фота, відэа і аўдыя."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Пры запісе праграмы запісваецца ўсё, што паказваецца або прайграецца ў гэтай праграме. Таму прадухіліце паказ пароляў, плацежных рэквізітаў, паведамленняў, фота, відэа і аўдыя."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Запісаць экран"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Не ўдалося абнавіць набор налад"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набор налад"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Выбрана"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Інструменты"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Аўтаматычныя субцітры"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Нататка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Паказваць значкі апавяшчэнняў з нізкім прыярытэтам"</string>
<string name="other" msgid="429768510980739978">"Іншае"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"выдаліць плітку"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"дадаць плітку ў канец"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перамясціць плітку"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Дадаць плітку"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Перамясціць на пазіцыю <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Дадаць на пазіцыю <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Няправільнае месца."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"выбраць карыстальніка"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Няма падключэння да інтэрнэту"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Адкрыць налады <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Змяніць парадак налад."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Меню кнопкі сілкавання"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Старонка <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Экран блакіроўкі"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(адключана)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Не ўдалося пераключыцца. Дакраніцеся, каб паўтарыць спробу."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Падключыць прыладу"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Для трансляцыі гэтага сеанса адкрыйце праграму."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Невядомая праграма"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Спыніць трансляцыю"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Даступныя прылады для вываду аўдыя."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"На галоўную старонку"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прагляд нядаўніх праграм"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Гатова"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Паспрабуйце яшчэ раз!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Правядзіце па сэнсарнай панэлі трыма пальцамі ўлева ці ўправа"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Выдатна!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Вы навучыліся рабіць жэст вяртання."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Каб вярнуцца назад з дапамогай сэнсарнай панэлі, правядзіце трыма пальцамі ўлева ці ўправа"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"На галоўны экран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Правядзіце па сэнсарнай панэлі трыма пальцамі ўверх"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Выдатная праца!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Вы навучыліся рабіць жэст для пераходу на галоўны экран"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Каб перайсці на галоўны экран, правядзіце трыма пальцамі ўверх па сэнсарным экране"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Прагляд нядаўніх праграм"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Правядзіце па сэнсарнай панэлі трыма пальцамі ўверх і затрымайце пальцы"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Выдатная праца!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Вы скончылі вывучэнне жэсту для прагляду нядаўніх праграм."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Каб праглядзець нядаўнія праграмы, правядзіце трыма пальцамі ўверх па сэнсарным экране і затрымайце пальцы"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Глядзець усе праграмы"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Націсніце клавішу дзеяння на клавіятуры"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Выдатна!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Вы навучыліся рабіць жэст для прагляду ўсіх праграм"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Каб праглядзець усе праграмы, націсніце на клавішу дзеяння на клавіятуры"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анімацыя ў дапаможніку: націсніце, каб прыпыніць ці ўзнавіць прайграванне."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Падсветка клавіятуры"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Узровень %1$d з %2$d"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 344c011..83aa4e5 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Текущо известие за сесия за записване на екрана"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Да се записва ли екранът?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Записване на едно приложение"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Записване на целия екран"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Записване на целия екран: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Когато записвате целия си екран, се записва всичко, което се показва на него. Затова бъдете внимателни с неща като пароли, подробности за начини на плащане, съобщения, снимки, аудио и видео."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Когато записвате приложение, се записва всичко, което се показва или възпроизвежда в него. Затова бъдете внимателни с неща като пароли, подробности за начини на плащане, съобщения, снимки, аудио и видео."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Записване на екрана"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Предварително зададените настройки не бяха актуализирани"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Предварително зададено"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Избрано"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Инструменти"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Надписи на живо"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Бележка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Показване на иконите за известията с нисък приоритет"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"премахване на панел"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"добавяне на панел в края"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместване на панел"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Добавяне на панел"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместване към позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Добавяне към позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Невалидна позиция."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"изберете потребител"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Няма връзка с интернет"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Отваряне на настройките за <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Редактиране на подредбата на настройките."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Меню за включване/изключване"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Страница <xliff:g id="ID_1">%1$d</xliff:g> от <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Заключен екран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(връзката е прекратена)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Не може да се превключи. Докоснете за нов опит."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Свързване на устройство"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"За да предавате тази сесия, моля, отворете приложението."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Неизвестно приложение"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Спиране на предаването"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Налични устройства за аудиоизход."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Към началния екран"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Преглед на скорошните приложения"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Опитайте отново!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Плъзнете три пръста наляво или надясно по сензорния панел"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Чудесно!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Изпълнихте жеста за връщане назад."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"За да се върнете назад чрез сензорния панел, прекарайте три пръста наляво или надясно"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Към началния екран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Плъзнете три пръста нагоре по сензорния панел"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Отлично!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Изпълнихте жеста за преминаване към началния екран"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Плъзнете три пръста нагоре по сензорния панел, за да преминете към началния екран"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Преглед на скорошните приложения"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Плъзнете три пръста нагоре по сензорния панел и задръжте"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Отлично!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Изпълнихте жеста за преглед на скорошните приложения."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"За да прегледате скорошните приложения, плъзнете три пръста нагоре по сензорния панел и задръжте"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Преглед на всички приложения"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Натиснете клавиша за действия на клавиатурата си"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Браво!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Изпълнихте жеста за преглед на всички приложения"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Натиснете клавиша за действия на клавиатурата си, за да прегледате всичките си приложения"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анимация за урока. Кликнете, за да поставите на пауза и да възобновите възпроизвеждането."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Подсветка на клавиатурата"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d от %2$d"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index d7b24c8..b927ad1 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"স্ক্রিন রেকর্ডিং সেশন চলার বিজ্ঞপ্তি"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"আপনার স্ক্রিন রেকর্ড করবেন?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"একটি অ্যাপ রেকর্ড করুন"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"সম্পূর্ণ স্ক্রিন রেকর্ড করুন"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"পুরো স্ক্রিন রেকর্ড করুন: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"আপনার সম্পূর্ণ স্ক্রিন রেকর্ড করার সময়, আপনার স্ক্রিনে দেখানো সব কিছু রেকর্ড করা হয়। তাই পাসওয়ার্ড, পেমেন্টের বিবরণ, মেসেজ, ফটো এবং অডিও ও ভিডিওর মতো বিষয়ের ক্ষেত্রে সতর্ক থাকুন।"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"আপনি কোনও অ্যাপ রেকর্ড করার সময়, সেই অ্যাপে দেখানো বা চালানো সব কিছু রেকর্ড করা হয়। তাই পাসওয়ার্ড, পেমেন্টের বিবরণ, মেসেজ, ফটো এবং অডিও ও ভিডিওর মতো বিষয়ের ক্ষেত্রে সতর্ক থাকুন।"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"স্ক্রিন রেকর্ড করুন"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"প্রিসেট আপডেট করা যায়নি"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"প্রিসেট"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"বেছে নেওয়া হয়েছে"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"টুল"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"লাইভ ক্যাপশন"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"মনে রাখবেন"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"কম-গুরুত্বপূর্ণ বিজ্ঞপ্তির আইকন দেখুন"</string>
<string name="other" msgid="429768510980739978">"অন্যান্য"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"টাইল সরান"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"শেষে টাইল যোগ করুন"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"টাইল সরান"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"টাইল যোগ করুন"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>-এ সরান"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"অবস্থান <xliff:g id="POSITION">%1$d</xliff:g>-এ যোগ করুন"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"পজিশন সঠিক নয়।"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ব্যবহারকারী বেছে নিন"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ইন্টারনেট কানেকশন নেই"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> সেটিংস খুলুন৷"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ক্রম বা সেটিংস সম্পাদনা করুন৷"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"পাওয়ার মেনু"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g>টির মধ্যে <xliff:g id="ID_1">%1$d</xliff:g> নং পৃষ্ঠা"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"লক স্ক্রিন"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ডিসকানেক্ট হয়ে গেছে)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"পাল্টানো যাচ্ছে না। আবার চেষ্টা করতে ট্যাপ করুন।"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ডিভাইস কানেক্ট করুন"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"এই সেশন কাস্ট করার জন্য, অ্যাপ খুলুন।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"অজানা অ্যাপ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"কাস্ট করা বন্ধ করুন"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"অডিও আউটপুটের জন্য উপলভ্য ডিভাইস।"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"হোমে যান"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপ দেখুন"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হয়ে গেছে"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"আবার চেষ্টা করুন!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ফিরে যান"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"আপনার টাচপ্যাডে তিনটি আঙুল ব্যবহার করে বাঁদিকে বা ডানদিকে সোয়াইপ করুন"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"সাবাস!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"জেসচার ব্যবহার করে কীভাবে ফিরে যাওয়া যায় সেই সম্পর্কে আপনি জেনেছেন।"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"নিজের টাচপ্যাড ব্যবহার করে ফিরে যেতে, তিনটি আঙুল ব্যবহার করে বাঁদিকে বা ডানদিকে সোয়াইপ করুন"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"হোমে যান"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"আপনার টাচপ্যাডে তিনটি আঙুলের সাহায্যে উপরের দিকে সোয়াইপ করুন"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"অসাধারণ!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"জেসচার ব্যবহার করে কীভাবে হোমে ফিরে যাওয়া যায় সেই সম্পর্কে আপনি জেনেছেন"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"আপনার হোম স্ক্রিনে যেতে নিজের টাচপ্যাডে তিনটি আঙুল ব্যবহার করে উপরের দিকে সোয়াইপ করুন"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপ দেখুন"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"আপনার টাচপ্যাডে তিনটি আঙুল ব্যবহার করে উপরের দিকে সোয়াইপ করে ধরে রাখুন"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"অসাধারণ!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপের জেসচার দেখা সম্পূর্ণ করেছেন।"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"সাম্প্রতিক অ্যাপ দেখতে, নিজের টাচপ্যাডে তিনটি আঙুল ব্যবহার করে উপরের দিকে সোয়াইপ করে হোল্ড করুন"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"সব অ্যাপ দেখুন"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"আপনার কীবোর্ডে অ্যাকশন কী প্রেস করুন"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"দারুণ!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"আপনি \'সব অ্যাপের জেসচার দেখুন\' টিউটোরিয়াল সম্পূর্ণ করেছেন"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"নিজের সব অ্যাপ দেখতে আপনার কীবোর্ডে অ্যাকশন \'কী\' প্রেস করুন"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"টিউটোরিয়াল অ্যানিমেশন পজ করুন এবং আবার চালু করতে ক্লিক করুন।"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"কীবোর্ড ব্যাকলাইট"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-এর মধ্যে %1$d লেভেল"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index b858459..defc62e 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Obavještenje za sesiju snimanja ekrana je u toku"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Snimati ekran?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Snimaj jednu aplikaciju"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Snimaj cijeli ekran"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Snimi cijeli ekran: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kada snimate cijeli ekran, snimat će se sve što se prikazuje na ekranu. Stoga budite oprezni s informacijama kao što su lozinke, podaci o plaćanju, poruke, fotografije, audio i videozapisi."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kada snimate aplikaciju, snimat će se sve što se prikazuje ili reproducira u toj aplikaciji. Stoga budite oprezni s informacijama kao što su lozinke, podaci o plaćanju, poruke, fotografije, audio i videozapisi."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Snimaj ekran"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje zadane postavke nije uspjelo"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Zadana postavka"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Odabrano"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alati"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Automatski titlovi"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Bilješka"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavještenja niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Ostalo"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodavanje kartice na kraj"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodavanje kartice na posljednji položaj"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pomjeranje kartice"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodavanje kartice"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Dodajte karticu na željeni položaj"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pomjeranje u položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodavanje u položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Nevažeći položaj."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"odaberete korisnika"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nema internetske veze"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otvori postavke za: <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Urediti raspored postavki."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Uredite redoslijed brzih postavki."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Meni napajanja"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Stranica <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Zaključani ekran"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(veza je prekinuta)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nije moguće prebaciti. Dodirnite da pokušate ponovo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Povežite uređaj"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da emitirate ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi emitiranje"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostupni uređaji za audio izlaz."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Odlazak na početni ekran"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Prikaži nedavne aplikacije"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Pokušajte ponovo!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazad"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Prevucite ulijevo ili udesno s tri prsta na dodirnoj podlozi"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Lijepo!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Savladali ste pokret za vraćanje."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Da se vratite pomoću dodirne podloge, prevucite ulijevo ili udesno s tri prsta"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Odlazak na početni ekran"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Prevucite nagore s tri prsta na dodirnoj podlozi"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Sjajno!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Savladali ste pokret za odlazak na početni ekran"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Prevucite nagore s tri prsta na dodirnoj podlozi da odete na početni ekran"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Prikaz nedavnih aplikacija"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Prevucite nagore i zadržite s tri prsta na dodirnoj podlozi"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Sjajno!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Izvršili ste pokret za prikaz nedavnih aplikacija."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Da pogledate nedavne aplikacije, prevucite nagore i zadržite s tri prsta na dodirnoj podlozi"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Pogledajte sve aplikacije"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pritisnite tipku radnji na tastaturi"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Odlično!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Izvršili ste pokret za prikaz svih aplikacija"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pritisnite tipku radnji na tastaturi da pogledate sve aplikacije"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacija vodiča; pauziranje i nastavak reprodukcije klikom."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvjetljenje tastature"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index c8f371c..05c9d81 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Vols gravar la pantalla?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Grava una aplicació"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Grava tota la pantalla"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Grava tota la pantalla: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Quan graves tota la pantalla, es grava tot el que es mostra en pantalla. Per aquest motiu, ves amb compte amb elements com les contrasenyes, les dades de pagament, els missatges, les fotos, i l\'àudio i el vídeo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Quan graves una aplicació, es grava tot el que es mostra o es reprodueix en aquesta aplicació. Per aquest motiu, ves amb compte amb les contrasenyes, les dades de pagament, els missatges, les fotos, i l\'àudio i el vídeo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Grava la pantalla"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"No s\'ha pogut actualitzar el valor predefinit"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Valors predefinits"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Seleccionat"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Eines"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtítols instantanis"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostra les icones de notificació amb prioritat baixa"</string>
<string name="other" msgid="429768510980739978">"Altres"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"suprimir el mosaic"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"afegir un mosaic al final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mou el mosaic"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Afegeix una icona"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mou a la posició <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Afegeix a la posició <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"La posició no és vàlida."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"triar un usuari"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sense connexió a Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Obre la configuració per a <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edita l\'ordre de la configuració."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menú d\'engegada"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Pàgina <xliff:g id="ID_1">%1$d</xliff:g> (<xliff:g id="ID_2">%2$d</xliff:g> en total)"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Pantalla de bloqueig"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(desconnectat)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"No es pot canviar. Torna-ho a provar."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connecta un dispositiu"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Per emetre aquesta sessió, obre l\'aplicació."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicació desconeguda"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Atura l\'emissió"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositius disponibles per a la sortida d\'àudio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ves a la pantalla d\'inici"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Mostra les aplicacions recents"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fet"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Torna-ho a provar"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Torna"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Llisca cap a l\'esquerra o cap a la dreta amb tres dits al ratolí tàctil"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Molt bé!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Has completat el gest per tornar enrere."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Per tornar enrere amb el ratolí tàctil, llisca cap a l\'esquerra o cap a la dreta amb tres dits"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ves a la pantalla d\'inici"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Llisca cap amunt amb tres dits al ratolí tàctil"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Ben fet!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Has completat el gest per anar a la pantalla d\'inici"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Llisca cap amunt amb tres dits al ratolí tàctil per anar a la pantalla d\'inici"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Mostra les aplicacions recents"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Llisca cap amunt amb tres dits i mantén-los premuts al ratolí tàctil"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Ben fet!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Has completat el gest per veure les aplicacions recents."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Per veure les aplicacions recents, llisca cap amunt amb tres dits i mantén-los premuts al ratolí tàctil"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Mostra totes les aplicacions"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Prem la tecla d\'acció al teclat"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Enhorabona!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Has completat el gest per veure totes les aplicacions"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Prem la tecla d\'acció al teclat per veure totes les aplicacions"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animació del tutorial; fes clic per posar en pausa i reprendre la reproducció."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroil·luminació del teclat"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivell %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index efc699b..7ae4416 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Trvalé oznámení o relaci nahrávání"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Pořídit nahrávku obrazovky?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Nahrát jednu aplikaci"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Nahrát celou obrazovku"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Nahrát celou obrazovku: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Při nahrávání celé obrazovky se zaznamenává veškerý obsah na obrazovce. Buďte proto opatrní, když jde o hesla, platební údaje, zprávy, fotografie, zvuk a video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Při nahrávání aplikace se zaznamenává všechno, co se v dané obrazovce zobrazuje nebo přehrává. Buďte proto opatrní, když jde o hesla, platební údaje, zprávy, fotografie, zvuk a video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Nahrát obrazovku"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Předvolbu nelze aktualizovat"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Předvolba"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Vybráno"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Nástroje"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Okamžité titulky"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Poznámka"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Zobrazit ikony oznámení s nízkou prioritou"</string>
<string name="other" msgid="429768510980739978">"Jiné"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstranit dlaždici"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"přidat dlaždici na konec"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Přesunout dlaždici"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Přidat dlaždici"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Přesunout na pozici <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Přidat dlaždici na pozici <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Pozice není platná."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"zvolit uživatele"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nejste připojeni k internetu"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otevřít nastavení aplikace <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Upravit pořadí nastavení."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Nabídka vypínače"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Stránka <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Obrazovka uzamčení"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(odpojeno)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nelze přepnout. Klepnutím opakujte akci."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Připojit zařízení"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pokud chcete odesílat relaci, otevřete aplikaci."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznámá aplikace"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zastavit odesílání"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostupná zařízení pro zvukový výstup."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Přejít na domovskou stránku"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobrazit nedávné aplikace"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Zkuste to znovu."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zpět"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Přejeďte po touchpadu třemi prsty doleva nebo doprava"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Skvělé!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Provedli jste gesto pro přechod zpět."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Pokud se chcete vrátit zpět pomocí touchpadu, přejeďte třemi prsty vlevo nebo vpravo"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Přejít na plochu"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Přejeďte po touchpadu třemi prsty nahoru"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Výborně!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Provedli jste gesto pro přechod na plochu"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Přejetím po touchpadu třemi prsty nahoru přejdete na plochu"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Zobrazit nedávné aplikace"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Přejeďte po touchpadu třemi prsty nahoru a podržte je"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Výborně!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Provedli jste gesto pro zobrazení nedávných aplikací."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Pokud chcete zobrazit poslední aplikace, přejeďte na touchpadu třemi prsty nahoru a podržte je"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Zobrazit všechny aplikace"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Stiskněte akční klávesu na klávesnici"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Výborně!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Provedli jste gesto k zobrazení všech aplikací"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Stisknutím akční klávesy na klávesnici zobrazíte všechny aplikace"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Výuková animace, kliknutím pozastavíte nebo obnovíte."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podsvícení klávesnice"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Úroveň %1$d z %2$d"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 4336a85..c168a30 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Konstant notifikation om skærmoptagelse"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Vil du optage din skærm?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Optag én app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Optag hele skærmen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Optag hele skærmen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Når du optager hele skærmen, bliver alt det, der vises på skærmen, optaget. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Når du optager en app, optages alt det, der vises eller afspilles i den pågældende app. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Optag skærm"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Forindstillingen kunne ikke opdateres"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forindstilling"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Valgt"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Værktøjer"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Livetekstning"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for notifikationer med lav prioritet"</string>
<string name="other" msgid="429768510980739978">"Andet"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjern felt"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"føj feltet til slutningen"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flyt felt"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tilføj felt"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flyt til <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Føj til lokation <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Positionen er ugyldig."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"vælge bruger"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Intet internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Åbn <xliff:g id="ID_1">%s</xliff:g>-indstillinger."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Rediger rækkefølgen af indstillinger."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu for afbryderknappen"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Side <xliff:g id="ID_1">%1$d</xliff:g> af <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Låseskærm"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(afbrudt)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Det var ikke muligt at skifte. Tryk for at prøve igen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Tilknyt en enhed"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Åbn appen for at caste denne session."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ukendt app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop med at caste"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Enheder, der er tilgængelige for lydudgang."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Gå til startsiden"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se seneste apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Udfør"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Prøv igen!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbage"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Stryg til venstre eller højre med tre fingre på touchpladen"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Sådan!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Du har udført bevægelsen for Gå tilbage."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Du kan gå tilbage ved at stryge til venstre eller højre med tre fingre på touchpladen"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Gå til startskærmen"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Stryg opad med tre fingre på touchpladen"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Flot!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Du har udført bevægelsen for at gå til startsiden"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Stryg opad med tre fingre på touchpladen for at gå til din startskærm"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Se seneste apps"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Stryg opad, og hold tre fingre på touchpladen"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Godt klaret!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du har udført bevægelsen for at se de seneste apps."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Du kan se nyligt brugte apps ved at stryge opad og holde tre fingre nede på touchpladen"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Se alle apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tryk på handlingstasten på dit tastatur"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Flot klaret!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Du har udført bevægelsen for at se alle apps"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Tryk på handlingstasten på dit tastatur for at se alle dine apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animation med vejledning. Klik for at sætte afspilningen på pause og genoptage den."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastaturets baggrundslys"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d af %2$d"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 6e8cffe..eaa849d 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Fortlaufende Benachrichtigung für eine Bildschirmaufzeichnung"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Bildschirm aufnehmen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Einzelne App aufnehmen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Gesamten Bildschirm aufnehmen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Gesamten Bildschirm aufnehmen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Wenn du den gesamten Bildschirm aufnimmst, ist in der Aufnahme alles zu sehen, was auf dem Bildschirm angezeigt wird. Sei also vorsichtig mit Informationen wie Passwörtern, Zahlungsdetails, Nachrichten, Fotos sowie Audio- und Videoinhalten."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Wenn du eine App aufnimmst, ist in der Aufnahme alles zu sehen, was in dieser App angezeigt oder abgespielt wird. Sei also vorsichtig mit Informationen wie Passwörtern, Zahlungsdetails, Nachrichten, Fotos sowie Audio- und Videoinhalten."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Bildschirm aufnehmen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Voreinstellung konnte nicht aktualisiert werden"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voreinstellung"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Ausgewählt"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Automatische Untertitel"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Notiz"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Symbole für Benachrichtigungen mit einer niedrigen Priorität anzeigen"</string>
<string name="other" msgid="429768510980739978">"Sonstiges"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Entfernen der Kachel"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"Hinzufügen der Kachel am Ende"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kachel verschieben"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Kachel hinzufügen"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Auf Position <xliff:g id="POSITION">%1$d</xliff:g> verschieben"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Zur Position <xliff:g id="POSITION">%1$d</xliff:g> hinzufügen"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position ist ungültig."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"Auswählen des Nutzers"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Kein Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Einstellungen für <xliff:g id="ID_1">%s</xliff:g> öffnen."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Reihenfolge der Einstellungen bearbeiten."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Ein-/Aus-Menü"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Seite <xliff:g id="ID_1">%1$d</xliff:g> von <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Sperrbildschirm"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(nicht verbunden)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Wechseln nicht möglich. Tippe, um es noch einmal zu versuchen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Gerät verbinden"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Öffne zum Streamen dieser Sitzung die App."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unbekannte App"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Streaming beenden"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Für die Audioausgabe verfügbare Geräte."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Zum Startbildschirm"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Letzte Apps aufrufen"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fertig"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Noch einmal versuchen"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zurück"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Wische mit drei Fingern auf dem Touchpad nach links oder rechts"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Sehr gut!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Du hast das Tutorial für die „Zurück“-Touch-Geste abgeschlossen."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Wenn du mit dem Touchpad zurückgehen möchtest, wische mit drei Fingern nach links oder rechts"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Startbildschirm"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Wische an einer beliebigen Stelle auf dem Touchpad mit drei Fingern nach oben"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Gut gemacht!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Du hast den Schritt für die „Startbildschirm“-Touch-Geste abgeschlossen"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Wenn du zum Startbildschirm gelangen möchtest, wische auf dem Touchpad mit drei Fingern nach oben"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Letzte Apps aufrufen"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Wische mit drei Fingern nach oben und halte das Touchpad gedrückt"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Gut gemacht!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du hast das Tutorial für die Touch-Geste zum Aufrufen der zuletzt verwendeten Apps abgeschlossen."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Wenn du zuletzt verwendete Apps aufrufen möchtest, wische mit drei Fingern nach oben und halte das Touchpad gedrückt"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Alle Apps anzeigen"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Drücke die Aktionstaste auf deiner Tastatur"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Perfekt!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Du hast das Tutorial für die Touch-Geste zum Aufrufen aller Apps abgeschlossen"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Drücke die Aktionstaste auf deiner Tastatur, um alle deine Apps aufzurufen"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animation während des Tutorials, zum Pausieren und Fortsetzen der Wiedergabe klicken."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastaturbeleuchtung"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d von %2$d"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 2182220..dab393cf 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ειδοποίηση σε εξέλιξη για μια περίοδο λειτουργίας εγγραφής οθόνης"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Να γίνει εγγραφή της οθόνης σας;"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Εγγραφή μίας εφαρμογής"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Εγγραφή ολόκληρης της οθόνης"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Εγγραφή ολόκληρης της οθόνης: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Όταν κάνετε εγγραφή ολόκληρης της οθόνη σας, καταγράφεται οτιδήποτε εμφανίζεται σε αυτήν. Επομένως, να είστε προσεκτικοί με τους κωδικούς πρόσβασης, τα στοιχεία πληρωμής, τα μηνύματα, τις φωτογραφίες, τον ήχο και το βίντεο."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Όταν κάνετε εγγραφή μιας εφαρμογής, καταγράφεται οτιδήποτε εμφανίζεται ή αναπαράγεται στη συγκεκριμένη εφαρμογή. Επομένως, να είστε προσεκτικοί με τους κωδικούς πρόσβασης, τα στοιχεία πληρωμής, τα μηνύματα, τις φωτογραφίες, τον ήχο και το βίντεο."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Εγγραφή οθόνης"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Δεν ήταν δυνατή η ενημέρωση της προεπιλογής"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Προεπιλογή"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Έχει επιλεγεί"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Εργαλεία"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Ζωντανοί υπότιτλοι"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Σημείωση"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Εμφάνιση εικονιδίων ειδοποιήσεων χαμηλής προτεραιότητας"</string>
<string name="other" msgid="429768510980739978">"Άλλο"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"κατάργηση πλακιδίου"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"προσθήκη πλακιδίου στο τέλος"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Μετακίνηση πλακιδίου"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Προσθήκη πλακιδίου"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Μετακίνηση στη θέση <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Προσθήκη στη θέση <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Μη έγκυρη θέση."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"επιλογή χρήστη"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Δεν υπάρχει σύνδεση στο διαδίκτυο"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Άνοιγμα ρυθμίσεων <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Επεξεργασία σειράς ρυθμίσεων."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Μενού λειτουργίας"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Σελίδα <xliff:g id="ID_1">%1$d</xliff:g> από <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Οθόνη κλειδώματος"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(αποσυνδέθηκε)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Δεν είναι δυνατή η εναλλαγή. Πατήστε για επανάληψη."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Σύνδεση συσκευής"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Για μετάδοση της περιόδου σύνδεσης, ανοίξτε την εφαρμογή."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Άγνωστη εφαρμογή"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Διακοπή μετάδοσης"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Διαθέσιμες συσκευές για έξοδο ήχου."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Αρχική"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Προβολή πρόσφατων εφαρμογών"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Τέλος"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Δοκιμάστε ξανά!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Επιστροφή"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Σύρετε προς τα αριστερά ή τα δεξιά με τρία δάχτυλα στην επιφάνεια αφής"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Ωραία!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ολοκληρώσατε την κίνηση επιστροφής."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Για επιστροφή με χρήση της επιφάνειας αφής, σύρετε προς τα αριστερά ή προς τα δεξιά με τρία δάχτυλα"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Αρχική"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Σύρετε προς τα επάνω με τρία δάχτυλα στην επιφάνεια αφής"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Μπράβο!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ολοκληρώσατε την κίνηση μετάβασης στην αρχική οθόνη"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Για μετάβαση στην αρχική οθόνη, σύρετε προς τα επάνω με τρία δάχτυλα στην επιφάνεια αφής"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Προβολή πρόσφατων εφαρμογών"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Σύρετε προς τα επάνω με τρία δάχτυλα στην επιφάνεια αφής και μην τα σηκώσετε"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Μπράβο!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Ολοκληρώσατε την κίνηση για την προβολή πρόσφατων εφαρμογών."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Για προβολή πρόσφατων εφαρμογών, σύρετε προς τα επάνω με τρία δάχτυλα και κρατήστε τα δάχτυλά σας στην επιφάνεια αφής"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Προβολή όλων των εφαρμογών"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Πατήστε το πλήκτρο ενέργειας στο πληκτρολόγιό σας"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Μπράβο!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Ολοκληρώσατε την κίνηση για την προβολή όλων των εφαρμογών"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Πατήστε το πλήκτρο ενέργειας στο πληκτρολόγιο, για να δείτε όλες τις εφαρμογές σας"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Κινούμενη εικόνα οδηγού, κάντε κλικ για παύση και συνέχιση της αναπαραγωγής."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Οπίσθιος φωτισμός πληκτρολογίου"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Επίπεδο %1$d από %2$d"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 779e3f6..efab948 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Record your screen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Record one app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Record entire screen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Record entire screen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"When you\'re recording your entire screen, anything displayed on your screen is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"When you\'re recording an app, anything displayed or played in that app is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Record screen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selected"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"add tile to end"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"add tile to the last position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Move tile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Add tile"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Add tile to desired position"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Move to <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Add to position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position invalid."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choose user"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"No Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Open <xliff:g id="ID_1">%s</xliff:g> settings."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit order of settings."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Edit order of Quick Settings."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Power menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lock screen"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(disconnected)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Can\'t switch. Tap to try again."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connect a device"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"To cast this session, please open the app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unknown app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop casting"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Available devices for audio output."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Go home"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Nice!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"You completed the go back gesture."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"To go back using your touchpad, swipe left or right using three fingers"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Go home"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swipe up with three fingers on your touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Well done!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"You completed the go home gesture"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swipe up with three fingers on your touchpad to go to your home screen"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"View recent apps"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Well done!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"You completed the view all apps gesture"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Press the action key on your keyboard to view all of your apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorial animation, click to pause and resume play."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 22916c3..8486688 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -111,8 +111,8 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Record your screen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Record one app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Record entire screen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Record entire screen: %s"</string>
+ <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="4882406311415082016">"Record this screen"</string>
+ <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="4169494703993148253">"Record %s"</string>
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"When you’re recording your entire screen, anything shown on your screen is recorded. So be careful with things like passwords, payment details, messages, photos, and audio and video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"When you’re recording an app, anything shown or played in that app is recorded. So be careful with things like passwords, payment details, messages, photos, and audio and video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Record screen"</string>
@@ -415,6 +415,13 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selected"</string>
+ <string name="hearing_devices_ambient_label" msgid="629440938614895797">"Surroundings"</string>
+ <string name="hearing_devices_ambient_control_left" msgid="3586965448230412600">"Left"</string>
+ <string name="hearing_devices_ambient_control_right" msgid="6192137602448918383">"Right"</string>
+ <string name="hearing_devices_ambient_expand_controls" msgid="2131816068187709200">"Expand to left and right separated controls"</string>
+ <string name="hearing_devices_ambient_collapse_controls" msgid="2261097656446201581">"Collapse to unified control"</string>
+ <string name="hearing_devices_ambient_mute" msgid="1836882837647429416">"Mute surroundings"</string>
+ <string name="hearing_devices_ambient_unmute" msgid="2187938085943876814">"Unmute surroundings"</string>
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +967,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"add tile to end"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"add tile to the last position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Move tile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Add tile"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Add tile to desired position"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Move to <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Add to position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position invalid."</string>
@@ -978,7 +985,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choose user"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"No internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Open <xliff:g id="ID_1">%s</xliff:g> settings."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit order of settings."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Edit order of Quick Settings."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Power menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lock screen"</string>
@@ -1209,7 +1216,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(disconnected)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Can\'t switch. Tap to try again."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connect a device"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"To cast this session, please open the app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unknown app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop casting"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Available devices for audio output."</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 779e3f6..efab948 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Record your screen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Record one app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Record entire screen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Record entire screen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"When you\'re recording your entire screen, anything displayed on your screen is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"When you\'re recording an app, anything displayed or played in that app is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Record screen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selected"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"add tile to end"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"add tile to the last position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Move tile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Add tile"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Add tile to desired position"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Move to <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Add to position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position invalid."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choose user"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"No Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Open <xliff:g id="ID_1">%s</xliff:g> settings."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit order of settings."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Edit order of Quick Settings."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Power menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lock screen"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(disconnected)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Can\'t switch. Tap to try again."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connect a device"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"To cast this session, please open the app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unknown app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop casting"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Available devices for audio output."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Go home"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Nice!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"You completed the go back gesture."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"To go back using your touchpad, swipe left or right using three fingers"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Go home"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swipe up with three fingers on your touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Well done!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"You completed the go home gesture"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swipe up with three fingers on your touchpad to go to your home screen"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"View recent apps"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Well done!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"You completed the view all apps gesture"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Press the action key on your keyboard to view all of your apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorial animation, click to pause and resume play."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 779e3f6..efab948 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Record your screen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Record one app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Record entire screen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Record entire screen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"When you\'re recording your entire screen, anything displayed on your screen is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"When you\'re recording an app, anything displayed or played in that app is recorded. So be careful with things like passwords, payment details, messages, photos, audio and video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Record screen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Couldn\'t update preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selected"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Show low-priority notification icons"</string>
<string name="other" msgid="429768510980739978">"Other"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remove tile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"add tile to end"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"add tile to the last position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Move tile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Add tile"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Add tile to desired position"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Move to <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Add to position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position invalid."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choose user"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"No Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Open <xliff:g id="ID_1">%s</xliff:g> settings."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit order of settings."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Edit order of Quick Settings."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Power menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lock screen"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(disconnected)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Can\'t switch. Tap to try again."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connect a device"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"To cast this session, please open the app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unknown app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop casting"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Available devices for audio output."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Go home"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Nice!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"You completed the go back gesture."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"To go back using your touchpad, swipe left or right using three fingers"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Go home"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swipe up with three fingers on your touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Well done!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"You completed the go home gesture"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swipe up with three fingers on your touchpad to go to your home screen"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"View recent apps"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Well done!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"You completed the view all apps gesture"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Press the action key on your keyboard to view all of your apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorial animation, click to pause and resume play."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Keyboard backlight"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 1f3aee8..e9786e3 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación constante para una sesión de grabación de pantalla"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"¿Quieres grabar la pantalla?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Grabar una app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Grabar toda la pantalla"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Grabar toda la pantalla: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Cuando grabes toda la pantalla, se grabará todo lo que se muestre en ella. Por lo tanto, debes tener cuidado con contraseñas, detalles de pagos, mensajes, fotos, audios y videos."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Cuando grabes una app, se grabará todo lo que se muestre o reproduzca en ella. Por lo tanto, debes tener cuidado con contraseñas, detalles de pagos, mensajes, fotos, audios y videos."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Grabar pantalla"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"No se pudo actualizar el ajuste predeterminado"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Ajuste predeterminado"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Seleccionado"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Herramientas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtitulado instantáneo"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar íconos de notificaciones con prioridad baja"</string>
<string name="other" msgid="429768510980739978">"Otros"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarjeta"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"agregar tarjeta al final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover la tarjeta"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Agregar tarjeta"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Agregar a la posición <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posición no válida"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"elegir usuario"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sin Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir configuración de <xliff:g id="ID_1">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editar orden de configuración"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menú de encendido"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Pantalla de bloqueo"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(desconectado)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"No se pudo conectar. Presiona para volver a intentarlo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectar un dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para transmitir esta sesión, abre la app"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconocida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Detener transmisión"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos disponibles para salida de audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ir a la página principal"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver apps recientes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Listo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Vuelve a intentarlo"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Desliza hacia la izquierda o la derecha con tres dedos en el panel táctil"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"¡Muy bien!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Completaste el gesto para ir atrás."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Para volver con el panel táctil, desliza tres dedos hacia la izquierda o la derecha"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ir a la página principal"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Desliza hacia arriba con tres dedos en el panel táctil"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"¡Bien hecho!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Completaste el gesto para ir a la página principal"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Desliza tres dedos hacia arriba en el panel táctil para ir a la pantalla principal"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ver apps recientes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Desliza hacia arriba con tres dedos en el panel táctil y mantenlos presionados"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"¡Bien hecho!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Completaste el gesto para ver las apps recientes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver las apps recientes, desliza tres dedos hacia arriba y mantenlos presionados en el panel táctil"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas las apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Presiona la tecla de acción en el teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"¡Bien hecho!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Completaste el gesto para ver todas las apps"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Presiona la tecla de acción en el teclado para ver todas las apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animación del instructivo. Haz clic para pausar y reanudar la reproducción."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación del teclado"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 8ae684a..9460874 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación continua de una sesión de grabación de la pantalla"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"¿Grabar la pantalla?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Grabar una aplicación"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Grabar toda la pantalla"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Grabar toda la pantalla: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Cuando grabas toda la pantalla, se graba todo lo que se muestre en ella. Debes tener cuidado con elementos como contraseñas, detalles de pagos, mensajes, fotos, audio y vídeo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Cuando grabas una aplicación, se graba todo lo que se muestre o reproduzca en ella. Debes tener cuidado con elementos como contraseñas, detalles de pagos, mensajes, fotos, audio y vídeo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Grabar pantalla"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"No se ha podido actualizar el preajuste"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preajuste"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Seleccionado"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Herramientas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtítulos automáticos"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconos de notificaciones con prioridad baja"</string>
<string name="other" msgid="429768510980739978">"Otros"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar recuadro"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"añadir recuadro al final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover recuadro"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Añadir recuadro"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Añadir a la posición <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posición no válida."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"elegir un usuario"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sin Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir ajustes de <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Cambiar el orden de los ajustes."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menú de encendido"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Pantalla de bloqueo"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(desconectado)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"No se puede cambiar. Toca para volver a intentarlo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectar un dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para enviar esta sesión, abre la aplicación."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicación desconocida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Dejar de enviar contenido"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos disponibles para la salida de audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ir a Inicio"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver aplicaciones recientes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hecho"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Vuelve a intentarlo."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Desliza hacia la izquierda o la derecha con tres dedos en el panel táctil"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"¡Genial!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Has completado el gesto para volver."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Para volver atrás usando el panel táctil, desliza tres dedos hacia la izquierda o la derecha"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ir a Inicio"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Desliza hacia arriba con tres dedos en el panel táctil"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"¡Bien hecho!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Has completado el gesto para ir a la pantalla de inicio"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Desliza tres dedos hacia arriba en el panel táctil para ir a la pantalla de inicio"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ver aplicaciones recientes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Desliza hacia arriba con tres dedos y mantén pulsado en el panel táctil"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"¡Bien hecho!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Has completado el gesto para ver las aplicaciones recientes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver las aplicaciones recientes, desliza tres dedos hacia arriba y mantén pulsado en el panel táctil"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas las aplicaciones"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pulsa la tecla de acción de tu teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"¡Muy bien!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Has completado el gesto para ver todas las aplicaciones"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pulsa la tecla de acción de tu teclado para ver todas tus aplicaciones"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animación del tutorial, haz clic para pausar y reanudar la reproducción."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación del teclado"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index e3e7263..3999042 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pooleli märguanne ekraanikuva salvestamise seansi puhul"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Kas salvestada ekraanikuvast video?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Ühe rakenduse salvestamine"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Kogu ekraanikuva salvestamine"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Kogu ekraanikuva salvestamine: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kui salvestate kogu ekraani, salvestatakse kõik ekraanil kuvatud andmed. Seega olge ettevaatlik selliste andmetega nagu paroolid, makseteave, sõnumid, fotod ning heli ja video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kui salvestate rakendust, salvestatakse kõik, mida selles rakenduses näidatakse või esitatakse. Seega olge ettevaatlik selliste andmetega nagu paroolid, makseteave, sõnumid, fotod ning heli ja video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Salvesta ekraanikuva"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Eelseadistust ei saanud värskendada"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Eelseadistus"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Valitud"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tööriistad"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Reaalajas subtiitrid"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Märkus"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Kuva madala prioriteediga märguande ikoonid"</string>
<string name="other" msgid="429768510980739978">"Muu"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"paani eemaldamiseks"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"paani lõppu lisamiseks"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Teisalda paan"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lisa paan"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Teisaldamine asendisse <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lisamine asendisse <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Sobimatu asukoht."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"valige kasutaja"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Interneti-ühendus puudub"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Ava teenuse <xliff:g id="ID_1">%s</xliff:g> seaded."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Muuda seadete järjestust."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Toitemenüü"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Leht <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lukustuskuva"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ühendus on katkestatud)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Ei saa lülitada. Puudutage uuesti proovimiseks."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Seadme ühendamine"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Selle seansi ülekandmiseks avage rakendus."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Tundmatu rakendus"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Lõpeta ülekanne"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Saadaolevad seadmed heli esitamiseks."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Avakuvale"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Hiljutiste rakenduste vaatamine"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Proovige uuesti!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tagasi"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pühkige puuteplaadil kolme sõrmega vasakule või paremale"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Tubli töö!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Tegite tagasiliikumise liigutuse."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Puuteplaadi abil tagasi liikumiseks pühkige kolme sõrmega vasakule või paremale"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Avakuvale"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Pühkige puuteplaadil kolme sõrmega üles"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Väga hea!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Tegite avakuvale minemise liigutuse"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Avakuvale liikumiseks pühkige puuteplaadil kolme sõrmega üles"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Hiljutiste rakenduste vaatamine"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Pühkige üles ja hoidke kolme sõrme puuteplaadil"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Väga hea!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Tegite hiljutiste rakenduste vaatamise liigutuse."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Hiljutiste rakenduste kuvamiseks pühkige puuteplaadil kolme sõrmega üles ja hoidke sõrmi puuteplaadil"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Kõigi rakenduste kuvamine"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Vajutage klaviatuuril toiminguklahvi"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Hästi tehtud!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Tegite kõigi rakenduste vaatamise liigutuse"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Kõigi oma rakenduste kuvamiseks vajutage klaviatuuril toiminguklahvi"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Õpetlik animatsioon, klõpsake esitamise peatamiseks ja jätkamiseks."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatuuri taustavalgustus"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tase %1$d/%2$d"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index e284597..88a46c1 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pantailaren grabaketa-saioaren jakinarazpen jarraitua"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Pantaila grabatu nahi duzu?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Grabatu aplikazio bat"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Grabatu pantaila osoa"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Grabatu pantaila osoa: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Pantaila osoa grabatzen ari zarenean, pantailan agertzen den guztia grabatzen da. Beraz, kontuz ibili pasahitzekin, ordainketen xehetasunekin, mezuekin, argazkiekin, audioekin eta bideoekin, besteak beste."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Aplikazio bat grabatzen ari zarenean, aplikazio horretan agertzen den edo bertan erreproduzitzen ari den guztia grabatzen da. Beraz, kontuz ibili pasahitzekin, ordainketen xehetasunekin, mezuekin, argazkiekin, audioekin eta bideoekin, besteak beste."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Grabatu pantaila"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ezin izan da eguneratu aurrezarpena"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Aurrezarpena"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Hautatuta"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tresnak"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Istanteko azpitituluak"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Oharra"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Erakutsi lehentasun txikiko jakinarazpenen ikonoak"</string>
<string name="other" msgid="429768510980739978">"Beste bat"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"kendu lauza"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"gehitu lauza amaieran"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mugitu lauza"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Gehitu lauza"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Eraman <xliff:g id="POSITION">%1$d</xliff:g>garren lekura"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Gehitu <xliff:g id="POSITION">%1$d</xliff:g>garren lekuan"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Kokapenak ez du balio."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"erabiltzailea aukeratzeko"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Ez dago Interneteko konexiorik"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Ireki <xliff:g id="ID_1">%s</xliff:g> ezarpenak."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editatu ezarpenen ordena."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Itzaltzeko menua"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> orria"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Pantaila blokeatua"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(deskonektatuta)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Ezin da aldatu. Berriro saiatzeko, sakatu hau."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Konektatu gailu bat"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Saioa ireki nahi baduzu, ireki aplikazioa."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikazio ezezaguna"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Gelditu igorpena"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Audio-irteerarako gailu erabilgarriak."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Joan orri nagusira"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ikusi azkenaldiko aplikazioak"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Eginda"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Saiatu berriro!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Egin atzera"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pasatu 3 hatz ezkerrera edo eskuinera ukipen-panelean"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Ederki!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ikasi duzu atzera egiteko keinua."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Ukipen-panelaren bidez atzera egiteko, pasatu 3 hatz ezkerrera edo eskuinera"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Joan orri nagusira"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Pasatu 3 hatz gora ukipen-panelean"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bikain!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ikasi duzu orri nagusira joateko keinua"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Orri nagusira joateko, pasatu 3 hatz gora ukipen-panelean"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ikusi azkenaldiko aplikazioak"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Pasatu 3 hatz gora eta eduki sakatuta ukipen-panelean"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bikain!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Osatu duzu azkenaldiko aplikazioak ikusteko keinua."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Azkenaldiko aplikazioak ikusteko, pasatu 3 hatz gora eta eduki sakatuta ukipen-panelean"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ikusi aplikazio guztiak"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Sakatu teklatuko ekintza-tekla"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bikain!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Osatu duzu aplikazio guztiak ikusteko keinua"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Sakatu teklatuko ekintza-tekla aplikazio guztiak ikusteko"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorialeko animazioa. Sakatu pausatzeko eta erreproduzitzeari berrekiteko."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Teklatuaren hondoko argia"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d/%2$d maila"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 0abbd26..5e851dc 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"اعلان درحال انجام برای جلسه ضبط صفحهنمایش"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"صفحهنمایش ضبط شود؟"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ضبط یک برنامه"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ضبط کل صفحهنمایش"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ضبط کردن کل صفحهنمایش: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"وقتی کل صفحهنمایش را ضبط میکنید، هر چیزی که در صفحهنمایش نشان داده شود ضبط خواهد شد. درنتیجه مراقب چیزهایی مثل گذرواژهها، جزئیات پرداخت، پیامها، عکسها، و صدا و تصویر باشید."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"وقتی برنامهای را ضبط میکنید، هر چیزی که در آن برنامه نشان داده شود یا پخش شود ضبط خواهد شد. درنتیجه مراقب چیزهایی مثل گذرواژهها، جزئیات پرداخت، پیامها، عکسها، و صدا و تصویر باشید."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ضبط صفحهنمایش"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"پیشتنظیم بهروزرسانی نشد"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"پیشتنظیم"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"انتخابشده"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ابزارها"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"زیرنویس زنده ناشنوایان"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"یادداشت"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"نمایش نمادهای اعلان کماهمیت"</string>
<string name="other" msgid="429768510980739978">"موارد دیگر"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"برداشتن کاشی"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"افزودن کاشی به انتها"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"انتقال کاشی"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"افزودن کاشی"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"انتقال به <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"افزودن به موقعیت <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"موقعیت نامعتبر است."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"انتخاب کاربر"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"عدم اتصال به اینترنت"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"باز کردن تنظیمات <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ویرایش ترتیب تنظیمات."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"منوی روشن/خاموش"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"صفحه <xliff:g id="ID_1">%1$d</xliff:g> از <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"صفحه قفل"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(اتصال قطع شد)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"عوض نمیشود. برای تلاش مجدد تکضرب بزنید."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"متصل کردن دستگاه"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"برای ارسال محتوای این جلسه، لطفاً برنامه را باز کنید."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"برنامه ناشناس"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"توقف پخش محتوا"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"دستگاههای دردسترس برای خروجی صوتی."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"رفتن به صفحه اصلی"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"مشاهده برنامههای اخیر"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تمام"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"دوباره امتحان کنید!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"برگشتن"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"با سه انگشت روی صفحه لمسی تند به چپ یا راست بکشید."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"چه خوب!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"اشاره برگشت را تکمیل کردید."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"برای برگشتن بااستفاده از صفحه لمسی، با سه انگشت تند بهچپ یا راست بکشید"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"رفتن به صفحه اصلی"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"با سه انگشت روی صفحه لمسی تند به بالا بکشید"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"عالی است!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"اشاره رفتن به صفحه اصلی را تکمیل کردید"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"برای رفتن به صفحه اصلی، با سه انگشت تند بهبالا بکشید"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"مشاهده برنامههای اخیر"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"با سه انگشت روی صفحه لمسی تند به بالا بکشید و نگه دارید"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"عالی است!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"اشاره «مشاهده برنامههای اخیر» را تمام کردید"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"برای مشاهده برنامههای اخیر، با سه انگشت روی صفحه لمسی تند بهبالا بکشید و نگه دارید"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"مشاهده همه برنامهها"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"دکمه کنش را روی صفحه لمسی فشار دهید"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"عالی بود!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"اشاره «مشاهده همه برنامهها» را تمام کردید"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"برای مشاهده همه برنامهها، دکمه کنش را روی صفحهکلید فشار دهید"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"پویانمایی آموزش گامبهگام، برای توقف موقت و ازسرگیری پخش کلیک کنید."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"نور پسزمینه صفحهکلید"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"سطح %1$d از %2$d"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 03d1441..b257a89 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pysyvä ilmoitus näytön tallentamisesta"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Tallennetaanko näytön toimintaa?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Tallenna yhdestä sovelluksesta"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Tallenna koko näyttö"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Tallenna koko näyttö: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kun tallennat koko näyttöä, kaikki näytöllä näkyvä sisältö tallennetaan. Ole siis varovainen, kun lisäät salasanoja, maksutietoja, viestejä, kuvia, audiota tai videoita."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kun tallennat sovellusta, kaikki sovelluksessa näkyvä tai toistettu sisältö tallennetaan. Ole siis varovainen, kun lisäät salasanoja, maksutietoja, viestejä, kuvia, audiota tai videoita."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Tallenna näyttö"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Esiasetusta ei voitu muuttaa"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Esiasetus"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Valittu"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Työkalut"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Livetekstitys"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Muistiinpano"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Näytä vähemmän tärkeät ilmoituskuvakkeet"</string>
<string name="other" msgid="429768510980739978">"Muu"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"poista kiekko"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"lisää kiekko loppuun"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Siirrä kiekkoa"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lisää kiekko"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Siirrä paikkaan <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lisää paikkaan <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Virheellinen sijainti."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"valitse käyttäjä"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Ei internetyhteyttä"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Avaa kohteen <xliff:g id="ID_1">%s</xliff:g> asetukset."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Muokkaa asetusten järjestystä."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Virtavalikko"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Sivu <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lukitusnäyttö"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(yhteys katkaistu)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Vaihtaminen ei onnistunut. Yritä uudelleen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Yhdistä laite"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Jos haluat striimata tämän käyttökerran, avaa sovellus."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Tuntematon sovellus"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Lopeta striimaus"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Käytettävissä olevat audiolaitteet"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Siirry etusivulle"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Katso viimeisimmät sovellukset"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Yritä uudelleen."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Takaisin"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pyyhkäise kosketuslevyllä vasemmalle tai oikealle kolmella sormella"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Hienoa!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Olet oppinut Takaisin-eleen."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Jos haluat palata takaisin kosketuslevyn avulla, pyyhkäise vasemmalle tai oikealle kolmella sormella"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Siirry etusivulle"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Pyyhkäise ylös kolmella sormella kosketuslevyllä"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Hienoa!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Olet oppinut eleen, jolla pääset takaisin aloitusnäytölle"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Siirry aloitusnäytölle pyyhkäisemällä kosketuslevyll\' ylös kolmella sormella"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Katso viimeisimmät sovellukset"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Pyyhkäise ylös ja pidä kosketuslevyä painettuna kolmella sormella"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Hienoa!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Olet oppinut Katso viimeisimmät sovellukset ‑eleen."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Näet äskeiset sovellukset, kun pyyhkäiset ylös ja pidät kosketuslevyä painettuna kolmella sormella."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Näytä kaikki sovellukset"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Paina näppäimistön toimintonäppäintä"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Hienoa!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Olet oppinut Näytä kaikki sovellukset ‑eleen."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Katso kaikki sovellukset painamalla näppäimistön toimintonäppäintä"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Ohjeanimaatio, klikkaa keskeyttääksesi ja jatkaaksesi."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Näppämistön taustavalo"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Taso %1$d/%2$d"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index f55fb00..8481f0fb 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notification en cours pour une session d\'enregistrement d\'écran"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Enregistrer votre écran?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Enregistrer une appli"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Enregistrer l\'écran entier"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Enregistrer tout l\'écran : %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Lorsque vous enregistrez l\'intégralité de votre écran, tout ce qui s\'affiche sur votre écran est enregistré. Par conséquent, soyez prudent avec les mots de passe, les détails du mode de paiement, les messages, les photos et les contenus audio et vidéo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Lorsque vous enregistrez une appli, tout ce qui est affiché ou lu dans cette appli est enregistré. Par conséquent, soyez prudent avec les mots de passe, les détails du mode de paiement, les messages, les photos et les contenus audio et vidéo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Enregistrer l\'écran"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossible de mettre à jour le préréglage"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Préréglage"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Sélectionné"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Outils"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Sous-titres instantanés"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Afficher les icônes de notification de faible priorité"</string>
<string name="other" msgid="429768510980739978">"Autre"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"retirer la tuile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ajouter la tuile à la fin"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Déplacer la tuile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ajouter la tuile"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Déplacer vers <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ajouter à la position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Position incorrecte."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choisir un utilisateur"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Aucune connexion Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Ouvrir les paramètres <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Modifier l\'ordre des paramètres."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu de l\'interrupteur"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Écran de verrouillage"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(déconnecté)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Changement impossible. Touchez pour réessayer."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connecter un appareil"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pour diffuser cette session, veuillez ouvrir l\'appli."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Appli inconnue"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Arrêter la diffusion"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Appareils disponibles pour la sortie audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Retour à la page d\'accueil"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Afficher les applis récentes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Réessayez!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Retour"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Balayez votre pavé tactile vers la gauche ou vers la droite avec trois doigts"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bien!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Vous avez appris le geste de retour en arrière."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Pour revenir en arrière à l\'aide de votre pavé tactile, balayez vers la gauche ou vers la droite avec trois doigts"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Retour à la page d\'accueil"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Balayez votre pavé tactile vers le haut avec trois doigts"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bon travail!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Vous avez appris le geste pour revenir à l\'écran d\'accueil"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Pour accéder à votre écran d\'accueil, balayez votre pavé tactile vers le haut avec trois doigts"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Afficher les applis récentes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Balayez votre pavé tactile vers le haut avec trois doigts, puis maintenez-les en place"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bon travail!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Vous avez effectué le geste pour afficher les applis récentes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Pour afficher vos applis récentes, balayez votre pavé tactile vers le haut avec trois doigts et maintenez-les en place"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Afficher toutes les applis"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Appuyez sur la touche d\'action de votre clavier"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Félicitations!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Vous avez appris le geste pour afficher toutes les applis"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Appuyez sur la touche d\'action de votre clavier pour afficher toutes vos applis"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animation du tutoriel; cliquer ici pour mettre en pause et reprendre la lecture."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Rétroéclairage du clavier"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
index 782c055..ffacde2 100644
--- a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
@@ -73,7 +73,7 @@
</string-array>
<string-array name="tile_states_airplane">
<item msgid="1985366811411407764">"Non disponible"</item>
- <item msgid="4801037224991420996">"Désactivée"</item>
+ <item msgid="4801037224991420996">"Désactivé"</item>
<item msgid="1982293347302546665">"Activé"</item>
</string-array>
<string-array name="tile_states_location">
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 138cfc9..80f9cd9 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notification en cours pour une session d\'enregistrement de l\'écran"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Enregistrer l\'écran ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Enregistrer une appli"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Enregistrer tout l\'écran"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Enregistrer tout l\'écran : %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Lorsque vous enregistrez l\'intégralité de votre écran, tout ce qui s\'y affiche est enregistré. Faites donc attention aux éléments tels que les mots de passe, les détails de mode de paiement, les messages, les photos, et les contenus audio et vidéo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Lorsque vous enregistrez une appli, tout ce qui est affiché ou lu dans celle-ci est enregistré. Faites donc attention aux éléments tels que les mots de passe, détails de mode de paiement, messages, photos et contenus audio et vidéo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Enregistrer l\'écran"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossible de mettre à jour les préréglages"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Préréglage"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Sélectionné"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Outils"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Sous-titres instantanés"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Note"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Afficher les icônes de notification à faible priorité"</string>
<string name="other" msgid="429768510980739978">"Autre"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"supprimer le bloc"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ajouter le bloc à la fin"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ajouter le bloc à la dernière position"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Déplacer le bloc"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ajouter un bloc"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Ajouter le bloc à la position souhaitée"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Déplacer vers <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ajouter à la position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Emplacement non valide."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"choisir un utilisateur"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Aucun accès à Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Ouvrir les paramètres <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Modifier l\'ordre des paramètres."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Modifier l\'ordre des Réglages rapides."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu Marche/Arrêt"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Écran de verrouillage"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(déconnecté)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Impossible de changer. Appuyez pour réessayer."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connecter un appareil"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pour caster cette session, veuillez ouvrir l\'appli."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Appli inconnue"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Arrêter la diffusion"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Appareils disponibles pour la sortie audio."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Retour à l\'accueil"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Afficher les applis récentes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Essayez encore."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Retour"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Balayez vers la gauche ou la droite avec trois doigts sur le pavé tactile"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bravo !"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Vous avez appris le geste pour revenir en arrière"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Pour revenir en arrière à l\'aide du pavé tactile, balayez vers la gauche ou la droite avec trois doigts"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Retour à l\'accueil"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Balayez vers le haut avec trois doigts sur le pavé tactile"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bravo !"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Vous avez appris le geste pour revenir à l\'écran d\'accueil"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Balayez vers le haut avec trois doigts sur le pavé tactile pour accéder à l\'écran d\'accueil"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Afficher les applis récentes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Avec trois doigts, balayez le pavé tactile vers le haut et maintenez la position"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bravo !"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Vous avez appris le geste pour afficher les applis récentes"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Pour afficher les applis récentes, balayez le pavé tactile vers le haut avec trois doigts et maintenez la position"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Afficher toutes les applications"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Appuyez sur la touche d\'action de votre clavier"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bravo !"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Vous avez appris le geste pour afficher toutes les applis"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Appuyez sur la touche d\'action de votre clavier pour afficher toutes vos applis"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animation du tutoriel, cliquez pour mettre en pause et reprendre la lecture."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Rétroéclairage du clavier"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d sur %2$d"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index d04d043..4837954 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación de actividade en curso sobre unha sesión de gravación de pantalla"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Queres gravar a túa pantalla?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Gravar unha aplicación"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Gravar pantalla completa"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Gravar pantalla completa: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Cando gravas a pantalla completa, recóllese todo o que se mostra nela. Recomendámosche que teñas coidado con determinada información, como os contrasinais, os detalles de pago, as mensaxes e as fotos, así como co contido de audio e de vídeo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Cando gravas unha aplicación, recóllese todo o que se mostra ou reproduce nela. Recomendámosche que teñas coidado con determinada información, como os contrasinais, os detalles de pago, as mensaxes e as fotos, así como co contido de audio e de vídeo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Gravar pantalla"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Non se puido actualizar a configuración predeterminada"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Configuración predeterminada"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Elemento seleccionado"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Ferramentas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtítulos instantáneos"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconas das notificacións que teñan baixa prioridade"</string>
<string name="other" msgid="429768510980739978">"Outros"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarxeta"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"engadir tarxeta ao final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover tarxeta"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Engadir tarxeta"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Engadir á posición <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posición non válida."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"escoller usuario"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Non hai conexión a Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir configuración de <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editar a orde das opcións de configuración."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menú de acendido"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Páxina <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Pantalla de bloqueo"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(desconectado)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Non se puido realizar o cambio. Toca para tentalo de novo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectar un dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para emitir esta sesión, abre a aplicación."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicación descoñecida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Deter emisión"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos dispoñibles para a saída de audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ir ao inicio"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Consultar aplicacións recentes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Feito"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Téntao de novo."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Volver"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pasa tres dedos cara á esquerda ou cara á dereita no panel táctil"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Excelente!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Completaches o titorial do xesto de retroceso."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Para retroceder usando o panel táctil, pasa tres dedos cara á esquerda ou cara á dereita"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ir ao inicio"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Pasa tres dedos cara arriba no panel táctil"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Ben feito!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Completaches o titorial do xesto para ir á pantalla de inicio"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Pasa tres dedos cara arriba no panel táctil para ir á pantalla de inicio"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Consultar aplicacións recentes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Pasa tres dedos cara arriba e mantenos premidos no panel táctil"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Moi ben!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Completaches o titorial do xesto de consultar aplicacións recentes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver as aplicacións recentes, pasa tres dedos cara arriba e mantenos premidos no panel táctil"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas as aplicacións"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Preme a tecla de acción do teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Ben feito!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Completaches o titorial do xesto de ver todas as aplicacións"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Preme a tecla de acción do teclado para ver todas as aplicacións"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animación do titorial, fai clic para poñelo en pausa ou retomar a reprodución."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroiluminación do teclado"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 327753d..ceefccc 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"સ્ક્રીન રેકોર્ડિંગ સત્ર માટે ચાલુ નોટિફિકેશન"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"તમારી સ્ક્રીન રેકોર્ડ કરીએ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"એક ઍપ રેકોર્ડ કરો"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"પૂર્ણ સ્ક્રીન રેકોર્ડ કરો"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"પૂરી સ્ક્રીન રેકોર્ડ કરો: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"જ્યારે તમે તમારી પૂર્ણ સ્ક્રીન રેકોર્ડ કરી રહ્યાં હો, ત્યારે તમારી સ્ક્રીન પર બતાવવામાં આવતી હોય તેવી બધી વસ્તુ રેકોર્ડ કરવામાં આવે છે. તેથી પાસવર્ડ, ચુકવણીની વિગતો, મેસેજ, ફોટા અને ડિવાઇસ પર વાગી રહેલા ઑડિયો તથા વીડિયો જેવી બાબતોને લઈને સાવચેત રહો."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"જ્યારે તમે કોઈ ઍપને રેકોર્ડ કરી રહ્યાં હો, ત્યારે એ ઍપમાં બતાવવામાં કે ચલાવવામાં આવતી હોય તેવી બધી વસ્તુ રેકોર્ડ કરવામાં આવે છે. તેથી પાસવર્ડ, ચુકવણીની વિગતો, મેસેજ, ફોટા અને ડિવાઇસ પર વાગી રહેલા ઑડિયો તથા વીડિયો જેવી બાબતોને લઈને સાવચેત રહો."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"સ્ક્રીન રેકોર્ડ કરો"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"પ્રીસેટ અપડેટ કરી શક્યા નથી"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"પ્રીસેટ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"પસંદ કરી છે"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ટૂલ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"લાઇવ કૅપ્શન"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"નોંધ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"ઓછી પ્રાધાન્યતાનું નોટિફિકેશન આઇકન બતાવો"</string>
<string name="other" msgid="429768510980739978">"અન્ય"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ટાઇલ કાઢી નાખો"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ટાઇલને અંતે ઉમેરો"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ટાઇલ ખસેડો"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ટાઇલ ઉમેરો"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> પર ખસેડો"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"જગ્યા પર <xliff:g id="POSITION">%1$d</xliff:g> ઉમેરો"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"સ્થિતિ અમાન્ય છે."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"વપરાશકર્તા પસંદ કરો"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"કોઈ ઇન્ટરનેટ નથી"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> સેટિંગ ખોલો."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"સેટિંગના ક્રમમાં ફેરફાર કરો."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"પાવર મેનૂ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> માંથી <xliff:g id="ID_1">%1$d</xliff:g> પૃષ્ઠ"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"લૉક સ્ક્રીન"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ડિસ્કનેક્ટ કરેલું)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"સ્વિચ કરી શકતા નથી. ફરી પ્રયાસ કરવા માટે ટૅપ કરો."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ડિવાઇસ કનેક્ટ કરો"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"આ સત્ર કાસ્ટ કરવા માટે, કૃપા કરીને ઍપ ખોલો."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"અજાણી ઍપ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"કાસ્ટ કરવાનું રોકો"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ઑડિયો આઉટપુટ માટે ઉપલબ્ધ ડિવાઇસ."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"હોમ પર જાઓ"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"તાજેતરની ઍપ જુઓ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"થઈ ગયું"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"ફરી પ્રયાસ કરો!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"પાછા જાઓ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"તમારા ટચપૅડ પર ત્રણ આંગળીનો ઉપયોગ કરીને ડાબે કે જમણે સ્વાઇપ કરો"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"સરસ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"તમે પાછા જવાનો સંકેત પૂર્ણ કર્યો છે."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"તમારા ટચપૅડ વડે પાછા જવા માટે, ત્રણ આંગળીનો ઉપયોગ કરીને ડાબે કે જમણે સ્વાઇપ કરો"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"હોમ પર જાઓ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"તમારા ટચપૅડ પર ત્રણ આંગળી વડે ઉપરની તરફ સ્વાઇપ કરો"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"ખૂબ સરસ કામ!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"તમે હોમ સ્ક્રીન પર જવાનો સંકેત પૂર્ણ કર્યો"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"તમારી હોમ સ્ક્રીન પર જવા માટે, તમારા ટચપૅડ પર ત્રણ આંગળી વડે ઉપરની તરફ સ્વાઇપ કરો"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"તાજેતરની ઍપ જુઓ"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"તમારા ટચપૅડ પર ત્રણ આંગળીઓનો ઉપયોગ કરીને ઉપર સ્વાઇપ કરો અને દબાવી રાખો"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"ખૂબ સરસ કામ!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"તમે \'તાજેતરની ઍપ જુઓ\' સંકેત પૂર્ણ કર્યો."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"તાજેતરની ઍપ જોવા માટે, તમારા ટચપૅડ પર ત્રણ આંગળી વડે ઉપરની તરફ સ્વાઇપ કરો અને દબાવી રાખો"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"બધી ઍપ જુઓ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"તમારા કીબોર્ડ પરની ઍક્શન કી દબાવો"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"વાહ!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"તમે \'બધી ઍપ જુઓ\' સંકેત પૂર્ણ કર્યો"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"તમારી બધી ઍપ જોવા માટે તમારા કીબોર્ડ પરની ઍક્શન કી દબાવો"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ટ્યૂટૉરિઅલ ઍનિમેશન થોભાવવાનું અને ચલાવવાનું ફરી શરૂ કરવા માટે ક્લિક કરો."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"કીબોર્ડની બૅકલાઇટ"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dમાંથી %1$d લેવલ"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 1d3280c..91e17df 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रिकॉर्ड सेशन के लिए जारी सूचना"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"क्या आपको स्क्रीन को रिकॉर्ड करना है?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"एक ऐप्लिकेशन रिकॉर्ड करें"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"पूरी स्क्रीन रिकॉर्ड करें"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"पूरी स्क्रीन रिकॉर्ड करें: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"पूरी स्क्रीन रिकॉर्ड करते समय, स्क्रीन पर दिखने वाली हर चीज़ रिकॉर्ड की जाती है. इसलिए पासवर्ड, पेमेंट के तरीके की जानकारी, मैसेज, डिवाइस पर चल रहे ऑडियो और वीडियो, और फ़ोटो जैसी चीज़ों को लेकर सावधानी बरतें."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"किसी ऐप्लिकेशन को रिकॉर्ड करने के दौरान, उस पर दिख रहा कॉन्टेंट या चल रहा मीडिया भी रिकॉर्ड होता है. इसलिए, रिकॉर्ड करते समय पासवर्ड, पेमेंट के तरीके की जानकारी, मैसेज, फ़ोटो, ऑडियो, और वीडियो को लेकर सावधानी बरतें."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"स्क्रीन रिकॉर्ड करें"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रीसेट अपडेट नहीं किया जा सका"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"प्रीसेट"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"चुना गया"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"टूल"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"लाइव कैप्शन"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"नोट"</string>
@@ -753,20 +769,13 @@
<string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"सैटलाइट कनेक्शन उपलब्ध है"</string>
<string name="satellite_connected_carrier_text" msgid="118524195198532589">"सैटलाइट एसओएस"</string>
<string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"आपातकालीन कॉल या एसओएस"</string>
- <!-- no translation found for accessibility_phone_string_format (7798841417881811812) -->
- <skip />
- <!-- no translation found for accessibility_no_signal (7052827511409250167) -->
- <skip />
- <!-- no translation found for accessibility_one_bar (5342012847647834506) -->
- <skip />
- <!-- no translation found for accessibility_two_bars (122628483354508429) -->
- <skip />
- <!-- no translation found for accessibility_three_bars (5143286602926069024) -->
- <skip />
- <!-- no translation found for accessibility_four_bars (8838495563822541844) -->
- <skip />
- <!-- no translation found for accessibility_signal_full (1519655809806462972) -->
- <skip />
+ <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string>
+ <string name="accessibility_no_signal" msgid="7052827511409250167">"सिग्नल नहीं है"</string>
+ <string name="accessibility_one_bar" msgid="5342012847647834506">"एक सिग्नल बार"</string>
+ <string name="accessibility_two_bars" msgid="122628483354508429">"दो सिग्नल बार"</string>
+ <string name="accessibility_three_bars" msgid="5143286602926069024">"तीन सिग्नल बार"</string>
+ <string name="accessibility_four_bars" msgid="8838495563822541844">"चार सिग्नल बार"</string>
+ <string name="accessibility_signal_full" msgid="1519655809806462972">"सिग्नल पूरे हैं"</string>
<string name="accessibility_managed_profile" msgid="4703836746209377356">"वर्क प्रोफ़ाइल"</string>
<string name="tuner_warning_title" msgid="7721976098452135267">"कुछ के लिए मज़ेदार लेकिन सबके लिए नहीं"</string>
<string name="tuner_warning" msgid="1861736288458481650">"सिस्टम यूज़र इंटरफ़ेस (यूआई) ट्यूनर, आपको Android यूज़र इंटरफ़ेस में सुधार लाने और उसे अपनी पसंद के हिसाब से बदलने के कुछ और तरीके देता है. प्रयोग के तौर पर इस्तेमाल हो रहीं ये सुविधाएं आगे चल कर रिलीज़ की जा सकती हैं, रोकी जा सकती हैं या दिखाई देना बंद हो सकती हैं. सावधानी से आगे बढ़ें."</string>
@@ -967,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"कम प्राथमिकता वाली सूचना के आइकॉन दिखाएं"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल हटाएं"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"टाइल को आखिरी पोज़िशन पर जोड़ें"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल को किसी और पोज़िशन पर ले जाएं"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"टाइल जोड़ें"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"टाइल को <xliff:g id="POSITION">%1$d</xliff:g> पोज़िशन पर ले जाएं"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"टाइल को <xliff:g id="POSITION">%1$d</xliff:g> पोज़िशन पर जोड़ें"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"मौजूदा जगह अमान्य है."</string>
@@ -985,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"उपयोगकर्ता चुनें"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"इंटरनेट कनेक्शन नहीं है"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> सेटिंग खोलें."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"सेटिंग के क्रम को बदलें"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"पावर मेन्यू"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"पेज <xliff:g id="ID_2">%2$d</xliff:g> में से <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"लॉक स्क्रीन"</string>
@@ -1216,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(डिसकनेक्ट हो गया)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"स्विच नहीं किया जा सकता. फिर से कोशिश करने के लिए टैप करें."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"कोई डिवाइस कनेक्ट करें"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"इस सेशन को कास्ट करने के लिए, कृपया ऐप्लिकेशन खोलें."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अनजान ऐप्लिकेशन"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्ट करना बंद करें"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ऑडियो आउटपुट के लिए उपलब्ध डिवाइस."</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 6fc209fb..0696dbf 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Tekuća obavijest za sesiju snimanja zaslona"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Želite li snimati zaslon?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Snimanje jedne aplikacije"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Snimanje cijelog zaslona"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Snimanje cijelog zaslona: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kad snimate cijeli zaslon, snima se sve što se prikazuje na zaslonu. Stoga pazite na stvari kao što su zaporke, podaci o plaćanju, poruke, fotografije te audio i videozapisi."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kad snimate aplikaciju, snima se sve što se prikazuje ili reproducira u toj aplikaciji. Stoga pazite na stvari kao što su zaporke, podaci o plaćanju, poruke, fotografije te audio i videozapisi."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Snimanje zaslona"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ažuriranje unaprijed definiranih postavki nije uspjelo"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Unaprijed definirana postavka"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Odabrano"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alati"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Automatski titlovi"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Napomena"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavijesti niskog prioriteta"</string>
<string name="other" msgid="429768510980739978">"Ostalo"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodavanje kartice na kraj"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodavanje kartice na posljednji položaj"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premještanje kartice"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodavanje kartice"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Dodajte karticu na željeni položaj"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premještanje u prostoriju <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodavanje na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Položaj nije važeći."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"odaberi korisnika"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nema interneta"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otvaranje postavki za <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Uređivanje redoslijeda postavki."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Uredite redoslijed brzih postavki."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Izbornik tipke za uključivanje/isključivanje"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Stranica <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Zaključani zaslon"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(nije povezano)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nije prebačeno. Dodirnite da biste pokušali ponovo."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Povežite uređaj"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da biste emitirali ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi emitiranje"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostupni uređaji za audioizlaz."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Na početni zaslon"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Pregled nedavnih aplikacija"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Pokušajte ponovno!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Natrag"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Prijeđite ulijevo ili udesno trima prstima na dodirnoj podlozi"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Odlično!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Napravili ste pokret za povratak."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Da biste se vratili pomoću dodirne podloge, prijeđite trima prstima ulijevo ili udesno"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Na početnu stranicu"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Prijeđite prema gore trima prstima na dodirnoj podlozi"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Sjajno!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Napravili ste pokret za otvaranje početnog zaslona"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Da biste otvorili početni zaslon, prijeđite trima prstima prema gore na dodirnoj podlozi"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Pregled nedavnih aplikacija"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Prijeđite prema gore trima prstima na dodirnoj podlozi i zadržite pritisak"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Sjajno!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Napravili ste pokret za prikaz nedavno korištenih aplikacija."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Za prikaz nedavnih aplikacija prijeđite trima prstima prema gore na dodirnoj podlozi i zadržite pritisak"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Prikaži sve aplikacije"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pritisnite tipku za radnju na tipkovnici"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Izvrsno!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Napravili ste pokret za prikaz svih aplikacija"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pritisnite tipku za radnju na tipkovnici za prikaz svih aplikacija"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacija u vodiču, kliknite za pauziranje i nastavak reprodukcije."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Pozadinsko osvjetljenje tipkovnice"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Razina %1$d od %2$d"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 669d596..d2f6e8fc 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Folyamatban lévő értesítés képernyőrögzítési munkamenethez"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Rögzíti a képernyőt?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Egyetlen alkalmazás rögzítése"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Teljes képernyő rögzítése"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Teljes képernyő rögzítése: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"A teljes képernyő rögzítése esetén a képernyőn megjelenő minden tartalom rögzítésre kerül. Ezért legyen elővigyázatos a jelszavakkal, a fizetési adatokkal, az üzenetekkel, a fotókkal, valamint a hang- és videófelvételekkel."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Alkalmazás rögzítésekor az adott alkalmazásban megjelenített vagy lejátszott minden tartalom rögzítésre kerül. Ezért legyen elővigyázatos a jelszavakkal, a fizetési adatokkal, az üzenetekkel, a fotókkal, valamint a hang- és videófelvételekkel."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Képernyő rögzítése"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Nem sikerült frissíteni a beállításkészletet"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Beállításkészlet"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Kiválasztva"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Eszközök"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Élő feliratozás"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Megjegyzés"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Alacsony prioritású értesítési ikonok mutatása"</string>
<string name="other" msgid="429768510980739978">"Egyéb"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"mozaik eltávolításához"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"mozaiknak a végéhez való hozzáadásához"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mozaik áthelyezése"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Mozaik hozzáadása"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Áthelyezés ide: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Hozzáadás a következő pozícióhoz: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Érvénytelen pozíció."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"felhasználó kiválasztása"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nincs internetkapcsolat"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"A(z) <xliff:g id="ID_1">%s</xliff:g> beállításainak megnyitása."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Beállítások sorrendjének szerkesztése."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Bekapcsológombhoz tartozó menü"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>. oldal, összesen: <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lezárási képernyő"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(leválasztva)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"A váltás nem sikerült. Próbálja újra."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Eszköz csatlakoztatása"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"A munkamenet átküldéséhez nyissa meg az alkalmazást."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ismeretlen alkalmazás"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Átküldés leállítása"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Rendelkezésre álló eszközök a hangkimenethez."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ugrás a főoldalra"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Legutóbbi alkalmazások megtekintése"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kész"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Próbálja újra"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Vissza"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Csúsztassa gyorsan három ujját balra vagy jobbra az érintőpadon."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Remek!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Teljesítette a visszalépési kézmozdulatot."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Ha az érintőpadot használva szeretne visszalépni, csúsztasson gyorsan három ujjal balra vagy jobbra."</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ugrás a főoldalra"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Csúsztasson gyorsan felfelé három ujjával az érintőpadon."</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Kiváló!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Teljesítette a kezdőképernyőre lépés kézmozdulatát."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"A kezdőképernyőre való ugráshoz csúsztasson gyorsan három ujjal felfelé az érintőpadon."</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Legutóbbi alkalmazások megtekintése"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Csúsztasson gyorsan felfelé három ujjal az érintőpadon, és tartsa rajta lenyomva az ujjait."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Kiváló!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Teljesítette a legutóbbi alkalmazások megtekintésének kézmozdulatát."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"A legutóbbi appokért csúsztasson gyorsan három ujjal felfelé az érintőpadon, és tartsa lenyomva ujjait."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Összes alkalmazás megtekintése"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Nyomja meg a műveletbillentyűt az érintőpadon."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Szép munka!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Teljesítette az összes alkalmazás megtekintésének kézmozdulatát."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Az összes alkalmazás megtekintéséhez nyomja meg a billentyűzeten a műveletbillentyűt."</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Útmutató animáció. Kattintson a szüneteltetéshez és a lejátszás folytatásához."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"A billentyűzet háttérvilágítása"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Fényerő: %2$d/%1$d"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 095c2ad..f65f604 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Էկրանի տեսագրման աշխատաշրջանի ընթացիկ ծանուցում"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Տեսագրե՞լ ձեր էկրանը"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Տեսագրել մեկ հավելված"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Տեսագրել ամբողջ էկրանը"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Տեսագրել ամբողջ էկրանը՝ %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Երբ դուք տեսագրում եք ամբողջ էկրանը, էկրանին ցուցադրվող ամեն ինչ տեսագրվում է։ Ուստի ուշադիր եղեք այնպիսի բաների հետ, ինչպիսիք են գաղտնաբառերը, վճարային տվյալները, հաղորդագրությունները, լուսանկարները, աուդիո և վիդեո բովանդակությունը։"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Երբ դուք որևէ հավելված եք տեսագրում, հավելվածում ցուցադրվող կամ նվագարկվող ամեն ինչ տեսագրվում է։ Ուստի ուշադիր եղեք այնպիսի բաների հետ, ինչպիսիք են գաղտնաբառերը, վճարային տվյալները, հաղորդագրությունները, լուսանկարները, աուդիո և վիդեո բովանդակությունը։"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Տեսագրել էկրանը"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Չհաջողվեց թարմացնել կարգավորումների հավաքածուն"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Կարգավորումների հավաքածու"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Ընտրված է"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Գործիքներ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Կենդանի ենթագրեր"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Նշում"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Ցուցադրել ցածր առաջնահերթության ծանուցումների պատկերակները"</string>
<string name="other" msgid="429768510980739978">"Այլ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"հեռացնել սալիկը"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ավելացնել սալիկը վերջում"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Տեղափոխել սալիկը"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ավելացնել սալիկ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Տեղափոխել դիրք <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ավելացնել դիրք <xliff:g id="POSITION">%1$d</xliff:g>-ում"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Դիրքն անվավեր է։"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ընտրել օգտատեր"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Ինտերնետ կապ չկա"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Բացել <xliff:g id="ID_1">%s</xliff:g> կարգավորումները:"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Խմբագրել կարգավորումների հերթականությունը:"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Սնուցման կոճակի ընտրացանկ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Էջ <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Կողպէկրան"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(անջատված է)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Սխալ առաջացավ։ Հպեք՝ կրկնելու համար։"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Միացնել սարք"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Այս աշխատաշրջանը հեռարձակելու համար բացեք հավելվածը"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Անհայտ հավելված"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Կանգնեցնել հեռարձակումը"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Հասանելի սարքեր ձայնի արտածման համար։"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ինչպես անցնել հիմնական էկրան"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Դիտել վերջին հավելվածները"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Պատրաստ է"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Նորից փորձեք։"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Հետ գնալ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Հպահարթակի վրա երեք մատով սահեցրեք ձախ կամ աջ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Գերազանց է"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Դուք սովորեցիք հետ գնալու ժեստը։"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Հպահարթակին վերադառնալու համար երեք մատը սահեցրեք ձախ կամ աջ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Անցում հիմնական էկրան"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Հպահարթակի վրա երեք մատով սահեցրեք վերև"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Կեցցե՛ք"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Դուք սովորեցիք հիմնական էկրան անցնելու ժեստը"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Հիմնական էկրանին անցնելու համար հպահարթակի վրա երեք մատը սահեցրեք վերև"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Դիտել վերջին հավելվածները"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Երեք մատով սահեցրեք վերև և սեղմած պահեք հպահարթակին"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Կեցցե՛ք"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Դուք կատարեցիք վերջին օգտագործված հավելվածների դիտման ժեստը։"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Վերջին հավելվածները տեսնելու համար երեք մատը սահեցրեք վերև և սեղմած պահեք հպահարթակին"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ինչպես դիտել բոլոր հավելվածները"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Սեղմեք գործողության ստեղնը ստեղնաշարի վրա"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Հիանալի՛ է"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Դուք սովորեցիք բոլոր հավելվածները դիտելու ժեստը"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Ձեր բոլոր հավելվածները տեսնելու համար սեղմեք գործողության ստեղնը ստեղնաշարի վրա"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Ուղեցույցի անիմացիա․ սեղմեք՝ նվագարկումը դադարեցնելու/վերսկսելու համար։"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Հետին լուսավորությամբ ստեղնաշար"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d՝ %2$d-ից"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index b5b5888..527c8e8 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifikasi yang sedang berjalan untuk sesi rekaman layar"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Rekam layar Anda?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Rekam satu aplikasi"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Rekam seluruh layar"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Rekam seluruh layar: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Saat Anda merekam seluruh layar, semua hal yang ditampilkan di layar akan direkam. Jadi, berhati-hatilah saat memasukkan sandi, detail pembayaran, pesan, foto, audio, dan video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Jika Anda merekam aplikasi, semua hal yang ditampilkan atau diputar di aplikasi tersebut akan direkam. Jadi, berhati-hatilah saat memasukkan sandi, detail pembayaran, pesan, foto, audio, dan video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Rekam layar"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Tidak dapat memperbarui preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Dipilih"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alat"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Teks Otomatis"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Catatan"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Tampilkan ikon notifikasi prioritas rendah"</string>
<string name="other" msgid="429768510980739978">"Lainnya"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"menghapus kartu"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"menambahkan kartu ke akhir"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pindahkan kartu"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tambahkan kartu"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pindahkan ke <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Tambahkan ke posisi <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posisi tidak valid."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"memilih pengguna"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Tidak ada internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Buka setelan <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit urutan setelan."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu daya"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Halaman <xliff:g id="ID_1">%1$d</xliff:g> dari <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Layar kunci"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(tidak terhubung)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Tidak dapat beralih. Ketuk untuk mencoba lagi."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Hubungkan perangkat"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Buka aplikasi untuk mentransmisikan sesi ini."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikasi tidak dikenal"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Hentikan transmisi"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Perangkat yang tersedia untuk output audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Buka layar utama"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat aplikasi terbaru"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Coba lagi"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Geser ke kiri atau kanan menggunakan tiga jari di touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Sip!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Anda telah menyelesaikan gestur untuk kembali."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Untuk kembali menggunakan touchpad, geser ke kiri atau kanan menggunakan tiga jari"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Buka layar utama"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Geser ke atas dengan tiga jari di touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bagus!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Anda telah menyelesaikan gestur buka layar utama"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Geser ke atas dengan tiga jari di touchpad untuk membuka layar utama"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Lihat aplikasi terbaru"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Geser ke atas dan tahan menggunakan tiga jari di touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bagus!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Anda telah menyelesaikan gestur untuk melihat aplikasi terbaru."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Untuk melihat aplikasi terbaru, geser ke atas dan tahan menggunakan tiga jari di touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Lihat semua aplikasi"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tekan tombol tindakan di keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Oke!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Anda telah menyelesaikan gestur untuk melihat semua aplikasi"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Tekan tombol tindakan di keyboard untuk melihat semua aplikasi"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animasi tutorial, klik untuk menjeda dan melanjutkan pemutaran."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Lampu latar keyboard"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tingkat %1$d dari %2$d"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index a1ad51e..3d1b025 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Áframhaldandi tilkynning fyrir skjáupptökulotu"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Viltu taka upp skjáinn?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Taka upp eitt forrit"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Taka upp allan skjáinn"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Taka upp allan skjáinn: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Þegar þú tekur upp allan skjáinn verður allt sem er sýnilegt á skjánum tekið upp. Passaðu því upp á aðgangsorð, greiðsluupplýsingar, skilaboð, myndir, hljóð og myndskeið."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Þegar þú tekur upp forrit verður allt sem er sýnilegt eða spilað í forritinu tekið upp. Passaðu því upp á aðgangsorð, greiðsluupplýsingar, skilaboð, myndir, hljóð og myndskeið."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Taka upp skjá"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Tókst ekki að uppfæra forstillingu"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forstilling"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Valið"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Verkfæri"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Skjátextar í rauntíma"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Glósa"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Sýna tákn fyrir tilkynningar með litlum forgangi"</string>
<string name="other" msgid="429768510980739978">"Annað"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjarlægja flís"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"bæta flís við aftast"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Færa flís"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Bæta flís við"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Færa í <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Bæta við í stöðu <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Staða ógild."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"velja notanda"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Engin nettenging"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Opna <xliff:g id="ID_1">%s</xliff:g> stillingar."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Breyta röð stillinga."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Aflrofavalmynd"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Blaðsíða <xliff:g id="ID_1">%1$d</xliff:g> af <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lásskjár"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(aftengt)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Ekki er hægt að skipta. Ýttu til að reyna aftur."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Tengja tæki"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Opnaðu forritið til að senda þessa lotu út."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Óþekkt forrit"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stöðva útsendingu"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Tæki í boði fyrir hljóðúttak."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Fara á heimaskjá"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Sjá nýleg forrit"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Lokið"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Reyndu aftur!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Til baka"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Strjúktu til hægri eða vinstri á snertifletinum með þremur fingrum"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Flott!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Þú laukst við að kynna þér bendinguna „til baka“."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Strjúktu til hægri eða vinstri á snertifletinum með þremur fingrum til að fara til baka"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Heim"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Strjúktu upp á snertifletinum með þremur fingrum"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Vel gert!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Þú framkvæmdir bendinguna „Fara á heimaskjá“"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Strjúktu upp á snertifletinum með þremur fingrum til að fara á heimaskjáinn"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Sjá nýleg forrit"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Strjúktu upp og haltu þremur fingrum inni á snertifletinum."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Vel gert!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Þú framkvæmdir bendinguna til að sjá nýleg forrit."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Strjúktu upp og haltu þremur fingrum inni á snertifletinum til að sjá nýleg forrit"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Sjá öll forrit"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Ýttu á aðgerðalykilinn á lyklaborðinu"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Vel gert!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Þú framkvæmdir bendinguna „Sjá öll forrit“"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Ýttu á aðgerðalykilinn á lyklaborðinu´til að sjá öll forritin þín"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Leiðsagnarhreyfimynd, smelltu til að gera hlé og halda áfram að spila."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Baklýsing lyklaborðs"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Stig %1$d af %2$d"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 03a6f54..b605920 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifica costante per una sessione di registrazione dello schermo"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Registrare lo schermo?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Registra un\'app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Registra l\'intero schermo"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Registra l\'intero schermo: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Quando registri l\'intero schermo, tutto ciò che viene mostrato sullo schermo viene registrato. Presta quindi attenzione a password, dati di pagamento, messaggi, foto, audio e video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Quando registri un\'app, tutto ciò che viene mostrato o riprodotto al suo interno viene registrato. Presta quindi attenzione a password, dati di pagamento, messaggi, foto, audio e video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Registra lo schermo"</string>
@@ -415,6 +417,13 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Impossibile aggiornare preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selezionato"</string>
+ <string name="hearing_devices_ambient_label" msgid="629440938614895797">"Audio ambientale"</string>
+ <string name="hearing_devices_ambient_control_left" msgid="3586965448230412600">"Sinistra"</string>
+ <string name="hearing_devices_ambient_control_right" msgid="6192137602448918383">"Destra"</string>
+ <string name="hearing_devices_ambient_expand_controls" msgid="2131816068187709200">"Espandi controlli separati a sinistra e a destra"</string>
+ <string name="hearing_devices_ambient_collapse_controls" msgid="2261097656446201581">"Comprimi in controllo unificato"</string>
+ <string name="hearing_devices_ambient_mute" msgid="1836882837647429416">"Disattiva audio ambientale"</string>
+ <string name="hearing_devices_ambient_unmute" msgid="2187938085943876814">"Riattiva audio ambientale"</string>
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Strumenti"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Sottotitoli in tempo reale"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +969,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostra icone di notifiche con priorità bassa"</string>
<string name="other" msgid="429768510980739978">"Altro"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"rimuovere il riquadro"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"aggiungere il riquadro alla fine"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Sposta riquadro"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Aggiungi riquadro"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Sposta nella posizione <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Aggiungi alla posizione <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posizione non valida."</string>
@@ -978,7 +989,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"selezionare l\'utente"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nessuna connessione a Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Apri le impostazioni <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Modifica l\'ordine delle impostazioni."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu del tasto di accensione"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> di <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Schermata di blocco"</string>
@@ -1209,7 +1221,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(disconnesso)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Non puoi cambiare. Tocca per riprovare."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Connetti un dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Per trasmettere questa sessione devi aprire l\'app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App sconosciuta"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Interrompi trasmissione"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivi disponibili per l\'uscita audio."</string>
@@ -1468,32 +1479,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Vai alla schermata Home"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Visualizza app recenti"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fine"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Riprova."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Indietro"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Scorri verso sinistra o destra con tre dita sul touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bene!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Hai completato il gesto Indietro."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Per tornare indietro usando il touchpad, scorri verso sinistra o destra con tre dita"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Vai alla schermata Home"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Scorri in alto con tre dita sul touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Ottimo lavoro!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Hai completato il gesto Vai alla schermata Home"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Scorri verso l\'alto con tre dita sul touchpad per andare alla schermata Home"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Visualizza app recenti"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Scorri verso l\'alto e tieni premuto con tre dita sul touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Ottimo lavoro!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Hai completato il gesto Visualizza app recenti."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Per visualizzare le app recenti, scorri verso l\'alto e tieni premuto con tre dita sul touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Visualizza tutte le app"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Premi il tasto azione sulla tastiera"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Ben fatto!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Hai completato il gesto Visualizza tutte le app."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Premi il tasto azione sulla tastiera per visualizzare tutte le tue app"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animazione del tutorial: fai clic per mettere in pausa e riprendere la riproduzione."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Retroilluminazione della tastiera"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Livello %1$d di %2$d"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 1d74a49..d0f26ba 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"התראה מתמשכת לסשן הקלטת מסך"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"להקליט את המסך?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"הקלטה של אפליקציה אחת"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"הקלטה של כל המסך"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"הקלטת התוכן של כל המסך: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"כשמקליטים את כל המסך, כל מה שמופיע במסך מוקלט. מומלץ להיזהר עם סיסמאות, פרטי תשלום, הודעות, תמונות, אודיו וסרטונים."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"כשמקליטים אפליקציה, כל מה שרואים או מפעילים בה מוקלט. מומלץ להיזהר עם סיסמאות, פרטי תשלום, הודעות, תמונות, אודיו וסרטונים."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"הקלטת המסך"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"לא ניתן לעדכן את ההגדרה הקבועה מראש"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"הגדרה קבועה מראש"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"נבחר"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"כלים"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"כתוביות מיידיות"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"פתק"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"הצגת סמלי התראות בעדיפות נמוכה"</string>
<string name="other" msgid="429768510980739978">"אחר"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"הסרת הלחצן"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"הוספת הלחצן בסוף הרשימה"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"העברת הלחצן"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"הוספת לחצן"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"העברה למיקום <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"הוספה למיקום <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"המיקום לא תקין."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"בחירת משתמש"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"אין אינטרנט"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"פתיחת הגדרות של <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"עריכת סדר ההגדרות."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"תפריט הפעלה"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"דף <xliff:g id="ID_1">%1$d</xliff:g> מתוך <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"מסך נעילה"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(מנותק)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"לא ניתן להחליף. צריך להקיש כדי לנסות שוב."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"חיבור מכשיר"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"כדי להפעיל Cast של הסשן הזה, צריך לפתוח את האפליקציה."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"אפליקציה לא ידועה"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"עצירת ההעברה (casting)"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"מכשירים זמינים לפלט אודיו."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"חזרה לדף הבית"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"הצגת האפליקציות האחרונות"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"סיום"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"צריך לנסות שוב."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"חזרה"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"מחליקים שמאלה או ימינה עם שלוש אצבעות על לוח המגע"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"איזה יופי!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"סיימת לתרגל את התנועה \'הקודם\'."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"כדי לחזור אחורה באמצעות לוח המגע, צריך להחליק שמאלה או ימינה עם שלוש אצבעות"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"מעבר למסך הבית"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"מחליקים כלפי מעלה עם שלוש אצבעות על לוח המגע"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"מעולה!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"סיימת לתרגל את תנועת החזרה למסך הבית"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"כדי לעבור למסך הבית, צריך להחליק כלפי מעלה עם שלוש אצבעות על לוח המגע"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"הצגת האפליקציות האחרונות"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"מחליקים למעלה עם שלוש אצבעות על לוח המגע ומשאירים אותן במגע עם הלוח"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"מעולה!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"סיימת לתרגל את התנועה להצגת האפליקציות האחרונות."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"כדי לראות את האפליקציות האחרונות, צריך להחליק למעלה וללחוץ לחיצה ארוכה עם שלוש אצבעות על לוח המגע"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"צפייה בכל האפליקציות"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"צריך להקיש על מקש הפעולה במקלדת"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"כל הכבוד!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"סיימת לתרגל את התנועה להצגת כל האפליקציות"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"כדי לראות את כל האפליקציות, צריך להקיש על מקש הפעולה במקלדת"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"אנימציה של הדרכה, אפשר ללחוץ כדי להשהות ולהמשיך את ההפעלה."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"התאורה האחורית במקלדת"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"רמה %1$d מתוך %2$d"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index da74e23..dd9eb2a 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"画面の録画セッション中の通知"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"画面を録画しますか?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"1 つのアプリを録画"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"画面全体を録画"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"画面全体を録画: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"画面全体を録画すると、画面に表示されるものがすべて録画されます。パスワード、お支払いの詳細、メッセージ、写真、音声、動画などの情報にご注意ください。"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"アプリを録画すると、そのアプリで表示または再生される内容がすべて録画されます。パスワード、お支払いの詳細、メッセージ、写真、音声、動画などの情報にご注意ください。"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"画面を録画"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"プリセットを更新できませんでした"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"プリセット"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"選択中"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ツール"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"自動字幕起こし"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"注"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"優先度の低い通知アイコンを表示"</string>
<string name="other" msgid="429768510980739978">"その他"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"タイルを削除"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"タイルを最後に追加"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"タイルを最後の位置に追加する"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"タイルを移動"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"タイルを追加"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"タイルを目的の位置に追加する"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> に移動"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ポジション <xliff:g id="POSITION">%1$d</xliff:g> に追加"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"位置が無効です。"</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ユーザーを選択"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"インターネットに接続されていません"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> の設定を開きます。"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"設定の順序を編集します。"</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"クイック設定の順序を編集します。"</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"電源ボタン メニュー"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"ページ <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ロック画面"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(接続解除済み)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"切り替えられません。タップしてやり直してください。"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"デバイスを接続"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"このセッションをキャストするには、アプリを開いてください。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明なアプリ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"キャストを停止"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"音声出力ができるデバイスです。"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 5a20158..e2459f3 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"უწყვეტი შეტყობინება ეკრანის ჩაწერის სესიისთვის"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"გსურთ თქვენი ეკრანის ჩაწერა?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ერთი აპის ჩაწერა"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"მთლიანი ეკრანის ჩაწერა"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"მთლიანი ეკრანის ჩაწერა: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"მთლიანი ეკრანის ჩაწერისას ჩაიწერება ყველაფერი, რაც თქვენს ეკრანზე გამოჩნდება. ამიტომ სიფრთხილე გამოიჩინეთ ისეთ ინფორმაციასთან, როგორიცაა პაროლები, გადახდის დეტალები, შეტყობინებები, ფოტოები, აუდიო და ვიდეო."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"აპის ჩაწერისას ჩაიწერება ყველაფერი, რაც ამ აპში გამოჩნდება ან დაიკვრება. ამიტომ სიფრთხილე გამოიჩინეთ ისეთ ინფორმაციასთან, როგორიცაა პაროლები, გადახდის დეტალები, შეტყობინებები, ფოტოები, აუდიო და ვიდეო."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ეკრანის ჩაწერა"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"წინასწარ დაყენებული პარამეტრების განახლება ვერ მოხერხდა"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"წინასწარ დაყენებული"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"არჩეულია"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ხელსაწყოები"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"ავტოსუბტიტრები"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ჩანიშვნა"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"დაბალი პრიორიტეტის მქონე შეტყობინებების ხატულების ჩვენება"</string>
<string name="other" msgid="429768510980739978">"სხვა"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"მოზაიკის ფილის წაშლა"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ფილის ბოლოში დამატება"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"მოზაიკის გადატანა"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"მოზაიკის დამატება"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"გადატანა <xliff:g id="POSITION">%1$d</xliff:g>-ზე"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"დამატება პოზიციაზე <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"პოზიცია არასწორია."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"მომხმარებლის არჩევა"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ინტერნეტ-კავშირი არ არის"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> პარამეტრების გახსნა."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"პარამეტრების მიმდევრობის რედაქტირება."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ჩართვის მენიუ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"გვერდი <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>-დან"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ჩაკეტილი ეკრანი"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(კავშირი გაწყვეტილია)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ვერ გადაირთო. შეეხეთ ხელახლა საცდელად."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"მოწყობილობასთან დაკავშირება"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ამ სესიის ტრანსლირებისთვის გახსენით აპი."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"უცნობი აპი"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ტრანსლირების შეწყვეტა"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ხელმისაწვდომი მოწყობილობები გამომავალი აუდიოსთვის."</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 5bd63b1..c325c96 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды бейнеге жазудың ағымдағы хабарландыруы"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Қолданба экранын жазасыз ба?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Бір қолданба экранын жазу"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Бүкіл экранды жазу"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Бүкіл экранды жазу: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Бүкіл экранды жазған кезде, онда көрінетін барлық нәрсе жазылады. Сондықтан құпия сөздерді, төлем туралы мәліметті, хабарларды немесе басқа құпия ақпаратты енгізген кезде сақ болыңыз."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Қолданбаны жазған кезде, онда көрінетін не ойнатылатын барлық нәрсе жазылады. Сондықтан құпия сөздерді, төлем туралы мәліметті, хабарларды немесе басқа құпия ақпаратты енгізген кезде сақ болыңыз."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Экранды жазу"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Параметрлер жинағын жаңарту мүмкін болмады."</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Параметрлер жинағы"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Таңдалды"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Құралдар"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Ескертпе"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Маңызды емес хабарландыру белгішелерін көрсету"</string>
<string name="other" msgid="429768510980739978">"Басқа"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"бөлшекті өшіру"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"бөлшекті соңына қосу"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Бөлшекті жылжыту"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Бөлшек қосу"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> орнына жылжыту"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> орнына қосу"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Орын жарамсыз."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"пайдаланушыны таңдаңыз"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Интернетпен байланыс жоқ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> параметрлерін ашу."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Параметрлер тәртібін өзгерту."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Қуат мәзірі"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> ішінен <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Құлыптаулы экран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ажыратулы)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Ауысу мүмкін емес. Әрекетті қайталау үшін түртіңіз."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Құрылғы жалғау"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Бұл сеансты трансляциялау үшін қолданбаны ашыңыз."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Белгісіз қолданба"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Трансляцияны тоқтату"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Аудио шығыс үшін қолжетімді құрылғылар бар."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Негізгі бетке өту"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Соңғы қолданбаларды көру"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Дайын"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Қайталап көріңіз"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артқа"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Сенсорлық тақтада үш саусақпен оңға немесе солға сырғытыңыз."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Керемет!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Артқа қайту қимылын аяқтадыңыз."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Сенсорлық тақта арқылы артқа оралу үшін үш саусақпен солға немесе оңға сырғытыңыз."</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Негізгі экранға өту"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Сенсорлық тақтада үш саусақпен жоғары сырғытыңыз."</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Жарайсыз!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Негізгі экранға қайту қимылын орындадыңыз."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Негізгі экранға өту үшін сенсорлық тақтада үш саусақпен жоғары сырғытыңыз."</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Соңғы қолданбаларды көру"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Сенсорлық тақтада үш саусақпен жоғары сырғытып, басып тұрыңыз."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Жарайсыз!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Соңғы қолданбаларды көру қимылын орындадыңыз."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Соңғы қолданбаларды көру үшін сенсорлық тақтада үш саусақпен жоғары сырғытып, ұстап тұрыңыз."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Барлық қолданбаны көру"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Пернетақтадағы әрекет пернесін басыңыз."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Жарайсыз!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Барлық қолданбаны көру қимылын орындадыңыз."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Барлық қолданбаңызды көру үшін пернетақтадағы әрекет пернесін басыңыз."</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Оқулықтың анимациясы, ойнатуды кідірту және жалғастыру үшін басыңыз."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Пернетақта жарығы"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Деңгей: %1$d/%2$d"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index fa3fc664..a6e25d1 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ការជូនដំណឹងដែលកំពុងដំណើរការសម្រាប់រយៈពេលប្រើការថតសកម្មភាពអេក្រង់"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ថតអេក្រង់របស់អ្នកឬ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ថតកម្មវិធីទោល"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ថតអេក្រង់ទាំងមូល"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ថតអេក្រង់ទាំងមូល៖ %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"នៅពេលអ្នកកំពុងថតអេក្រង់ទាំងមូលរបស់អ្នក អ្វីគ្រប់យ៉ាងដែលបង្ហាញនៅលើអេក្រង់របស់អ្នកត្រូវបានថត។ ដូច្នេះ សូមប្រុងប្រយ័ត្នចំពោះអ្វីៗដូចជា ពាក្យសម្ងាត់ ព័ត៌មានលម្អិតអំពីការទូទាត់ប្រាក់ សារ រូបថត ព្រមទាំងសំឡេង និងវីដេអូ។"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"នៅពេលអ្នកកំពុងថតកម្មវិធីណាមួយ អ្វីគ្រប់យ៉ាងដែលបង្ហាញ ឬចាក់នៅក្នុងកម្មវិធីនោះត្រូវបានថត។ ដូច្នេះ សូមប្រុងប្រយ័ត្នចំពោះអ្វីៗដូចជា ពាក្យសម្ងាត់ ព័ត៌មានលម្អិតអំពីការទូទាត់ប្រាក់ សារ រូបថត ព្រមទាំងសំឡេង និងវីដេអូ។"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ថតអេក្រង់"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"មិនអាចប្ដូរការកំណត់ជាមុនបានទេ"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"កំណត់ជាមុន"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"បានជ្រើសរើស"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ឧបករណ៍"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"អក្សររត់ក្នុងពេលជាក់ស្ដែង"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"កំណត់ចំណាំ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"បង្ហាញរូបការជូនដំណឹងដែលមានអាទិភាពទាប"</string>
<string name="other" msgid="429768510980739978">"ផ្សេងៗ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ដកប្រអប់ចេញ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"បញ្ចូលប្រអប់ទៅខាងចុង"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ផ្លាស់ទីប្រអប់"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"បញ្ចូលប្រអប់"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ផ្លាស់ទីទៅ <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"បញ្ចូលទៅទីតាំងទី <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ទីតាំងគ្មានសុពលភាព។"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ជ្រើសរើសអ្នកប្រើប្រាស់"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"គ្មានអ៊ីនធឺណិតទេ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"បើការកំណត់ <xliff:g id="ID_1">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"កែលំដាប់ការកំណត់"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ម៉ឺនុយថាមពល"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"ទំព័រ <xliff:g id="ID_1">%1$d</xliff:g> នៃ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"អេក្រង់ចាក់សោ"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(បានដាច់)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"មិនអាចប្ដូរបានទេ។ សូមចុចដើម្បីព្យាយាមម្ដងទៀត។"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ភ្ជាប់ឧបករណ៍"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ដើម្បីភ្ជាប់វគ្គនេះ សូមបើកកម្មវិធី។"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"កម្មវិធីដែលមិនស្គាល់"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"បញ្ឈប់ការភ្ជាប់"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ឧបករណ៍ដែលអាចប្រើបានសម្រាប់ឧបករណ៍បញ្ចេញសំឡេង។"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index e53988c..2ddb1a8 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಸೆಶನ್ಗಾಗಿ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ನೋಟಿಫಿಕೇಶನ್"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಬೇಕೇ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ಒಂದು ಆ್ಯಪ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ನೀವು ರೆಕಾರ್ಡ್ ಮಾಡುತ್ತಿರುವಾಗ, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಗೋಚರಿಸುವ ಎಲ್ಲವನ್ನೂ ರೆಕಾರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ವಿವರಗಳು, ಸಂದೇಶಗಳು, ಫೋಟೋಗಳು ಮತ್ತು ಆಡಿಯೋ ಮತ್ತು ವೀಡಿಯೊದಂತಹ ವಿಷಯಗಳ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ, ಆ ಆ್ಯಪ್ನಲ್ಲಿ ತೋರಿಸಿರುವ ಅಥವಾ ಪ್ಲೇ ಮಾಡಿದ ಎಲ್ಲವನ್ನೂ ರೆಕಾರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ವಿವರಗಳು, ಸಂದೇಶಗಳು, ಫೋಟೋಗಳು ಮತ್ತು ಆಡಿಯೋ ಮತ್ತು ವೀಡಿಯೊದಂತಹ ವಿಷಯಗಳ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ಪ್ರಿಸೆಟ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ಪ್ರಿಸೆಟ್"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ಟೂಲ್ಗಳು"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"ಲೈವ್ ಕ್ಯಾಪ್ಶನ್"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ಟಿಪ್ಪಣಿ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"ಕಡಿಮೆ-ಆದ್ಯತೆ ಸೂಚನೆಯ ಐಕಾನ್ಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="other" msgid="429768510980739978">"ಇತರ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ಟೈಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ಕೊನೆಯಲ್ಲಿ ಟೈಲ್ ಸೇರಿಸಿ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ಟೈಲ್ ಸರಿಸಿ"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ಟೈಲ್ ಸೇರಿಸಿ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ಇಲ್ಲಿಗೆ ಸರಿಸಿ <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ಸ್ಥಾನಕ್ಕೆ ಸೇರಿಸಿ"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ಸ್ಥಾನವು ಅಮಾನ್ಯವಾಗಿದೆ."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ಬಳಕೆದಾರರನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ಸೆಟ್ಟಿಂಗ್ಗಳ ಕ್ರಮವನ್ನು ಎಡಿಟ್ ಮಾಡಿ."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ಪವರ್ ಮೆನು"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="ID_1">%1$d</xliff:g> ಪುಟ"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ಲಾಕ್ ಸ್ಕ್ರೀನ್"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ಡಿಸ್ಕನೆಕ್ಟ್ ಆಗಿದೆ)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ಬದಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ಸಾಧನವನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ಈ ಸೆಶನ್ ಕಾಸ್ಟ್ ಮಾಡಲು, ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ಅಪರಿಚಿತ ಆ್ಯಪ್"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ಬಿತ್ತರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ಆಡಿಯೋ ಔಟ್ಪುಟ್ಗಾಗಿ ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ಮುಖಪುಟಕ್ಕೆ ಹೋಗಿ"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ಮುಗಿದಿದೆ"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"ಪುನಃ ಪ್ರಯತ್ನಿಸಿ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ಹಿಂತಿರುಗಿ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಎಡ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"ಚೆನ್ನಾಗಿದೆ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"ನೀವು ಗೋ ಬ್ಯಾಕ್ ಗೆಸ್ಚರ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ ಬಳಸಿಕೊಂಡು ಹಿಂತಿರುಗಲು, ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ಮುಖಪುಟಕ್ಕೆ ಹೋಗಿ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"ಭೇಷ್!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ನೀವು ಗೋ ಹೋಮ್ ಜೆಸ್ಚರ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ಗೆ ಹೋಗಲು ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"ಭೇಷ್!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ನೀವು ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳ ಜೆಸ್ಚರ್ ವೀಕ್ಷಣೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನಲ್ಲಿ ಆ್ಯಕ್ಷನ್ ಕೀಯನ್ನು ಒತ್ತಿ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ಭೇಷ್!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"ನೀವು ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳ ಜೆಸ್ಚರ್ ವೀಕ್ಷಣೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"ನಿಮ್ಮ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನಲ್ಲಿ ಆ್ಯಕ್ಷನ್ ಕೀಯನ್ನು ಒತ್ತಿ"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ಟುಟೋರಿಯಲ್ ಆ್ಯನಿಮೇಷನ್, ವಿರಾಮಗೊಳಿಸಲು ಮತ್ತು ಪ್ಲೇ ಪುನರಾರಂಭಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ಕೀಬೋರ್ಡ್ ಬ್ಯಾಕ್ಲೈಟ್"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ರಲ್ಲಿ %1$d ಮಟ್ಟ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index dc6fcda..caa7634 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"화면 녹화 세션에 관한 지속적인 알림"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"화면을 녹화하시겠습니까?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"단일 앱 녹화"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"전체 화면 녹화"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"전체 화면 녹화: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"전체 화면을 녹화하면 화면에 표시되는 모든 항목이 녹화됩니다. 따라서 비밀번호, 결제 세부정보, 메시지, 사진, 오디오 및 동영상 등이 노출되지 않도록 주의하세요."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"앱을 녹화하면 앱에 표시되거나 앱에서 재생되는 모든 항목이 녹화됩니다. 따라서 비밀번호, 결제 세부정보, 메시지, 사진, 오디오 및 동영상 등이 노출되지 않도록 주의하세요."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"화면 녹화"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"사전 설정을 업데이트할 수 없음"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"미리 설정"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"선택됨"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"도구"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"실시간 자막"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"메모"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"우선순위가 낮은 알림 아이콘 표시"</string>
<string name="other" msgid="429768510980739978">"기타"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"타일 삭제"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"끝에 타일 추가"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"타일 이동"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"타일 추가"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> 위치로 이동"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> 위치에 추가"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"위치가 잘못되었습니다."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"사용자 선택"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"인터넷 연결 없음"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> 설정 열기"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"설정 순서 수정"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"전원 메뉴"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g>페이지 중 <xliff:g id="ID_1">%1$d</xliff:g>페이지"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"잠금 화면"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(연결 끊김)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"전환할 수 없습니다. 다시 시도하려면 탭하세요."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"기기 연결"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"세션을 전송하려면 앱을 열어 주세요"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"알 수 없는 앱"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"전송 중지"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"오디오 출력에 사용 가능한 기기입니다."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"홈으로 이동"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"최근 앱 보기"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"완료"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"다시 시도해 보세요"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"뒤로"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"세 손가락을 사용해 터치패드에서 왼쪽 또는 오른쪽으로 스와이프하세요."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"훌륭합니다"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"돌아가기 동작을 완료했습니다."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"터치패드를 사용해 뒤로 돌아가려면 세 손가락을 사용해 왼쪽이나 오른쪽으로 스와이프하세요."</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"홈으로 이동"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"세 손가락을 사용해 터치패드에서 위로 스와이프하세요."</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"잘하셨습니다"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"홈으로 이동 동작을 완료했습니다."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"홈 화면으로 이동하려면 터치패드에서 세 손가락을 사용해 위로 스와이프하세요."</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"최근 앱 보기"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"세 손가락을 사용해 터치패드에서 위로 스와이프한 후 잠시 기다리세요."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"아주 좋습니다"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"최근 앱 보기 동작을 완료했습니다."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"최근 앱을 보려면 터치패드에서 세 손가락을 사용해 위로 스와이프한 채로 유지하세요."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"모든 앱 보기"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"키보드의 작업 키를 누르세요."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"잘하셨습니다"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"모든 앱 보기 동작을 완료했습니다."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"모든 앱을 확인하려면 키보드의 작업 키를 누르세요."</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"튜토리얼 애니메이션입니다. 일시중지하고 재생을 재개하려면 클릭하세요."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"키보드 백라이트"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d단계 중 %1$d단계"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 83ec250..836179e 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды жаздыруу сеансы боюнча учурдагы билдирме"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Экранды жаздырасызбы?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Бир колдонмону жаздыруу"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Бүтүндөй экранды жаздыруу"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Толук экранды жаздыруу: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Бүтүндөй экранды жаздырганда, андагы нерселердин баары видеого түшүп калат. Андыктан этият болуп, сырсөздөр, төлөм ыкмалары, билдирүүлөр, сүрөттөр, аудио жана видео материалдар сыяктуу купуя нерселерди көрсөтүп албаңыз."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Колдонмону жаздырганда, андагы нерселердин баары видеого түшүп калат. Андыктан сырсөздөр, төлөмдүн чоо-жайы, билдирүүлөр, сүрөттөр, аудио жана видео сыяктуу нерселер менен этият болуңуз."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Экранды жаздыруу"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Алдын ала коюлган параметрлер жаңыртылган жок"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Алдын ала коюлган параметрлер"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Тандалды"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Куралдар"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Ыкчам коштомо жазуулар"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Учкай маалымат"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Анча маанилүү эмес билдирменин сүрөтчөлөрүн көрсөтүү"</string>
<string name="other" msgid="429768510980739978">"Башка"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ыкчам баскычты өчүрүү"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ыкчам баскычты аягына кошуу"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Ыкчам баскычты жылдыруу"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ыкчам баскыч кошуу"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Төмөнкүгө жылдыруу: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g>-позицияга кошуу"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Абал жараксыз."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"колдонуучуну тандоо"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Интернет жок"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> параметрлерин ачуу."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Параметрлердин иретин өзгөртүү."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Кубат баскычынын менюсу"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> ичинен <xliff:g id="ID_1">%1$d</xliff:g>-бет"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Кулпуланган экран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ажыратылды)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Которулбай жатат. Кайталоо үчүн басыңыз."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Түзмөктү туташтыруу"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Бул сеансты тышкы экранга чыгаруу үчүн колдонмону ачыңыз."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Белгисиз колдонмо"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Тышкы экранга чыгарууну токтотуу"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Аудио чыгаруу үчүн жеткиликтүү түзмөктөр."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Башкы бетке өтүү"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Акыркы колдонмолорду көрүү"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Бүттү"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Кайталап көрүңүз!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артка кайтуу"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Сенсордук тактаны үч манжаңыз менен солго же оңго сүрүңүз"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Сонун!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"\"Артка\" жаңсоосун үйрөндүңүз."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Сенсордук такта менен артка кайтуу үчүн үч манжаңыз менен солго же оңго сүрүңүз"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Башкы бетке өтүү"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Сенсордук тактаны үч манжаңыз менен жогору сүрүңүз"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Азаматсыз!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"\"Башкы бетке өтүү\" жаңсоосун үйрөндүңүз"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Башкы экранга өтүү үчүн сенсордук тактаны үч манжаңыз менен жогору сүрүңүз"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Акыркы колдонмолорду көрүү"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Сенсордук тактаны үч манжаңыз менен өйдө сүрүп, кармап туруңуз"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Азаматсыз!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Акыркы колдонмолорду көрүү жаңсоосун аткардыңыз."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Соңку колдонмолорду көрүү үчүн сенсордук тактаны үч манжаңыз менен жогору сүрүп, кармап туруңуз"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Бардык колдонмолорду көрүү"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Баскычтобуңуздагы аракет баскычын басыңыз"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Эң жакшы!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Бардык колдонмолорду көрүү жаңсоосун аткардыңыз"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Бардык колдонмолоруңузду көрүү үчүн баскычтобуңуздагы аракет баскычын басыңыз"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Үйрөткүч анимация, ойнотууну тындыруу же улантуу үчүн чыкылдатыңыз."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Баскычтоптун жарыгы"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ичинен %1$d-деңгээл"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 53d3bca..47a431b 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ການແຈ້ງເຕືອນສຳລັບເຊດຊັນການບັນທຶກໜ້າຈໍໃດໜຶ່ງ"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ບັນທຶກໜ້າຈໍຂອງທ່ານບໍ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ບັນທຶກແອັບດຽວ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ບັນທຶກໝົດໜ້າຈໍ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ບັນທຶກໜ້າຈໍທັງໝົດ: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ເມື່ອທ່ານບັນທຶກໝົດໜ້າຈໍຂອງທ່ານ, ລະບົບຈະບັນທຶກທຸກສິ່ງທີ່ສະແດງຢູ່ໜ້າຈໍຂອງທ່ານ. ດັ່ງນັ້ນ, ໃຫ້ລະມັດລະວັງສິ່ງຕ່າງໆ ເຊັ່ນ: ລະຫັດຜ່ານ, ລາຍລະອຽດການຈ່າຍເງິນ, ຂໍ້ຄວາມ, ຮູບພາບ, ພ້ອມທັງສຽງ ແລະ ວິດີໂອ."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ເມື່ອທ່ານບັນທຶກແອັບ, ລະບົບຈະບັນທຶກທຸກສິ່ງທີ່ສະແດງ ຫຼື ຫຼິ້ນຢູ່ໃນແອັບນັ້ນ. ດັ່ງນັ້ນ, ໃຫ້ລະມັດລະວັງສິ່ງຕ່າງໆ ເຊັ່ນ: ລະຫັດຜ່ານ, ລາຍລະອຽດການຈ່າຍເງິນ, ຂໍ້ຄວາມ, ຮູບພາບ, ພ້ອມທັງສຽງ ແລະ ວິດີໂອ."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ບັນທຶກໜ້າຈໍ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ບໍ່ສາມາດອັບເດດການຕັ້ງຄ່າລ່ວງໜ້າໄດ້"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ຄ່າທີ່ກຳນົດລ່ວງໜ້າ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ເລືອກແລ້ວ"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ເຄື່ອງມື"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"ຄຳບັນຍາຍສົດ"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ບັນທຶກ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"ສະແດງໄອຄອນການແຈ້ງເຕືອນຄວາມສຳຄັນຕ່ຳ"</string>
<string name="other" msgid="429768510980739978">"ອື່ນໆ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ລຶບແຜ່ນອອກ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ເພີ່ມແຜ່ນໃສ່ທ້າຍ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ຍ້າຍແຜ່ນ"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ເພີ່ມແຜ່ນ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ຍ້າຍໄປ <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ເພີ່ມໃສ່ຕຳແໜ່ງ <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ຕຳແໜ່ງບໍ່ຖືກຕ້ອງ."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ເລືອກຜູ້ໃຊ້"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ບໍ່ມີອິນເຕີເນັດ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"ເປີດການຕັ້ງຄ່າ <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ແກ້ໄຂລຳດັບການຕັ້ງຄ່າ."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ເມນູເປີດປິດ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ໜ້າຈໍລັອກ"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ຕັດການເຊື່ອມຕໍ່ແລ້ວ)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ບໍ່ສາມາດສະຫຼັບໄດ້. ແຕະເພື່ອລອງໃໝ່."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ເຊື່ອມຕໍ່ຫາອຸປະກອນ"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ເພື່ອສົ່ງສັນຍານເຊດຊັນນີ້, ກະລຸນາເປີດແອັບ."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ແອັບທີ່ບໍ່ຮູ້ຈັກ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ຢຸດການສົ່ງສັນຍານ"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ອຸປະກອນທີ່ສາມາດໃຊ້ໄດ້ສຳລັບເອົ້າພຸດສຽງ."</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index bfdd89f..5fba5b2 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Šiuo metu rodomas ekrano įrašymo sesijos pranešimas"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Įrašyti ekraną?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Įrašyti vieną programą"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Įrašyti visą ekraną"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Įrašyti visą ekraną: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kai įrašote visą ekraną, įrašomas visas ekrane rodomas turinys. Todėl būkite atsargūs naudodami slaptažodžius, išsamią mokėjimo metodo informaciją, pranešimus, nuotraukas ir garso bei vaizdo įrašus."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kai įrašote programą, įrašomas visas toje programoje rodomas ar leidžiamas turinys. Todėl būkite atsargūs naudodami slaptažodžius, išsamią mokėjimo metodo informaciją, pranešimus, nuotraukas ir garso bei vaizdo įrašus."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Įrašyti ekraną"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Išankstinių nustatymų atnaujinti nepavyko"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Išankstiniai nustatymai"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Pasirinkta"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Įrankiai"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtitrai realiuoju laiku"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Pastaba"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Rodyti mažo prioriteto pranešimų piktogramas"</string>
<string name="other" msgid="429768510980739978">"Kita"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"pašalintumėte išklotinės elementą"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pridėtumėte išklotinės elementą gale"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Perkelti išklotinės elementą"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pridėti išklotinės elementą"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Perkelkite į <xliff:g id="POSITION">%1$d</xliff:g> poziciją"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pridėkite <xliff:g id="POSITION">%1$d</xliff:g> pozicijoje"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Padėtis netinkama."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"pasirinktumėte naudotoją"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nėra interneto ryšio"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Atidaryti „<xliff:g id="ID_1">%s</xliff:g>“ nustatymus."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Redaguoti nustatymų tvarką."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Įjungimo meniu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g> psl. iš <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Užrakinimo ekranas"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(atjungta)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nepavyko perjungti. Bandykite vėl palietę."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Įrenginio prijungimas"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Jei norite perduoti šį seansą, atidarykite programą."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nežinoma programa"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Sustabdyti perdavimą"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Pasiekiami garso išvesties įrenginiai."</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 9208c7e..a407750 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Aktīvs paziņojums par ekrāna ierakstīšanas sesiju"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Vai ierakstīt ekrānu?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Ierakstīt vienu lietotni"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Ierakstīt visu ekrānu"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Ierakstīt visu ekrānu: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Ierakstot visu ekrānu, viss, kas redzams ekrānā, tiek ierakstīts. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Ierakstot lietotni, tiek ierakstīts viss attiecīgajā lietotnē rādītais vai atskaņotais. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ierakstīt ekrānu"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Nevarēja atjaunināt pirmsiestatījumu"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Pirmsiestatījums"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Atlasīts"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Rīki"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtitri reāllaikā"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Piezīme"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Rādīt zemas prioritātes paziņojumu ikonas"</string>
<string name="other" msgid="429768510980739978">"Citi"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"noņemt elementu"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pievienot elementu beigās"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pārvietot elementu"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pievienot elementu"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pārvietot uz pozīciju numur <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pievienot elementu pozīcijā numur <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Nederīga pozīcija."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"izvēlēties lietotāju"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nav piekļuves internetam"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Atvērt <xliff:g id="ID_1">%s</xliff:g> iestatījumus."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Rediģēt iestatījumu secību."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Barošanas izvēlne"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>. lpp. no <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Bloķēšanas ekrāns"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(savienojums pārtraukts)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nevar pārslēgt. Pieskarieties, lai mēģinātu vēlreiz."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Savienot ar ierīci"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Lai apraidītu šo sesiju, lūdzu, atveriet lietotni."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nezināma lietotne"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Apturēt apraidi"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Audio izvadei pieejamās ierīces."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Pāriet uz sākuma ekrānu"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Skatīt nesen izmantotās lietotnes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gatavs"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Mēģiniet vēlreiz."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atpakaļ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Skārienpaliktnī ar trīs pirkstiem velciet pa kreisi vai pa labi."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Lieliski!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Jūs sekmīgi veicāt atgriešanās žestu."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Lai pārietu atpakaļ, izmantojot skārienpaliktni, ar trīs pirkstiem velciet pa kreisi vai pa labi"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Pāreja uz sākuma ekrānu"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Skārienpaliktnī ar trīs pirkstiem velciet augšup."</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Lieliski!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Jūs sekmīgi veicāt sākuma ekrāna atvēršanas žestu."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Lai pārietu uz sākuma ekrānu, skārienpaliktnī ar trīs pirkstiem velciet augšup"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Nesen izmantoto lietotņu skatīšana"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Skārienpaliktnī ar trīs pirkstiem velciet augšup un turiet."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Lieliski!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Jūs sekmīgi veicāt nesen izmantoto lietotņu skatīšanas žestu."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Lai skatītu nesenās lietotnes, skārienpaliktnī ar trīs pirkstiem velciet augšup un turiet"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Skatīt visas lietotnes"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tastatūrā nospiediet darbību taustiņu."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Lieliski!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Jūs sekmīgi veicāt visu lietotņu skatīšanas žestu."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Lai skatītu visas savas lietotnes, tastatūrā nospiediet darbību taustiņu."</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Mācību animācija. Noklikšķiniet, lai pārtrauktu un atsāktu atskaņošanu."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Tastatūras fona apgaismojums"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Līmenis numur %1$d, kopā ir %2$d"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 15f2435..f71ca44 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Тековно известување за сесија за снимање на екранот"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Да се снима екранот?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Снимање на една апликација"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Снимање на целиот екран"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Снимање на целиот екран: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Додека го снимате целиот екран, сѐ што е прикажано на екранот се снима. Затоа, бидете внимателни со лозинките, деталите за плаќање, пораките, фотографиите и аудиото и видеото."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Додека снимате апликација, може да се сними сѐ што се прикажува или пушта во таа апликација. Затоа, бидете внимателни со лозинките, деталите за плаќање, пораките, фотографиите и аудиото и видеото."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Снимај го екранот"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Не можеше да се ажурира зададената вредност"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Зададени вредности"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Избрано"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Алатки"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Автоматски титлови"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Белешка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Прикажувај икони за известувања со низок приоритет"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"отстранување на плочката"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додавање на плочката на крај"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместување на плочката"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додавање плочка"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместување на <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додавање на позиција <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Позицијата е погрешна."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"изберете корисник"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Нема интернет"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Отворете ги поставките на <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Уредете го редоследот на поставките."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Мени на копчето за вклучување"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Страница <xliff:g id="ID_1">%1$d</xliff:g> од <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Заклучен екран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(врската е прекината)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Не се префрла. Допрете и обидете се пак."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Поврзете уред"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"За да ја емитувате сесијава, отворете ја апликацијата."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Непозната апликација"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Сопри со емитување"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Достапни уреди за аудиоизлез."</string>
@@ -1468,33 +1486,28 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Оди на почетниот екран"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прикажи ги неодамнешните апликации"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Обидете се повторно!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Повлечете налево или надесно со три прста на допирната подлога"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Одлично!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Го научивте движењето за враќање назад."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"За да се вратите назад со допирната подлога, повлечете налево или надесно со три прста"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Одете на почетниот екран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Повлечете нагоре со три прсти на допирната подлога"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Одлично!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Го завршивте движењето за враќање на почетниот екран"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Повлечете нагоре со три прста на допирната подлога за да одите на почетниот екран"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Прикажи ги неодамнешните апликации"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Повлечете нагоре и задржете со три прста на допирната подлога"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Одлично!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Го завршивте движењето за прегледување на неодамнешните апликации."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Повлечете нагоре со три прста на допирната подлога и задржете за да ги видите неодамнешните апликации"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Прегледајте ги сите апликации"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Притиснете го копчето за дејство на тастатурата"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Браво!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Го завршивте движењето за прегледување на сите апликации"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
- <string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анимација за упатство, кликнете за ја паузирате и да ја продолжите репродукцијата."</string>
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Притиснете го копчето за дејство на тастатурата за да ги видите сите апликации"</string>
+ <string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анимација за упатство, кликнете за да го паузирате и да го продолжите пуштањето."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Осветлување на тастатура"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d од %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Контроли за домот"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 0f8417e..db3e91a 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ഒരു സ്ക്രീൻ റെക്കോർഡിംഗ് സെഷനായി നിലവിലുള്ള അറിയിപ്പ്"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"നിങ്ങളുടെ സ്ക്രീൻ റെക്കോർഡ് ചെയ്യണോ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ഒരു ആപ്പ് റെക്കോർഡ് ചെയ്യുക"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"സ്ക്രീൻ പൂർണ്ണമായി റെക്കോർഡ് ചെയ്യുക"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"മുഴുവൻ സ്ക്രീനും റെക്കോർഡ് ചെയ്യുക: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"നിങ്ങളുടെ സ്ക്രീൻ പൂർണ്ണമായി റെക്കോർഡ് ചെയ്യുമ്പോൾ, സ്ക്രീനിൽ ദൃശ്യമാകുന്ന എല്ലാം റെക്കോർഡ് ചെയ്യപ്പെടും. അതിനാൽ പാസ്വേഡുകൾ, പേയ്മെന്റ് വിശദാംശങ്ങൾ, സന്ദേശങ്ങൾ, ഫോട്ടോകൾ, ഓഡിയോ, വീഡിയോ എന്നിവ പോലുള്ള കാര്യങ്ങൾ നൽകുമ്പോൾ സൂക്ഷിക്കുക."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"നിങ്ങളുടെ ആപ്പ് റെക്കോർഡ് ചെയ്യുമ്പോൾ, ആ ആപ്പിൽ കാണിക്കുന്നതോ പ്ലേ ചെയ്യുന്നതോ ആയ എല്ലാ കാര്യങ്ങളും റെക്കോർഡ് ചെയ്യപ്പെടും. അതിനാൽ പാസ്വേഡുകൾ, പേയ്മെന്റ് വിശദാംശങ്ങൾ, സന്ദേശങ്ങൾ, ഫോട്ടോകൾ, ഓഡിയോ, വീഡിയോ എന്നിവ പോലുള്ള കാര്യങ്ങൾ നൽകുമ്പോൾ സൂക്ഷിക്കുക."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"സ്ക്രീൻ റെക്കോർഡ് ചെയ്യുക"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"പ്രീസെറ്റ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"പ്രീസെറ്റ്"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"തിരഞ്ഞെടുത്തു"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ടൂളുകൾ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"തത്സമയ ക്യാപ്ഷൻ"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"കുറിപ്പ്"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"പ്രാധാന്യം കുറഞ്ഞ അറിയിപ്പ് ചിഹ്നങ്ങൾ"</string>
<string name="other" msgid="429768510980739978">"മറ്റുള്ളവ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ടൈൽ നീക്കം ചെയ്യുക"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ടൈൽ, അവസാന ഭാഗത്ത് ചേർക്കുക"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"അവസാന ഭാഗത്ത് ടൈൽ ചേർക്കുക"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ടൈൽ നീക്കുക"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ടൈൽ ചേർക്കുക"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"ഇഷ്ടമുള്ള ഭാഗത്ത് ടൈൽ ചേർക്കുക"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> എന്നതിലേക്ക് നീക്കുക"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> എന്ന സ്ഥാനത്തേക്ക് ചേർക്കുക"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"സ്ഥാനം അസാധുവാണ്."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ഉപയോക്താവിനെ തിരഞ്ഞെടുക്കുക"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ഇന്റർനെറ്റ് ഇല്ല"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ക്രമീകരണം തുറക്കുക."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ക്രമീകരണ ക്രമം എഡിറ്റുചെയ്യുക."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"ദ്രുത ക്രമീകരണത്തിന്റെ ക്രമം എഡിറ്റ് ചെയ്യുക."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"പവർ മെനു"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"പേജ് <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ലോക്ക് സ്ക്രീൻ"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(വിച്ഛേദിച്ചു)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"മാറാനാകുന്നില്ല. വീണ്ടും ശ്രമിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ഒരു ഉപകരണം കണക്റ്റ് ചെയ്യുക"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ഈ സെഷൻ കാസ്റ്റ് ചെയ്യാൻ, ആപ്പ് തുറക്കുക."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"അജ്ഞാതമായ ആപ്പ്"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"കാസ്റ്റ് ചെയ്യുന്നത് നിർത്തുക"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ഓഡിയോ ഔട്ട്പുട്ടിന് ലഭ്യമായ ഉപകരണങ്ങൾ."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ഹോമിലേക്ക് പോകുക"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"അടുത്തിടെയുള്ള ആപ്പുകൾ കാണുക"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"പൂർത്തിയായി"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"വീണ്ടും ശ്രമിക്കുക!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"മടങ്ങുക"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ കൊണ്ട് ഇടത്തേക്കോ വലത്തേക്കോ സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"കൊള്ളാം!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"മടങ്ങുക ജെസ്ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"നിങ്ങളുടെ ടച്ച്പാഡ് ഉപയോഗിച്ച് തിരികെ പോകാൻ, മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് ഇടത്തോട്ടോ വലത്തോട്ടോ സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ഹോമിലേക്ക് പോകൂ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"കൊള്ളാം!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ഹോം ജെസ്ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"നിങ്ങളുടെ ഹോം സ്ക്രീനിലേക്ക് പോകാൻ ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"അടുത്തിടെയുള്ള ആപ്പുകൾ കാണുക"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"നിങ്ങളുടെ ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ കൊണ്ട് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"കൊള്ളാം!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"അടുത്തിടെയുള്ള ആപ്പുകൾ കാണുക എന്ന ജെസ്ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"സമീപകാല ആപ്പുകൾ കാണുന്നതിന്, നിങ്ങളുടെ ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"എല്ലാ ആപ്പുകളും കാണുക"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"നിങ്ങളുടെ കീബോർഡിലെ ആക്ഷൻ കീ അമർത്തുക"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"അഭിനന്ദനങ്ങൾ!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"\'എല്ലാ ആപ്പുകളും കാണുക\' ജെസ്ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"നിങ്ങളുടെ എല്ലാ ആപ്പുകളും കാണുന്നതിന് കീബോർഡിലെ ആക്ഷൻ കീ അമർത്തുക"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ട്യൂട്ടോറിയൽ ആനിമേഷൻ, താൽക്കാലികമായി നിർത്താനും പ്ലേ പുനരാരംഭിക്കാനും ക്ലിക്ക് ചെയ്യുക."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"കീബോഡ് ബാക്ക്ലൈറ്റ്"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-ൽ %1$d-ാമത്തെ ലെവൽ"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 47a5468..75471ba 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Дэлгэц бичих горимын үргэлжилж буй мэдэгдэл"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Дэлгэцээ бичих үү?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Нэг аппыг бичих"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Бүтэн дэлгэцийг бичих"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Дэлгэцийг бүхэлд нь бичих: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Таныг бүтэн дэлгэцээ бичиж байхад дэлгэц дээр тань харуулж буй аливаа зүйлийг бичдэг. Тиймээс нууц үг, төлбөрийн дэлгэрэнгүй, мессеж, зураг, аудио, видео зэрэг зүйлд болгоомжтой хандаарай."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Таныг апп бичиж байхад тухайн аппад харуулж эсвэл тоглуулж буй аливаа зүйлийг бичдэг. Тиймээс нууц үг, төлбөрийн дэлгэрэнгүй, мессеж, зураг, аудио, видео зэрэг зүйлд болгоомжтой хандаарай."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Дэлгэцийг бичих"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Урьдчилсан тохируулгыг шинэчилж чадсангүй"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Урьдчилсан тохируулга"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Сонгосон"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Хэрэгсэл"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Шууд тайлбар"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Тэмдэглэл"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Бага ач холбогдолтой мэдэгдлийн дүрс тэмдгийг харуулах"</string>
<string name="other" msgid="429768510980739978">"Бусад"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"хавтанг хасна уу"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"дуусгахын тулд хавтан нэмэх"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Хавтанг зөөх"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Хавтан нэмэх"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> руу зөөнө үү"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> байрлалд нэмнэ үү"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Байрлал буруу байна."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"хэрэглэгчийг сонгох"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Интернэт алга"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> тохиргоог нээнэ үү."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Тохиргооны дарааллыг өөрчилнө үү."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Асаах/унтраах цэс"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g>-н <xliff:g id="ID_1">%1$d</xliff:g>-р хуудас"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Түгжээтэй дэлгэц"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(салсан)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Сэлгэх боломжгүй. Дахин оролдохын тулд товшино уу."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Төхөөрөмж холбох"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Энэ үйл явдлыг дамжуулахын тулд аппыг нээнэ үү."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Үл мэдэгдэх апп"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Дамжуулахыг зогсоох"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Аудио гаралт хийх боломжтой төхөөрөмжүүд."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Нүүр хуудас руу очих"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Саяхны аппуудыг харах"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Болсон"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Дахин оролдоно уу!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Буцах"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Мэдрэгч самбар дээрээ гурван хуруугаа ашиглан зүүн эсвэл баруун тийш шударна уу"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Янзтай!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Та буцах зангааг гүйцэтгэлээ."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Мэдрэгч самбараа буцааж ашиглахын тулд гурван хуруугаараа зүүн эсвэл баруун тийш шударна уу"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Үндсэн нүүр лүү очих"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Мэдрэгч самбар дээрээ гурван хуруугаараа дээш шударна уу"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Үнэхээр сайн ажиллалаа!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Та үндсэн нүүр лүү очих зангааг гүйцэтгэлээ"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Үндсэн нүүр лүүгээ очихын тулд мэдрэгч самбар дээрээ гурван хуруугаараа дээш шударна уу"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Саяхны аппуудыг харах"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Мэдрэгч самбар дээрээ гурван хуруугаа ашиглан дээш шудраад, удаан дарна уу"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Сайн байна!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Та саяхны аппуудыг харах зангааг гүйцэтгэсэн."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Саяхны аппуудыг харахын тулд мэдрэгч самбар дээрээ гурван хуруугаараа дээш шудраад, удаан дарна уу"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Бүх аппыг харах"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Гар дээрх тусгай товчлуурыг дарна уу"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Сайн байна!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Та бүх аппыг харах зангааг гүйцэтгэлээ"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Бүх аппаа харахын тулд гар дээрээ байх тусгай товчлуурыг дарна уу"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Зааврын анимаци, түр зогсоохын тулд товшиж, үргэлжлүүлэн тоглуулна уу."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Гарын арын гэрэл"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-с %1$d-р түвшин"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index b5c298b..bd6cb13 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रेकॉर्ड सत्रासाठी सुरू असलेली सूचना"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"तुमची स्क्रीन रेकॉर्ड करायची आहे का?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"एक अॅप रेकॉर्ड करा"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"पूर्ण स्क्रीन रेकॉर्ड करा"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"संपूर्ण स्क्रीन रेकॉर्ड करा: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"तुम्ही तुमची पूर्ण स्क्रीन रेकॉर्ड करता, तेव्हा तुमच्या स्क्रीनवर दाखवलेली कोणतीही गोष्ट रेकॉर्ड केली जाते. त्यामुळे पासवर्ड, पेमेंट तपशील, मेसेज, फोटो आणि ऑडिओ व व्हिडिओ यांसारख्या गोष्टींबाबत सावधगिरी बाळगा."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"तुम्ही अॅप रेकॉर्ड करता, तेव्हा त्या अॅपमध्ये दाखवलेली किंवा प्ले केलेली कोणतीही गोष्ट रेकॉर्ड केली जाते. त्यामुळे पासवर्ड, पेमेंट तपशील, मेसेज, फोटो आणि ऑडिओ व व्हिडिओ यांसारख्या गोष्टींबाबत सावधगिरी बाळगा."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"स्क्रीन रेकॉर्ड करा"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रीसेट अपडेट करता आले नाही"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"प्रीसेट"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"निवडला आहे"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"टूल"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"लाइव्ह कॅप्शन"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"टीप"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"कमी प्राधान्य सूचना आयकन दर्शवा"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल काढून टाका"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"टाइल शेवटच्या स्थानावर जोडा"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल हलवा"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"टाइल जोडा"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> यावर हलवा"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> स्थानावर जोडा"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"स्थान चुकीचे आहे."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"वापरकर्ता निवडा"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"इंटरनेट नाही"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> सेटिंग्ज उघडा."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"सेटिंग्जचा क्रम संपादित करा."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"पॉवर मेनू"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> पैकी <xliff:g id="ID_1">%1$d</xliff:g> पेज"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"लॉक स्क्रीन"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(डिस्कनेक्ट केलेले)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"स्विच करू शकत नाही. पुन्हा प्रयत्न करण्यासाठी टॅप करा."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"डिव्हाइस कनेक्ट करा"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"हे सेशन कास्ट करण्यासाठी, कृपया ॲप उघडा."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अज्ञात अॅप"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्ट करणे थांबवा"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ऑडिओ आउटपुटसाठी उपलब्ध डिव्हाइस."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"होमवर जा"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"अलीकडील अॅप्स पहा"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"पूर्ण झाले"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"पुन्हा प्रयत्न करा!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"मागे जा"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"तुमच्या टचपॅडवर तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"छान!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"तुम्ही गो बॅक जेश्चर पूर्ण केले."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"तुमचा टचपॅड वापरून परत जाण्यासाठी, तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"होमवर जा"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"तुमच्या टचपॅडवर तीन बोटांनी वर स्वाइप करा"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"उत्तम कामगिरी!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"तुम्ही गो होम जेश्चर पूर्ण केले आहे"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"तुमच्या होम स्क्रीनवर जाण्यासाठी तुमच्या टचपॅडवर तीन बोटांनी वर स्वाइप करा"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"अलीकडील अॅप्स पहा"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"तुमच्या टचपॅडवर तीन बोटांनी वर स्वाइप करून धरून ठेवा"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"उत्तम कामगिरी!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"तुम्ही अलीकडील ॲप्स पाहण्याचे जेश्चर पूर्ण केले आहे."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"अलीकडील अॅप्स पाहण्यासाठी, तुमच्या टचपॅडवर तीन बोटांनी वर स्वाइप करून धरून ठेवा"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"सर्व अॅप्स पहा"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"तुमच्या कीबोर्डवर अॅक्शन की प्रेस करा"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"खूप छान!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"तुम्ही ॲप्स पाहण्याचे जेश्चर पूर्ण केले आहे"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"तुमचे सर्व ॲप्स पाहण्यासाठी तुमच्या कीबोर्डवरील अॅक्शन की प्रेस करा"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ट्यूटोरियल अॅनिमेशन थांबवण्यासाठी किंवा पुन्हा सुरू करण्यासाठी प्ले करा वर क्लिक करा."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"कीबोर्ड बॅकलाइट"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d पैकी %1$d पातळी"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 481f662..3af5957 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pemberitahuan breterusan untuk sesi rakaman skrin"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Rakam skrin anda?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Rakam satu apl"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Rakam seluruh skrin"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Rakam keseluruhan skrin: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Apabila anda merakam seluruh skrin anda, apa-apa sahaja yang dipaparkan pada skrin anda akan dirakam. Oleh hal yang demikian, berhati-hati dengan perkara seperti kata laluan, butiran pembayaran, mesej, foto dan audio serta video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Apabila anda merakam apl, apa-apa sahaja yang dipaparkan atau dimainkan dalam apl tersebut akan dirakam. Oleh hal yang demikian, berhati-hati dengan perkara seperti kata laluan, butiran pembayaran, mesej, foto dan audio serta video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Rakam skrin"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Tidak dapat mengemaskinikan pratetapan"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Pratetapan"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Dipilih"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Alatan"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Sari Kata Langsung"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Tunjukkan ikon pemberitahuan keutamaan rendah"</string>
<string name="other" msgid="429768510980739978">"Lain-lain"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alih keluar jubin"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"tambahkan jubin pada bahagian hujung"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"tambahkan jubin pada kedudukan terakhir"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Alihkan jubin"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tambahkan jubin"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Tambahkan jubin pada kedudukan yang dikehendaki"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Alih ke <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Tambahkan pada kedudukan <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Kedudukan tidak sah."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"pilih pengguna"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Tiada Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Buka tetapan <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edit susunan tetapan."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Edit urutan Tetapan Pantas."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu kuasa"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Halaman <xliff:g id="ID_1">%1$d</xliff:g> daripada <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Kunci skrin"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(diputuskan sambungan)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Tidak dapat menukar. Ketik untuk mencuba lagi."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Sambungkan peranti"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Untuk menghantar sesi ini, sila buka apl."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Apl yang tidak diketahui"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Berhenti menghantar"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Peranti tersedia untuk audio output."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Akses laman utama"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat apl terbaharu"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Cuba lagi!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Leret ke kiri atau ke kanan menggunakan tiga jari pada pad sentuh"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bagus!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Anda telah melengkapkan gerak isyarat kembali."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Untuk kembali menggunakan pad sentuh anda, leret ke kiri atau ke kanan menggunakan tiga jari"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Akses laman utama"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Leret ke atas dengan tiga jari pada pad sentuh anda"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bagus!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Anda telah melengkapkan gerak isyarat akses laman utama"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Leret ke atas dengan tiga jari pada pad sentuh anda untuk mengakses skrin utama anda"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Lihat apl terbaharu"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Leret ke atas dan tahan menggunakan tiga jari pada pad sentuh"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Syabas!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Anda telah melengkapkan gerak isyarat lihat apl terbaharu."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Untuk melihat apl terbaharu, leret ke atas dan tahan menggunakan tiga jari pada pad sentuh anda"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Lihat semua apl"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tekan kekunci tindakan pada papan kekunci anda"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Syabas!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Anda telah melengkapkan gerak isyarat lihat semua apl"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Tekan kekunci tindakan pada papan kekunci anda untuk melihat semua apl anda"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animasi tutorial, klik untuk menjeda dan menyambung semula main."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Cahaya latar papan kekunci"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tahap %1$d daripada %2$d"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index bde5f57..a8a2eaa 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ဖန်သားပြင် ရိုက်ကူးသည့် စက်ရှင်အတွက် ဆက်တိုက်လာနေသော အကြောင်းကြားချက်"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ဖန်သားပြင်ကို ရိုက်ကူးမလား။"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"အက်ပ်တစ်ခုကို ရိုက်ကူးရန်"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ဖန်သားပြင်တစ်ခုလုံးကို ရိုက်ကူးရန်"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ဖန်သားပြင်တစ်ခုလုံးကို ရိုက်ကူးရန်- %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"သင့်ဖန်သားပြင်တစ်ခုလုံး ရိုက်ကူးနေချိန်တွင် ဖန်သားပြင်တွင် ပြထားသည့် အရာအားလုံးကို ရိုက်ကူးသည်။ စကားဝှက်၊ ငွေပေးချေမှု အချက်အလက်၊ မက်ဆေ့ဂျ်၊ ဓာတ်ပုံ၊ အသံနှင့် ဗီဒီယိုကဲ့သို့ အရာများကို ဂရုစိုက်ပါ။"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"အက်ပ်ကို ရိုက်ကူးနေချိန်တွင် ယင်းအက်ပ်တွင် ပြထားသော (သို့) ဖွင့်ထားသော အရာအားလုံးကို ရိုက်ကူးသည်။ စကားဝှက်၊ ငွေပေးချေမှု အချက်အလက်၊ မက်ဆေ့ဂျ်၊ ဓာတ်ပုံ၊ အသံနှင့် ဗီဒီယိုကဲ့သို့ အရာများကို ဂရုစိုက်ပါ။"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ဖန်သားပြင်ကို ရိုက်ကူးရန်"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"အသင့်သုံးကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ကြိုတင်သတ်မှတ်ချက်"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ရွေးထားသည်"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"တူးလ်များ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"တိုက်ရိုက်စာတန်း"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"မှတ်စု"</string>
@@ -707,7 +723,7 @@
<string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ခေါင်းလှုပ်ရှားမှု"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ဖုန်းခေါ်သံမုဒ်သို့ ပြောင်းရန် တို့ပါ"</string>
<string name="volume_ringer_mode" msgid="6867838048430807128">"အသံမြည်မုဒ်"</string>
- <string name="volume_ringer_drawer_closed_content_description" msgid="4737792429808781745">"<xliff:g id="VOLUME_RINGER_STATUS">%1$s</xliff:g>၊ ဖုန်းခေါ်သံမုဒ်သို့ ပြောင်းရန် တို့ပါ"</string>
+ <string name="volume_ringer_drawer_closed_content_description" msgid="4737792429808781745">"<xliff:g id="VOLUME_RINGER_STATUS">%1$s</xliff:g>၊ ဖုန်းခေါ်သံမုဒ် ပြောင်းရန် တို့ပါ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"အသံပိတ်ရန်"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"အသံဖွင့်ရန်"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"တုန်ခါမှု"</string>
@@ -880,7 +896,7 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"တစ်ပြိုင်နက် များစွာလုပ်ခြင်း"</string>
<string name="system_multitasking_rhs" msgid="8779289852395243004">"အက်ပ်ကို ညာ၌ထားကာ မျက်နှာပြင် ခွဲ၍ပြသခြင်း သုံးရန်"</string>
<string name="system_multitasking_lhs" msgid="7348595296208696452">"အက်ပ်ကို ဘယ်၌ထားကာ မျက်နှာပြင် ခွဲ၍ပြသခြင်း သုံးရန်"</string>
- <string name="system_multitasking_full_screen" msgid="4940465971687159429">"ဖန်သားပြင်အပြည့် ပြောင်းခြင်း"</string>
+ <string name="system_multitasking_full_screen" msgid="4940465971687159429">"ဖန်သားပြင်အပြည့် ပြောင်းရန်"</string>
<string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"မျက်နှာပြင်ခွဲ၍ပြသခြင်း သုံးစဉ် ညာ (သို့) အောက်ရှိအက်ပ်သို့ ပြောင်းရန်"</string>
<string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းသုံးစဉ် ဘယ် (သို့) အထက်ရှိအက်ပ်သို့ ပြောင်းရန်"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"မျက်နှာပြင် ခွဲ၍ပြသစဉ်- အက်ပ်တစ်ခုကို နောက်တစ်ခုနှင့် အစားထိုးရန်"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"အရေးမကြီးသော အကြောင်းကြားချက် သင်္ကေတများ ပြရန်"</string>
<string name="other" msgid="429768510980739978">"အခြား"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"အကွက်ငယ်ကို ဖယ်ရှားရန်"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"အဆုံးတွင် အကွက်ငယ်ထည့်ရန်"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"အကွက်ငယ်ကို ရွှေ့ရန်"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"အကွက်ငယ်ကို ထည့်ရန်"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> သို့ ရွှေ့ရန်"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> အနေအထားသို့ ပေါင်းထည့်ရန်"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"နေရာ မမှန်ပါ။"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"အသုံးပြုသူရွေးရန်"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"အင်တာနက် မရှိပါ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ဆက်တင်များကို ဖွင့်ပါ။"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ဆက်တင်များ၏ အစီအစဉ်ကို တည်းဖြတ်ပါ။"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ပါဝါမီနူး"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"စာမျက်နှာ <xliff:g id="ID_2">%2$d</xliff:g> အနက်မှ စာမျက်နှာ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"လော့ခ်မျက်နှာပြင်"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ချိတ်ဆက်မှု မရှိပါ)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ပြောင်း၍ မရပါ။ ပြန်စမ်းကြည့်ရန် တို့ပါ။"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"စက်တစ်ခုနှင့် ချိတ်ဆက်ရန်"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"အက်ပ်ဖွင့်ပြီး ဤစက်ရှင်ကို ကာစ်လုပ်နိုင်သည်။"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"အမည်မသိ အက်ပ်"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ကာစ် ရပ်ရန်"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"အသံအထွက်အတွက် ရရှိနိုင်သောစက်များ။"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ပင်မစာမျက်နှာသို့ သွားရန်"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"မကြာသေးမီကအက်ပ်များကို ကြည့်ရန်"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ပြီးပြီ"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"ထပ်စမ်းကြည့်ပါ။"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ပြန်သွားရန်"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"သင့်တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် ဘယ် (သို့) ညာသို့ ပွတ်ဆွဲပါ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"ကောင်းပါသည်။"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"နောက်သို့လက်ဟန် အပြီးသတ်လိုက်ပါပြီ"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"တာ့ချ်ပက်ပြန်သုံးရန် လက်သုံးချောင်းဖြင့် ဘယ်/ညာ ပွတ်ဆွဲပါ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ပင်မစာမျက်နှာသို့ သွားရန်"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"တာ့ချ်ပက်ပေါ်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"တော်ပါပေသည်။"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ပင်မစာမျက်နှာသို့သွားသည့် လက်ဟန် အပြီးသတ်လိုက်ပါပြီ"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ပင်မစာမျက်နှာသို့ သွားရန် တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"မကြာသေးမီကအက်ပ်များကို ကြည့်ခြင်း"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"သင့်တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"တော်ပါပေသည်။"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"မကြာသေးမီကအက်ပ်များကို ကြည့်ခြင်းလက်ဟန် သင်ခန်းစာပြီးပါပြီ။"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"လတ်တလောအက်ပ်များကြည့်ရန် တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"အက်ပ်အားလုံးကို ကြည့်ခြင်း"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ကီးဘုတ်တွင် လုပ်ဆောင်ချက်ကီး နှိပ်ပါ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"အလွန်ကောင်းပါသည်။"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"အက်ပ်အားလုံးကို ကြည့်ခြင်းလက်ဟန် သင်ခန်းစာပြီးပါပြီ"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"အက်ပ်အားလုံးကြည့်ရန် ကီးဘုတ်ပေါ်ရှိ လုပ်ဆောင်ချက်ကီးကို နှိပ်ပါ"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ရှင်းလင်းပို့ချချက် လှုပ်ရှားသက်ဝင်ပုံ၊ ခဏရပ်ပြီး ဆက်ဖွင့်ရန် နှိပ်ပါ။"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ကီးဘုတ်နောက်မီး"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"အဆင့် %2$d အနက် %1$d"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 9dd0f99..ae135cc 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Vedvarende varsel for et skjermopptak"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Vil du ta opp skjermen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Ta opp én app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Ta opp hele skjermen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Ta opp hele skjermen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Når du tar opp hele skjermen, blir alt som vises på skjermen, tatt opp. Derfor bør du være forsiktig med for eksempel passord, betalingsopplysninger, meldinger, bilder, lyd og video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Når du tar opp en app, blir alt som vises eller spilles av i appen, tatt opp. Derfor bør du være forsiktig med for eksempel passord, betalingsopplysninger, meldinger, bilder, lyd og video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ta opp skjermen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Kunne ikke oppdatere forhåndsinnstillingen"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Forhåndsinnstilling"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Valgt"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Verktøy"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Direkteteksting"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Merknad"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for varsler med lav prioritet"</string>
<string name="other" msgid="429768510980739978">"Annet"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjerne infobrikken"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"legge til en infobrikke på slutten"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytt infobrikken"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Legg til en infobrikke"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flytt til <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Legg til posisjonen <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posisjonen er ugyldig."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"velge en bruker"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Ingen internettilkobling"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Åpne <xliff:g id="ID_1">%s</xliff:g>-innstillingene."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Endre rekkefølgen på innstillingene."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Av/på-meny"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Side <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Låseskjerm"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(frakoblet)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Kan ikke bytte. Trykk for å prøve igjen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Koble til en enhet"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"For å caste denne økten, åpne appen."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ukjent app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stopp castingen"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Tilgjengelige enheter for lydutgang."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Gå til startsiden"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se nylige apper"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Ferdig"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Prøv på nytt."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbake"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Sveip til venstre eller høyre med tre fingre på styreflaten"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bra!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Du har fullført bevegelsen for å gå tilbake."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"For å gå tilbake med styreflaten, sveip til venstre eller høyre med tre fingre"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Gå til startsiden"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Sveip opp med tre fingre på styreflaten"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bra jobbet!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Du har fullført bevegelsen for å gå til startskjermen"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Sveip opp med tre fingre på styreflaten for å gå til startskjermen"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Se nylige apper"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Sveip opp og hold med tre fingre på styreflaten"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bra jobbet!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du har fullført bevegelsen for å se nylige apper."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"For å se nylige apper, sveip opp og hold med tre fingre på styreflaten"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Se alle apper"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Trykk på handlingstasten på tastaturet"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bra!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Du har fullført bevegelsen for å se alle apper"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Trykk på handlingstasten på tastaturet for å se alle appene dine"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Veiledningsanimasjon. Klikk for å sette avspillingen på pause og gjenoppta den."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Bakgrunnslys for tastatur"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 968fd51..c701ebc 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -54,7 +54,7 @@
<string name="usb_debugging_always" msgid="4003121804294739548">"यो कम्प्युटरबाट सधैँ अनुमति दिनुहोस्"</string>
<string name="usb_debugging_allow" msgid="1722643858015321328">"अनुमति दिनुहोस्"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB डिबग गर्न अनुमति छैन"</string>
- <string name="usb_debugging_secondary_user_message" msgid="1888835696965417845">"हालैमा यस डिभाइसमा साइन इन भएका प्रयोगकर्ताले USB डिबगिङ सक्रिय गर्न सक्दैनन्। यो सुविधा प्रयोग गर्न कृपया खाताका एड्मिनका रूपमा साइन इन गर्नुहोस्।"</string>
+ <string name="usb_debugging_secondary_user_message" msgid="1888835696965417845">"हाल यस डिभाइसमा साइन इन भएका प्रयोगकर्ताले USB डिबगिङ सक्रिय गर्न सक्दैनन्। यो सुविधा प्रयोग गर्न कृपया खाताका एड्मिनका रूपमा साइन इन गर्नुहोस्।"</string>
<string name="hdmi_cec_set_menu_language_title" msgid="1259765420091503742">"तपाईं सिस्टमको भाषा बदलेर <xliff:g id="LANGUAGE">%1$s</xliff:g> बनाउन चाहनुहुन्छ?"</string>
<string name="hdmi_cec_set_menu_language_description" msgid="8176716678074126619">"अर्को डिभाइसले सिस्टमको भाषा परिवर्तन गर्न अनुरोध गरेको छ"</string>
<string name="hdmi_cec_set_menu_language_accept" msgid="2513689457281009578">"भाषा परिवर्तन गर्नुहोस्"</string>
@@ -65,7 +65,7 @@
<string name="wifi_debugging_always" msgid="2968383799517975155">"यस नेटवर्कमा सधैँ अनुमति दिनुहोस्"</string>
<string name="wifi_debugging_allow" msgid="4573224609684957886">"अनुमति दिनुहोस्"</string>
<string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"वायरलेस डिबगिङ सेवालाई अनुमति दिइएको छैन"</string>
- <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"हालैमा यस डिभाइसमा साइन इन भएका प्रयोगकर्ताले USB डिबगिङ सक्रिय गर्न सक्दैनन्। यो सुविधा प्रयोग गर्न कृपया खाताका एड्मिनका रूपमा साइन इन गर्नुहोस्।"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"हाल यस डिभाइसमा साइन इन भएका प्रयोगकर्ताले USB डिबगिङ अन गर्न सक्दैनन्। यो सुविधा प्रयोग गर्न कृपया खाताका एड्मिनका रूपमा साइन इन गर्नुहोस्।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB पोर्ट असक्षम पारियो"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"तपाईंको यन्त्रलाई तरल पदार्थ वा धुलोबाट जोगाउन यसको USB पोर्ट असक्षम पारिएको छ र यसले कुनै पनि सहायक उपकरणहरू पहिचान गर्ने छैन।\n\nउक्त USB पोर्ट फेरि प्रयोग गर्दा हुन्छ भने तपाईंलाई यसबारे सूचित गरिने छ।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"चार्जर तथा सामानहरू पत्ता लगाउन सक्षम पारिएको USB पोर्ट"</string>
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"कुनै स्क्रिन रेकर्ड गर्ने सत्रका लागि चलिरहेको सूचना"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"तपाईंको स्क्रिन रेकर्ड गर्ने हो?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"एउटा एप रेकर्ड गर्नुहोस्"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"पूरै स्क्रिन रेकर्ड गर्नुहोस्"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"सम्पूर्ण स्क्रिन रेकर्ड गर्नुहोस्: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"तपाईंले आफ्नो पूरै स्क्रिन रेकर्ड गरिरहेका बेला तपाईंको स्क्रिनमा देखाइने सबै सामग्री रेकर्ड गरिन्छ। त्यसैले पासवर्ड, भुक्तानीसम्बन्धी विवरण, म्यासेज, फोटो र अडियो तथा भिडियो जस्ता कुरा हेर्दा वा प्ले गर्दा सावधानी अपनाउनुहोला।"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"तपाईंले यो एप रेकर्ड गरिरहेका बेला यो एपमा देखाइने वा प्ले गरिने सबै सामग्री रेकर्ड गरिन्छ। त्यसैले पासवर्ड, भुक्तानीसम्बन्धी विवरण, म्यासेज, फोटो र अडियो तथा भिडियो जस्ता कुरा हेर्दा वा प्ले गर्दा सावधानी अपनाउनुहोला।"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"स्क्रिन रेकर्ड गर्नुहोस्"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"प्रिसेट अपडेट गर्न सकिएन"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"पूर्वनिर्धारित"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"चयन गरिएको छ"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"टुल"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"लाइभ क्याप्सन"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"नोट"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"कम प्राथमिकताका सूचना आइकनहरू देखाउनुहोस्"</string>
<string name="other" msgid="429768510980739978">"अन्य"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल हटाउनुहोस्"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"टाइल अन्त्यमा हाल्नुहोस्"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल सार्नुहोस्"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"टाइल हाल्नुहोस्"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"टाइल सारेर <xliff:g id="POSITION">%1$d</xliff:g> मा लैजानुहोस्"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"टाइल यो अवस्था <xliff:g id="POSITION">%1$d</xliff:g> मा हाल्नुहोस्"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"पोजिसन अवैध छ।"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"प्रयोगकर्ता छान्नुहोस्"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"इन्टरनेट छैन"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> सम्बन्धी सेटिङहरूलाई खोल्नुहोस्।"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"सेटिङहरूको क्रमलाई सम्पादन गर्नुहोस्।"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"पावर मेनु"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> मध्ये पृष्ठ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"लक स्क्रिन"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(डिस्कनेक्ट गरिएको छ)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"बदल्न सकिएन। फेरि प्रयास गर्न ट्याप गर्नुहोस्।"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"कुनै डिभाइस कनेक्ट गर्नुहोस्"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"यो सत्र कास्ट गर्न चाहनुहुन्छ भने कृपया एप खोल्नुहोस्।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अज्ञात एप"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्ट गर्न छाड्नुहोस्"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"अडियो आउटपुटका लागि उपलब्ध डिभाइसहरू।"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"होम स्क्रिनमा जानुहोस्"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"हालसालै चलाइएका एपहरू हेर्नुहोस्"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"सम्पन्न भयो"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"फेरि प्रयास गर्नुहोस्!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"पछाडि जानुहोस्"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"तीन वटा औँला प्रयोग गरी टचप्याडमा बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"राम्रो!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"तपाईंले जेस्चर प्रयोग गरी पछाडि जाने तरिका सिक्नुभएको छ।"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"टचप्याड प्रयोग गरी पछाडि जान तीन औँला प्रयोग गरी बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"होमपेजमा जानुहोस्"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"टचप्याडमा तीन वटा औँलाले माथितिर स्वाइप गर्नुहोस्"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"अद्भुत!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"तपाईंले \"होम स्क्रिनमा जानुहोस्\" नामक जेस्चर प्रयोग गर्ने तरिका सिक्नुभयो"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"होम स्क्रिनमा जान टचप्याडमा तीन औँलाले माथितिर स्वाइप गर्नुहोस्"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"हालसालै चलाइएका एपहरू हेर्नुहोस्"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"तीन वटा औँला प्रयोग गरी टचप्याडमा माथितिर स्वाइप गर्नुहोस् र होल्ड गर्नुहोस्"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"अद्भुत!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"तपाईंले जेस्चर प्रयोग गरी हालसालै चलाइएका एपहरू हेर्ने तरिका सिक्नुभएको छ।"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"हालसालैका एपहरू हेर्न तीन औँला प्रयोग गरी टचप्याडमा माथितिर स्वाइप गर्नुहोस् र होल्ड गर्नुहोस्"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"सबै एपहरू हेर्नुहोस्"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"आफ्नो किबोर्डमा भएको एक्सन की थिच्नुहोस्"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"स्याबास!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"तपाईंले जेस्चर प्रयोग गरी सबै एपहरू हेर्ने तरिका सिक्नुभएको छ"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"आफ्ना सबै एपहरू हेर्न आफ्नो किबोर्डमा भएको एक्सन की थिच्नुहोस्"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ट्युटोरियलको एनिमेसन, पज वा सुचारु गर्न क्लिक गर्नुहोस्।"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"किबोर्ड ब्याकलाइट"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d मध्ये %1$d औँ स्तर"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index adc157b..55b701e 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Doorlopende melding voor een schermopname-sessie"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Je scherm opnemen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Eén app opnemen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Hele scherm opnemen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Hele scherm opnemen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Als je je hele scherm opneemt, wordt alles opgenomen wat op je scherm wordt getoond. Wees daarom voorzichtig met bijvoorbeeld wachtwoorden, betalingsgegevens, berichten, foto\'s, en audio en video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Als je een app opneemt, wordt alles opgenomen wat wordt getoond of afgespeeld in die app. Wees daarom voorzichtig met bijvoorbeeld wachtwoorden, betalingsgegevens, berichten, foto\'s, en audio en video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Scherm opnemen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Kan voorinstelling niet updaten"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voorinstelling"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Geselecteerd"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Tools"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live ondertiteling"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Notitie"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Iconen voor meldingen met lage prioriteit tonen"</string>
<string name="other" msgid="429768510980739978">"Overig"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"tegel verwijderen"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"tegel toevoegen aan einde"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"tegel toevoegen op de laatste positie"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Tegel verplaatsen"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tegel toevoegen"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Tegel toevoegen op gewenste positie"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Verplaatsen naar <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Toevoegen aan positie <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Positie ongeldig."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"gebruiker kiezen"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Geen internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g>-instellingen openen."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Volgorde van instellingen bewerken."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Volgorde van Snelle instellingen bewerken."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Aan/uit-menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Vergrendelscherm"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(verbinding verbroken)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Kan niet schakelen. Tik om het opnieuw te proberen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Apparaat koppelen"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Als je deze sessie wilt casten, open je de app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Onbekende app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Casten stoppen"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Beschikbare apparaten voor audio-uitvoer."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Naar startscherm"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Recente apps bekijken"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Probeer het nog eens."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Terug"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe met 3 vingers naar links of rechts op de touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Goed zo!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Je weet nu hoe je het gebaar voor terug maakt."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Als je met de touchpad wilt teruggaan, swipe je met 3 vingers naar links of rechts"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Naar startscherm"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swipe met 3 vingers omhoog op de touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Goed gedaan!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Je weet nu hoe je het gebaar Naar startscherm maakt"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swipe met 3 vingers omhoog op de touchpad om naar het startscherm te gaan"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Recente apps bekijken"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swipe met 3 vingers omhoog en houd vast op de touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Goed gedaan!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Je weet nu hoe je het gebaar Recente apps bekijken maakt."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Als je recente apps wilt bekijken, swipe je met 3 vingers omhoog op de touchpad en houd je vast"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Alle apps bekijken"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Druk op de actietoets op het toetsenbord"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Goed gedaan!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Je weet nu hoe je het gebaar Alle apps bekijken maakt"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Druk op de actietoets op je toetsenbord om al je apps te bekijken"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorial-animatie, klik om het afspelen te onderbreken en te hervatten."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Achtergrondverlichting van toetsenbord"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d van %2$d"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 12a13ff..1ac2170 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ଏକ ସ୍କ୍ରିନ୍ ରେକର୍ଡ୍ ସେସନ୍ ପାଇଁ ଚାଲୁଥିବା ବିଜ୍ଞପ୍ତି"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ଆପଣଙ୍କ ସ୍କ୍ରିନକୁ ରେକର୍ଡ କରିବେ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ଗୋଟିଏ ଆପ ରେକର୍ଡ କରନ୍ତୁ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ସମ୍ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ ରେକର୍ଡ କରନ୍ତୁ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ସମ୍ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନକୁ ରେକର୍ଡ କରନ୍ତୁ: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ଆପଣ ଆପଣଙ୍କର ସମ୍ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ ରେକର୍ଡ କରିବା ସମୟରେ, ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଦେଖାଯାଉଥିବା ସବୁକିଛି ରେକର୍ଡ ହୋଇଥାଏ। ତେଣୁ ପାସୱାର୍ଡ, ପେମେଣ୍ଟ ବିବରଣୀ, ମେସେଜ, ଫଟୋ ଏବଂ ଅଡିଓ ଓ ଭିଡିଓ ପରି ବିଷୟଗୁଡ଼ିକ ପ୍ରତି ସତର୍କ ରୁହନ୍ତୁ।"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ଆପଣ ଏକ ଆପ ରେକର୍ଡ କରିବା ସମୟରେ, ସେହି ଆପରେ ଦେଖାଯାଉଥିବା କିମ୍ବା ପ୍ଲେ ହେଉଥିବା ସବୁକିଛି ରେକର୍ଡ ହୋଇଥାଏ। ତେଣୁ ପାସୱାର୍ଡ, ପେମେଣ୍ଟ ବିବରଣୀ, ମେସେଜ, ଫଟୋ ଏବଂ ଅଡିଓ ଓ ଭିଡିଓ ପରି ବିଷୟଗୁଡ଼ିକ ପ୍ରତି ସତର୍କ ରୁହନ୍ତୁ।"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ସ୍କ୍ରିନ ରେକର୍ଡ କରନ୍ତୁ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ପ୍ରିସେଟକୁ ଅପଡେଟ କରାଯାଇପାରିଲା ନାହିଁ"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ପ୍ରିସେଟ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ଚୟନ କରାଯାଇଛି"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ଟୁଲ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"ଲାଇଭ କେପ୍ସନ"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ନୋଟ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"କମ୍-ଅଗ୍ରାଧିକାର ବିଜ୍ଞପ୍ତି ଆଇକନ୍ ଦେଖାନ୍ତୁ"</string>
<string name="other" msgid="429768510980739978">"ଅନ୍ୟ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ଟାଇଲ୍ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ଶେଷରେ ଟାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ଟାଇଲ୍ ମୁଭ୍ କରନ୍ତୁ"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ଟାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>କୁ ମୁଭ୍ କରନ୍ତୁ"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ଅବସ୍ଥିତିରେ ଯୋଗ କରନ୍ତୁ"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ଅବସ୍ଥିତି ଅବୈଧ ଅଟେ।"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ୟୁଜର ବାଛନ୍ତୁ"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"କୌଣସି ଇଣ୍ଟରନେଟ୍ କନେକ୍ସନ୍ ନାହିଁ"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ସେଟିଙ୍ଗ ଖୋଲନ୍ତୁ।"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ସେଟିଂସର କ୍ରମ ଏଡିଟ କରନ୍ତୁ।"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ପାୱାର ମେନୁ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"ପୃଷ୍ଠା <xliff:g id="ID_1">%1$d</xliff:g> ମୋଟ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"ଲକ ସ୍କ୍ରିନ"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ବିଚ୍ଛିନ୍ନ କରାଯାଇଛି)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ସ୍ୱିଚ କରାଯାଇପାରିବ ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରିବାକୁ ଟାପ କରନ୍ତୁ।"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ଗୋଟିଏ ଡିଭାଇସ କନେକ୍ଟ କରନ୍ତୁ"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ଏହି ସେସନକୁ କାଷ୍ଟ କରିବା ପାଇଁ, ଦୟାକରି ଆପ ଖୋଲନ୍ତୁ।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ଅଜଣା ଆପ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ଅଡିଓ ଆଉଟପୁଟ ପାଇଁ ଉପଲବ୍ଧ ଡିଭାଇସଗୁଡ଼ିକ।"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ହୋମକୁ ଯାଆନ୍ତୁ"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ହୋଇଗଲା"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ପଛକୁ ଫେରନ୍ତୁ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ବାମ କିମ୍ବା ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"ବଢ଼ିଆ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"ଆପଣ \'ପଛକୁ ଫେରନ୍ତୁ\' ଜେଶ୍ଚର ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"ଆପଣଙ୍କ ଟଚପେଡକୁ ବ୍ୟବହାର କରି ପଛକୁ ଫେରିବା ପାଇଁ ତିନୋଟି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ବାମ କିମ୍ବା ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ହୋମକୁ ଯାଆନ୍ତୁ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"ବଢ଼ିଆ କାମ!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ଆପଣ \'ହୋମକୁ ଯାଆନ୍ତୁ\' ଜେଶ୍ଚର ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ଆପଣଙ୍କର ହୋମ ସ୍କ୍ରିନକୁ ଯିବା ପାଇଁ ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"ବର୍ତ୍ତମାନର ଆପ୍ସକୁ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠିକୁ ବ୍ୟବହାର କରି ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"ବଢ଼ିଆ କାମ!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ଆପଣ ବର୍ତ୍ତମାନର ଆପ୍ସ ଜେଶ୍ଚରକୁ ଭ୍ୟୁ କରିବା ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରିବାକୁ, ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ସବୁ ଆପ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ଆପଣଙ୍କର କୀବୋର୍ଡରେ ଆକ୍ସନ କୀ\'କୁ ଦବାନ୍ତୁ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ବହୁତ ବଢ଼ିଆ!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"ଆପଣ ସମସ୍ତ ଆପ୍ସ ଜେଶ୍ଚରକୁ ଭ୍ୟୁ କରିବା ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"ଆପଣଙ୍କ ସମସ୍ତ ଆପ୍ସକୁ ଭ୍ୟୁ କରିବା ପାଇଁ ଆପଣଙ୍କର କୀବୋର୍ଡରେ ଆକ୍ସନ କୀ\'କୁ ଦବାନ୍ତୁ"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ଟ୍ୟୁଟୋରିଆଲ ଆନିମେସନ, ପ୍ଲେ କରିବା ବିରତ କରି ପୁଣି ଆରମ୍ଭ କରିବାକୁ କ୍ଲିକ କରନ୍ତୁ।"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"କୀବୋର୍ଡ ବେକଲାଇଟ"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dରୁ %1$d ନମ୍ବର ଲେଭେଲ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index feaae0e..6eda17a 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ਕਿਸੇ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਸੈਸ਼ਨ ਲਈ ਚੱਲ ਰਹੀ ਸੂਚਨਾ"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ਕੀ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨਾ ਹੈ?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ਇੱਕ ਐਪ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ਪੂਰੀ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ਸਾਰੀ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਕਰੋ: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੀ ਪੂਰੀ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਖਾਈ ਜਾ ਰਹੀ ਹਰ ਚੀਜ਼ ਨੂੰ ਰਿਕਾਰਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਲਈ ਪਾਸਵਰਡਾਂ, ਭੁਗਤਾਨ ਵੇਰਵਿਆਂ, ਸੁਨੇਹਿਆਂ, ਫ਼ੋਟੋਆਂ ਅਤੇ ਨਾਲ ਹੀ ਆਡੀਓ ਅਤੇ ਵੀਡੀਓ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਵਾਸਤੇ ਸਾਵਧਾਨ ਰਹੋ।"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ਜਦੋਂ ਤੁਸੀਂ ਕਿਸੇ ਐਪ ਨੂੰ ਰਿਕਾਰਡ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਉਸ ਐਪ ਵਿੱਚ ਦਿਖਾਈ ਜਾਂ ਚਲਾਈ ਜਾ ਰਹੀ ਹਰ ਚੀਜ਼ ਨੂੰ ਰਿਕਾਰਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਲਈ ਪਾਸਵਰਡਾਂ, ਭੁਗਤਾਨ ਵੇਰਵਿਆਂ, ਸੁਨੇਹਿਆਂ, ਫ਼ੋਟੋਆਂ ਅਤੇ ਆਡੀਓ ਅਤੇ ਵੀਡੀਓ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਵਾਸਤੇ ਸਾਵਧਾਨ ਰਹੋ।"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਕਰੋ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ਪ੍ਰੀਸੈੱਟ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ਪ੍ਰੀਸੈੱਟ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ਚੁਣਿਆ ਗਿਆ"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ਟੂਲ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"ਲਾਈਵ ਸੁਰਖੀਆਂ"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"ਨੋਟ-ਕਥਨ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"ਘੱਟ ਤਰਜੀਹ ਵਾਲੇ ਸੂਚਨਾ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਦਿਖਾਓ"</string>
<string name="other" msgid="429768510980739978">"ਹੋਰ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ਟਾਇਲ ਹਟਾਓ"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ਟਾਇਲ ਨੂੰ ਅੰਤ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ਟਾਇਲ ਨੂੰ ਲਿਜਾਓ"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ਟਾਇਲ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> \'ਤੇ ਲਿਜਾਓ"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ਸਥਾਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ਮੌਜੂਦਾ ਥਾਂ ਅਵੈਧ ਹੈ।"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"ਵਰਤੋਂਕਾਰ ਚੁਣੋ"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ।"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ।"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ਸੈਟਿੰਗਾਂ ਦੇ ਕ੍ਰਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ।"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"ਪਾਵਰ ਮੀਨੂ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> ਦਾ <xliff:g id="ID_1">%1$d</xliff:g> ਪੰਨਾ"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">" ਲਾਕ ਸਕ੍ਰੀਨ"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ਡਿਸਕਨੈਕਟ ਹੈ)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"ਡੀਵਾਈਸ ਕਨੈਕਟ ਕਰੋ"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ਇਸ ਸੈਸ਼ਨ ਨੂੰ ਕਾਸਟ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਐਪ ਖੋਲ੍ਹੋ।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ਅਗਿਆਤ ਐਪ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ਆਡੀਓ ਆਊਟਪੁੱਟ ਲਈ ਉਪਲਬਧ ਡੀਵਾਈਸ।"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ਹੋਮ \'ਤੇ ਜਾਓ"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ਹਾਲੀਆ ਐਪਾਂ ਦੇਖੋ"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ਹੋ ਗਿਆ"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ਵਾਪਸ ਜਾਓ"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"ਵਧੀਆ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"ਤੁਸੀਂ \'ਵਾਪਸ ਜਾਓ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ।"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"ਆਪਣੇ ਟੱਚਪੈਡ ਨੂੰ ਵਰਤ ਕੇ ਵਾਪਸ ਜਾਣ ਲਈ, ਤਿੰਨ ਉਂਗਲਾਂ ਵਰਤ ਕੇ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਪਾਸੇ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ਹੋਮ \'ਤੇ ਜਾਓ"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"ਬਹੁਤ ਵਧੀਆ!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ਤੁਸੀਂ \'ਹੋਮ \'ਤੇ ਜਾਓ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਾਣ ਲਈ ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"ਹਾਲੀਆ ਐਪਾਂ ਦੇਖੋ"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"ਬਹੁਤ ਵਧੀਆ!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ਤੁਸੀਂ \'ਹਾਲੀਆ ਐਪਾਂ ਦੇਖੋ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ ਹੈ।"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ਹਾਲੀਆ ਐਪਾਂ ਦੇਖਣ ਲਈ, ਆਪਣੇ ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਵਰਤ ਕੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਰੋਕ ਕੇ ਰੱਖੋ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ਸਾਰੀਆਂ ਐਪਾਂ ਦੇਖੋ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ਆਪਣੇ ਕੀ-ਬੋਰਡ \'ਤੇ ਕਾਰਵਾਈ ਕੁੰਜੀ ਨੂੰ ਦਬਾਓ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ਬਹੁਤ ਵਧੀਆ!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"ਤੁਸੀਂ \'ਸਾਰੀਆਂ ਐਪਾਂ ਦੇਖੋ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ ਹੈ"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"ਆਪਣੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਦੇਖਣ ਲਈ ਆਪਣੇ ਕੀ-ਬੋਰਡ \'ਤੇ ਕਾਰਵਾਈ ਕੁੰਜੀ ਨੂੰ ਦਬਾਓ"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ਟਿਊਟੋਰੀਅਲ ਐਨੀਮੇਸ਼ਨ, ਰੋਕਣ ਅਤੇ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ।"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"ਕੀ-ਬੋਰਡ ਬੈਕਲਾਈਟ"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ਵਿੱਚੋਂ %1$d ਪੱਧਰ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index bd7496d..82e3f67 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Stałe powiadomienie o sesji rejestrowania zawartości ekranu"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Nagrywać ekran?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Nagrywaj jedną aplikację"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Nagrywaj cały ekran"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Nagraj cały ekran: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kiedy nagrywasz cały ekran, nagrane zostanie wszystko, co jest na nim widoczne. Dlatego uważaj na hasła, dane do płatności, wiadomości, zdjęcia, nagrania audio czy filmy."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kiedy nagrywasz aplikację, wszystko, co jest w niej wyświetlane lub odtwarzane, zostaje nagrane. Dlatego zachowaj ostrożność w zakresie haseł, danych do płatności, wiadomości, zdjęć, audio i filmów."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Nagrywaj ekran"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Nie udało się zaktualizować gotowego ustawienia"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Gotowe ustawienie"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Wybrano"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Narzędzia"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Napisy na żywo"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Notatka"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Pokazuj ikony powiadomień o niskim priorytecie"</string>
<string name="other" msgid="429768510980739978">"Inne"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"usunąć kartę"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodać kartę na końcu"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Przenieś kartę"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodaj kartę"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Przenieś do pozycji <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodaj w pozycji <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Nieprawidłowa pozycja."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"wybrać użytkownika"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Brak internetu"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otwórz ustawienia: <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Edytuj kolejność ustawień."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu zasilania"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Strona <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ekran blokady"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(odłączono)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nie można przełączyć. Spróbuj ponownie."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Połącz urządzenie"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Aby przesłać tę sesję, otwórz aplikację."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nieznana aplikacja"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zatrzymaj przesyłanie"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostępne urządzenia do odtwarzania dźwięku."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Otwórz stronę główną"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Wyświetlanie ostatnich aplikacji"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotowe"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Spróbuj jeszcze raz"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Wróć"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Przesuń 3 palcami w prawo lub w lewo na touchpadzie"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Super!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Gest przejścia wstecz został opanowany."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Aby przejść wstecz przy użyciu touchpada, przesuń trzema palcami w lewo lub w prawo"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Otwórz stronę główną"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Przesuń 3 palcami w górę na touchpadzie"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Dobra robota!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Gest przechodzenia na ekran główny został opanowany"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Aby przejść na ekran główny, przesuń 3 palcami w górę na touchpadzie"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Wyświetlanie ostatnich aplikacji"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Przesuń w górę za pomocą 3 palców na touchpadzie i przytrzymaj"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Brawo!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Znasz już gest wyświetlania ostatnio używanych aplikacji."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Aby wyświetlić ostatnie aplikacje, przesuń 3 palcami w górę na touchpadzie i przytrzymaj"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Wyświetl wszystkie aplikacje"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Naciśnij klawisz działania na klawiaturze"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Brawo!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Znasz już gest wyświetlania wszystkich aplikacji"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Aby wyświetlić wszystkie swoje aplikacje, naciśnij klawisz działania na klawiaturze"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacja z samouczkiem. Kliknij, aby wstrzymać lub wznowić odtwarzanie."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podświetlenie klawiatury"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Poziom %1$d z %2$d"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index b2db120..4ebc7ae 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação contínua para uma sessão de gravação de tela"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Gravar a tela?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Gravar um app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Gravar a tela toda"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Gravar a tela toda: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Quando você grava a tela toda, tudo o que aparece nela é registrado. Portanto, tenha cuidado com senhas, detalhes de pagamento, mensagens, fotos, áudios e vídeos."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Quando você grava um app, todas as informações visíveis ou abertas nele ficam registradas. Portanto, tenha cuidado com senhas, detalhes de pagamento, mensagens, fotos, áudios e vídeos."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Gravar a tela"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selecionado"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Ferramentas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Legenda instantânea"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Observação"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string>
<string name="other" msgid="429768510980739978">"Outros"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o bloco ao final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar bloco"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover para <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicionar à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posição inválida."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"escolher o usuário"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sem Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir configurações de <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editar ordem das configurações."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu liga/desliga"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Tela de bloqueio"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(sem conexão)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Não foi possível mudar. Toque para tentar novamente."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectar dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Abra o app para transmitir esta sessão."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecido"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos disponíveis para saída de áudio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ir para a página inicial"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Tente de novo"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Deslize para a esquerda ou direita com 3 dedos no touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Legal!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Você concluiu o gesto para voltar."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Para voltar usando o touchpad, deslize para a esquerda ou direita com três dedos"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ir para a página inicial"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Deslize para cima com 3 dedos no touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Muito bem!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Você concluiu o gesto para acessar a tela inicial"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Deslize para cima com três dedos no touchpad para acessar a tela inicial"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ver os apps recentes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Deslize para cima com 3 dedos e mantenha"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Muito bem!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Você concluiu o gesto para ver os apps recentes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todos os apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pressione a tecla de ação no teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Muito bem!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Você concluiu o gesto para ver todos os apps"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pressione a tecla de ação no teclado para ver todos os apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animação do tutorial. Clique para pausar ou retomar a reprodução."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index dcc8f02..2b49139 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação persistente de uma sessão de gravação de ecrã"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Gravar o ecrã?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Gravar uma app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Gravar o ecrã inteiro"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Gravar o ecrã inteiro: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Quando está a gravar o ecrã inteiro, tudo o que é apresentado no ecrã é gravado. Por isso, tenha cuidado com, por exemplo, palavras-passe, detalhes de pagamento, mensagens, fotos, áudio e vídeo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Quando está a gravar uma app, tudo o que é apresentado ou reproduzido nessa app é gravado. Por isso, tenha cuidado com, por exemplo, palavras-passe, detalhes de pagamento, mensagens, fotos, áudio e vídeo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Gravar ecrã"</string>
@@ -415,6 +417,13 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selecionado"</string>
+ <string name="hearing_devices_ambient_label" msgid="629440938614895797">"Ambiente"</string>
+ <string name="hearing_devices_ambient_control_left" msgid="3586965448230412600">"Esquerda"</string>
+ <string name="hearing_devices_ambient_control_right" msgid="6192137602448918383">"Direita"</string>
+ <string name="hearing_devices_ambient_expand_controls" msgid="2131816068187709200">"Expandir para controlos separados do lado direito e esquerdo"</string>
+ <string name="hearing_devices_ambient_collapse_controls" msgid="2261097656446201581">"Reduzir para controlo unificado"</string>
+ <string name="hearing_devices_ambient_mute" msgid="1836882837647429416">"Desativar som do ambiente"</string>
+ <string name="hearing_devices_ambient_unmute" msgid="2187938085943876814">"Reativar som do ambiente"</string>
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Ferramentas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Legendas instantâneas"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Nota"</string>
@@ -960,9 +969,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de prioridade baixa"</string>
<string name="other" msgid="429768510980739978">"Outro"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o cartão"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o cartão ao final"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"adicionar o mosaico à última posição"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover cartão"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar cartão"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Adicionar mosaico à posição pretendida"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mova para <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicione à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posição inválida."</string>
@@ -978,7 +987,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"escolher o utilizador"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sem Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir as definições de <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editar a ordem das definições."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Editar ordem das Definições rápidas."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu ligar/desligar"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ecrã de bloqueio"</string>
@@ -1209,7 +1218,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(desligado)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Não é possível mudar. Toque para tentar novamente."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Ligar um dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para transmitir esta sessão, abra a app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos disponíveis para a saída de áudio."</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index b2db120..4ebc7ae 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação contínua para uma sessão de gravação de tela"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Gravar a tela?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Gravar um app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Gravar a tela toda"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Gravar a tela toda: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Quando você grava a tela toda, tudo o que aparece nela é registrado. Portanto, tenha cuidado com senhas, detalhes de pagamento, mensagens, fotos, áudios e vídeos."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Quando você grava um app, todas as informações visíveis ou abertas nele ficam registradas. Portanto, tenha cuidado com senhas, detalhes de pagamento, mensagens, fotos, áudios e vídeos."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Gravar a tela"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Não foi possível atualizar a predefinição"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predefinição"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selecionado"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Ferramentas"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Legenda instantânea"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Observação"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string>
<string name="other" msgid="429768510980739978">"Outros"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o bloco ao final"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar bloco"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover para <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicionar à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Posição inválida."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"escolher o usuário"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Sem Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Abrir configurações de <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editar ordem das configurações."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menu liga/desliga"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Tela de bloqueio"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(sem conexão)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Não foi possível mudar. Toque para tentar novamente."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectar dispositivo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Abra o app para transmitir esta sessão."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecido"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispositivos disponíveis para saída de áudio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ir para a página inicial"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Tente de novo"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Deslize para a esquerda ou direita com 3 dedos no touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Legal!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Você concluiu o gesto para voltar."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Para voltar usando o touchpad, deslize para a esquerda ou direita com três dedos"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ir para a página inicial"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Deslize para cima com 3 dedos no touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Muito bem!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Você concluiu o gesto para acessar a tela inicial"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Deslize para cima com três dedos no touchpad para acessar a tela inicial"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ver os apps recentes"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Deslize para cima com 3 dedos e mantenha"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Muito bem!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Você concluiu o gesto para ver os apps recentes."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todos os apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pressione a tecla de ação no teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Muito bem!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Você concluiu o gesto para ver todos os apps"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Pressione a tecla de ação no teclado para ver todos os apps"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animação do tutorial. Clique para pausar ou retomar a reprodução."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 7664145..6f49a80 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificare în curs pentru o sesiune de înregistrare a ecranului"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Înregistrezi ecranul?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Înregistrează o aplicație"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Înregistrează tot ecranul"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Înregistrează tot ecranul: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Când înregistrezi întregul ecran, se înregistrează tot ce apare pe ecran. Prin urmare, ai grijă cu parolele, detaliile de plată, mesajele, fotografiile și conținutul audio și video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Când înregistrezi o aplicație, se înregistrează tot ce se afișează sau se redă în aplicație. Prin urmare, ai grijă cu parolele, detaliile de plată, mesajele, fotografiile și conținutul audio și video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Înregistrează ecranul"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Nu s-a putut actualiza presetarea"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Presetare"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Selectat"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Instrumente"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Subtitrări live"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Notă"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Afișează pictogramele de notificare cu prioritate redusă"</string>
<string name="other" msgid="429768510980739978">"Altele"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"elimină cardul"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adaugă cardul la sfârșit"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mută cardul"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adaugă un card"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mută pe poziția <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adaugă pe poziția <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Poziție nevalidă."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"alege utilizatorul"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Fără conexiune la internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Deschide setările <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Editează ordinea setărilor."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Meniul de pornire"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> din <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ecran de blocare"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(deconectat)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nu se poate comuta. Atinge pentru a încerca din nou."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Conectează un dispozitiv"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pentru a proiecta această sesiune, deschide aplicația."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicație necunoscută"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Nu mai proiecta"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dispozitive disponibile pentru ieșire audio."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Înapoi la pagina de pornire"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Vezi aplicațiile recente"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gata"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Încearcă din nou!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Înapoi"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Glisează la stânga sau la dreapta cu trei degete pe touchpad"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bravo!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ai finalizat gestul Înapoi."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Pentru a reveni folosind touchpadul, glisează la stânga sau la dreapta cu trei degete"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Înapoi la pagina de pornire"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Glisează în sus cu trei degete oriunde pe touchpad"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Excelent!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ai finalizat gestul „înapoi la pagina de pornire”"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Glisează în sus cu trei degete pe touchpad pentru a accesa ecranul de pornire"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Vezi aplicațiile recente"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Glisează în sus și ține apăsat cu trei degete pe touchpad"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Excelent!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Ai finalizat gestul pentru afișarea aplicațiilor recente."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ca să vezi aplicațiile recente, glisează în sus și ține apăsat cu trei degete pe touchpad"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Vezi toate aplicațiile"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Apasă tasta de acțiuni de pe tastatură"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Felicitări!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Ai finalizat gestul pentru afișarea tuturor aplicațiilor"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Apasă tasta de acțiuni de pe tastatură ca să vezi toate aplicațiile"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Tutorial animat, dă clic pentru a întrerupe și a relua redarea."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Iluminarea din spate a tastaturii"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivelul %1$d din %2$d"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 19ccb08..c534c73 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Текущее уведомление для записи видео с экрана"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Начать запись экрана?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Записывать одно приложение"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Записывать весь экран"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Записывать весь экран: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"На видео попадет все, что будет происходить на экране. Поэтому будьте осторожны с паролями, сведениями о способах оплаты, сообщениями, фотографиями, аудио- и видеозаписями."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"На видео попадет все, что происходит в выбранном приложении. Поэтому будьте осторожны с паролями, сведениями о способах оплаты, сообщениями, фотографиями, аудио- и видеозаписями."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Запись экрана"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Не удалось обновить набор настроек."</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набор настроек"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Выбрано"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Инструменты"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Автоматические субтитры"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Заметка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Показывать значки уведомлений с низким приоритетом"</string>
<string name="other" msgid="429768510980739978">"Другое"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"удалить панель"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"добавить панель в конец"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Переместить панель"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Добавить панель"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Переместить на позицию <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Добавить на позицию <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Недопустимое расположение."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"выбрать пользователя"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Нет подключения к Интернету."</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Открыть настройки <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Изменить порядок быстрых настроек."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Меню кнопки питания"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Страница <xliff:g id="ID_1">%1$d</xliff:g> из <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Заблокированный экран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(нет подключения)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Не удается переключиться. Нажмите, чтобы повторить попытку."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Подключить устройство"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Чтобы начать трансляцию сеанса, откройте приложение"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Неизвестное приложение"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Остановить трансляцию"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Доступные устройства для вывода звука."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"На главный экран"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Просмотр недавних приложений"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Попробуйте ещё раз"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Проведите тремя пальцами влево или вправо по сенсорной панели."</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Отлично!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Вы выполнили жест для перехода назад."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Чтобы перейти назад с помощью сенсорной панели, проведите влево или вправо тремя пальцами."</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"На главный экран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Проведите тремя пальцами вверх по сенсорной панели."</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Отлично!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Вы выполнили жест для перехода на главный экран."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Чтобы перейти на главный экран, проведите тремя пальцами вверх по сенсорной панели."</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Просмотр недавних приложений"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Проведите вверх по сенсорной панели тремя пальцами и удерживайте."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Отлично!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Вы выполнили жест для просмотра недавних приложений."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Чтобы увидеть недавние приложения, проведите по сенсорной панели тремя пальцами вверх и удерживайте."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Все приложения"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Нажмите клавишу действия на клавиатуре."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Блестяще!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Вы выполнили жест для просмотра всех приложений."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Чтобы увидеть все свои приложения, нажмите клавишу действия на клавиатуре."</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анимация в руководстве. Нажмите, чтобы приостановить или продолжить воспроизведение."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Подсветка клавиатуры"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Уровень %1$d из %2$d"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 516b2ae..78331a0 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"තිර පටිගත කිරීමේ සැසියක් සඳහා කෙරෙන දැනුම් දීම"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"ඔබේ තිරය පටිගත කරන්න ද?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"එක් යෙදුමක් පටිගත කරන්න"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"සම්පූර්ණ තිරය පටිගත කරන්න"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"සම්පූර්ණ තිරය පටිගත කරන්න: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ඔබ ඔබේ සම්පූර්ණ තිරය පටිගත කරන විට, ඔබේ තිරයේ පෙන්වන ඕනෑම දෙයක් වාර්තා වේ. ඒ නිසා මුරපද, ගෙවීම් විස්තර, පණිවුඩ, ඡායාරූප, සහ ශ්රව්ය සහ දෘශ්ය වැනි දේවල් පිළිබඳ ප්රවේශම් වන්න."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ඔබ යෙදුමක් පටිගත කරන විට, එම යෙදුමේ පෙන්වන හෝ වාදනය කරන ඕනෑම දෙයක් වාර්තා වේ. ඒ නිසා මුරපද, ගෙවීම් විස්තර, පණිවුඩ, ඡායාරූප, සහ ශ්රව්ය සහ දෘශ්ය වැනි දේවල් පිළිබඳ ප්රවේශම් වන්න."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"තිරය පටිගත කරන්න"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"පෙර සැකසීම යාවත්කාලීන කළ නොහැකි විය"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"පෙරසැකසුම"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"තෝරන ලදි"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"මෙවලම්"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"සජීවී සිරස්තල"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"සටහන"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"අඩු ප්රමුඛතා දැනුම්දීම් අයිකන පෙන්වන්න"</string>
<string name="other" msgid="429768510980739978">"වෙනත්"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ටයිල් ඉවත් කරන්න"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"අගට ටයිල් එක් කරන්න"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ටයිල් ගෙන යන්න"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ටයිල් එක් කරන්න"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> වෙත ගෙන යන්න"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ස්ථානයට එක් කරන්න"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ස්ථානය අවලංගුයි."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"පරිශීලක තෝරන්න"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"අන්තර්ජාලය නැත"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> සැකසීම් විවෘත කරන්න."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"සැකසීම්වල අනුපිළිවෙළ සංංස්කරණය කරන්න."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"බල මෙනුව"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g> න් <xliff:g id="ID_1">%1$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"අගුලු තිරය"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(විසන්ධි විය)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"මාරු කිරීමට නොහැකිය. නැවත උත්සාහ කිරීමට තට්ටු කරන්න."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"උපාංගයක් සම්බන්ධ කරන්න"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"මෙම සැසිය විකාශය කිරීමට, කරුණාකර යෙදුම විවෘත කරන්න."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"නොදන්නා යෙදුම"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"විකාශය නවතන්න"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ශ්රව්ය ප්රතිදානය සඳහා තිබෙන උපාංග."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"මුල් පිටුවට යන්න"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"මෑත යෙදුම් බලන්න"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"නිමයි"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"නැවත උත්සාහ කරන්න!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ආපස්සට යන්න"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ඔබේ ස්පර්ශ පුවරුව මත ඇඟිලි තුනක් භාවිතයෙන් වමට හෝ දකුණට ස්වයිප් කරන්න"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"කදිමයි!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"ඔබ ආපසු යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"ඔබේ ස්පර්ශ පෑඩය භාවිතයෙන් ආපසු යාමට, ඇඟිලි තුනක් භාවිතයෙන් වමට හෝ දකුණට ස්වයිප් කරන්න"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"මුල් පිටුවට යන්න"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"ඔබේ ස්පර්ශ පුවරුවේ ඇඟිලි තුනකින් ඉහළට ස්වයිප් කරන්න"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"අනර්ඝ වැඩක්!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"ඔබ මුල් පිටුවට යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"ඔබේ මුල් තිරයට යාමට ඔබේ ස්පර්ශක පෑඩයේ ඇඟිලි තුනකින් ඉහළට ස්වයිප් කරන්න"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"මෑත යෙදුම් බලන්න"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"ඉහළට ස්වයිප් කර ඔබේ ස්පර්ශ පුවරුව මත ඇඟිලි තුනක් භාවිත කර රඳවාගෙන සිටින්න"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"අනර්ඝ වැඩක්!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ඔබ මෑත යෙදුම් ඉංගිත බැලීම සම්පූර්ණ කර ඇත."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"මෑත කාලීන යෙදුම් බැලීමට, ඔබේ ස්පර්ශක පෑඩයේ ඇඟිලි තුනක් භාවිතයෙන් ඉහළට ස්වයිප් කරගෙන සිටින්න"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"සියලු යෙදුම් බලන්න"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ඔබේ යතුරු පුවරුවේ ක්රියාකාරී යතුර ඔබන්න"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"හොඳින් කළා!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"ඔබ සියලු යෙදුම් ඉංගිත බැලීම සම්පූර්ණ කර ඇත"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"ඔබේ සියලු යෙදුම් බැලීමට ඔබගේ යතුරු පුවරුවේ ක්රියා යතුර ඔබන්න"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"නිබන්ධන සජීවීකරණය, ක්රීඩාව විරාම කිරීමට සහ නැවත ආරම්භ කිරීමට ක්ලික් කරන්න."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"යතුරු පුවරු පසු ආලෝකය"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dන් %1$d වැනි මට්ටම"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 1b2dc5a..cf8972e 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Zobrazuje sa upozornenie týkajúce sa relácie záznamu obrazovky"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Chcete nahrávať obrazovku?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Nahrávať jednu aplikáciu"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Nahrávať celú obrazovku"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Nahrať celú obrazovku: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Pri nahrávaní celej obrazovky sa zaznamená všetko, čo sa na nej zobrazuje. Preto venujte pozornosť položkám, ako sú heslá, platobné údaje, správy, fotky a zvuk či video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Pri nahrávaní aplikácie sa zaznamená všetko, čo sa v nej zobrazuje alebo prehráva. Preto venujte pozornosť položkám, ako sú heslá, platobné údaje, správy, fotky a zvuk či video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Nahrávať obrazovku"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Predvoľbu sa nepodarilo aktualizovať"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Predvoľba"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Vybrané"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Nástroje"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Živý prepis"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Poznámka"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Zobraziť ikony upozornení s nízkou prioritou"</string>
<string name="other" msgid="429768510980739978">"Ďalšie"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstrániť kartu"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pridať kartu na koniec"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Presunúť kartu"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pridať kartu"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Presunúť na <xliff:g id="POSITION">%1$d</xliff:g>. pozíciu"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pridať na <xliff:g id="POSITION">%1$d</xliff:g>. pozíciu"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Pozícia je neplatná."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"vybrať používateľa"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Žiadny internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Otvoriť nastavenia <xliff:g id="ID_1">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Upraviť poradie nastavení"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Ponuka vypínača"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Strana <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Uzamknutá obrazovka"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(odpojené)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nedá sa prepnúť. Zopakujte klepnutím."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Pripojiť zariadenie"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ak chcete túto reláciu prenášať, otvorte aplikáciu."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznáma aplikácia"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zastaviť prenos"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Dostupné zariadenia pre zvukový výstup."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Prejsť na plochu"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobrazenie nedávnych aplikácií"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Skúste to znova."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Prejdenie späť"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Potiahnite troma prstami na touchpade doľava alebo doprava"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Výborne!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Použili ste gesto na prechod späť."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Ak chcete prejsť späť pomocou touchpadu, potiahnite troma prstami doľava alebo doprava"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Prechod na plochu"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Potiahnite troma prstami na touchpade nahor"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Skvelé!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Použili ste gesto na prechod na plochu."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Ak chcete prejsť na plochu, potiahnite troma prstami na touchpade"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Zobrazenie nedávnych aplikácií"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Potiahnite troma prstami na touchpade nahor a pridržte"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Skvelé!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Použili ste gesto na zobrazenie nedávnych aplikácií."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ak si chcete zobraziť nedávne aplikácie, potiahnite troma prstami na touchpade nahor a pridržte ich"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Zobrazenie všetkých aplikácií"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Stlačte na klávesnici akčný kláves"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Dobre!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Použili ste gesto na zobrazenie všetkých aplikácií."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Ak si chcete zobraziť všetky aplikácie, stlačte na klávesnici akčný kláves"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Výuková animácia, kliknutím pozastavíte alebo obnovíte prehrávanie."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podsvietenie klávesnice"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. úroveň z %2$d"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 76ce78c..d0063fd 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Nenehno obveščanje o seji snemanja zaslona"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Želite posneti zaslon?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Snemanje ene aplikacije"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Snemanje celotnega zaslona"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Snemanje celotnega zaslona: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Pri snemanju celotnega zaslona se posname vse, kar je prikazano na zaslonu. Zato bodite previdni z gesli, podatki za plačilo, sporočili, fotografijami ter z zvokom in videom."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Pri snemanju aplikacije se posname vse, kar je prikazano ali predvajano v tej aplikaciji. Zato bodite previdni z gesli, podatki za plačilo, sporočili, fotografijami ter z zvokom in videom."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Snemanje zaslona"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Prednastavljenih vrednosti ni bilo mogoče posodobiti"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Prednastavljeno"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Izbrano"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Orodja"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Samodejni podnapisi"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Opomba"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Pokaži ikone obvestil z nizko stopnjo prednosti"</string>
<string name="other" msgid="429768510980739978">"Drugo"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstranitev ploščice"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodajanje ploščice na konec"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premik ploščice"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodajanje ploščice"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premik na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodajanje na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Položaj je neveljaven."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"izbiro uporabnika"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Brez internetne povezave"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Odpri nastavitve za <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Uredi vrstni red nastavitev."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Meni za vklop/izklop"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>. stran od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Zaklenjen zaslon"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(povezava je prekinjena)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Preklop ni mogoč. Če želite poskusiti znova, se dotaknite."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Povežite napravo"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Če želite predvajati to sejo, odprite aplikacijo."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznana aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ustavi predvajanje"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Razpoložljive naprave za zvočni izhod"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Pomik na začetni zaslon"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ogled nedavnih aplikacij"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Končano"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Poskusite znova"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazaj"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Na sledilni ploščici s tremi prsti povlecite levo ali desno"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Odlično!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Izvedli ste potezo za pomik nazaj."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Za pomik nazaj na sledilni ploščici povlecite v levo ali desno s tremi prsti"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Pomik na začetni zaslon"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Na sledilni ploščici s tremi prsti povlecite navzgor"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Odlično!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Izvedli ste potezo za pomik na začetni zaslon"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Za vrnitev na začetni zaslon povlecite s tremi prsti navzgor po sledilni ploščici"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Ogled nedavnih aplikacij"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Na sledilni ploščici s tremi prsti povlecite navzgor in pridržite"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Odlično!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Izvedli ste potezo za ogled nedavnih aplikacij."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Za ogled nedavnih aplikacij povlecite s tremi prsti navzgor po sledilni ploščici in pridržite"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ogled vseh aplikacij"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pritisnite tipko za dejanja na tipkovnici"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Odlično!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Izvedli ste potezo za ogled vseh aplikacij"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Za ogled vseh aplikacij pritisnite tipko za dejanja na tipkovnici"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacija v vadnici, kliknite za začasno zaustavitev in nadaljevanje predvajanja."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Osvetlitev tipkovnice"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Stopnja %1$d od %2$d"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index dd13cff..803a5e5 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Njoftim i vazhdueshëm për një seancë regjistrimi të ekranit"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Të regjistrohet ekrani?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Regjistro një aplikacion"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Regjistro të gjithë ekranin"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Regjistro gjithë ekranin: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kur regjistron të gjithë ekranin, regjistrohet çdo gjë e shfaqur në ekranin tënd. Prandaj, ki kujdes me gjërat si fjalëkalimet, detajet e pagesave, mesazhet, fotografitë, si dhe audion dhe videon."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kur regjistron një aplikacion, regjistrohet çdo gjë që shfaqet ose luhet në atë aplikacion. Prandaj, ki kujdes me gjërat si fjalëkalimet, detajet e pagesave, mesazhet, fotografitë, si dhe audion dhe videon."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Regjistro ekranin"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Paravendosja nuk mund të përditësohej"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Paravendosja"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Zgjedhur"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Veglat"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Titrat në çast"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Shënim"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Shfaq ikonat e njoftimeve me përparësi të ulët"</string>
<string name="other" msgid="429768510980739978">"Të tjera"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"hiq pllakëzën"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"shto pllakëzën në fund"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Zhvendos pllakëzën"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Shto pllakëzën"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Zhvendos te <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Shto te pozicioni <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Pozicion i pavlefshëm."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"zgjidh përdoruesin"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Nuk ka internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Hap cilësimet e <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Modifiko rendin e cilësimeve."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menyja e energjisë"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Faqja <xliff:g id="ID_1">%1$d</xliff:g> nga <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ekrani i kyçjes"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(shkëputur)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Nuk mund të ndërrohet. Trokit për të provuar përsëri."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Lidh një pajisje"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Hap aplikacionin për të transmetuar këtë seancë."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikacion i panjohur"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ndalo transmetimin"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Pajisjet që ofrohen për daljen e audios."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Shko tek ekrani bazë"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Shiko aplikacionet e fundit"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"U krye"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Provo përsëri!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kthehu prapa"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Rrëshqit shpejt majtas ose djathtas duke përdorur tre gishta në bllokun me prekje"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bukur!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"E ke përfunduar gjestin e kthimit prapa."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Për t\'u kthyer prapa duke përdorur bllokun me prekje, rrëshqit shpejt majtas ose djathtas duke përdorur tre gishta"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Shko tek ekrani bazë"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Rrëshqit shpejt lart me tre gishta në bllokun me prekje"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Punë e shkëlqyer!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"E ke përfunduar gjestin e kalimit tek ekrani bazë"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Rrëshqit shpejt lart me tre gishta në bllokun me prekje për të shkuar tek ekrani bazë"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Shiko aplikacionet e fundit"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Rrëshqit shpejt lart dhe mbaj shtypur me tre gishta në bllokun me prekje"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Punë e shkëlqyer!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Përfundove gjestin për shikimin e aplikacioneve të fundit."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Për të shikuar aplikacionet e fundit, rrëshqit shpejt lart dhe mbaj shtypur me tre gishta në bllokun me prekje"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Shiko të gjitha aplikacionet"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Shtyp tastin e veprimit në tastierë"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Shumë mirë!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Përfundove gjestin për shikimin e të gjitha aplikacioneve"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Shtyp tastin e veprimit në tastierë për të shikuar të gjitha aplikacionet e tua"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animacioni udhëzues. Kliko për të vendosur në pauzë dhe për të vazhduar luajtjen."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Drita e sfondit e tastierës"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveli: %1$d nga %2$d"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 5693956..1787072 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Обавештење о сесији снимања екрана је активно"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Желите да снимите екран?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Сними једну апликацију"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Сними цео екран"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Снимите цео екран: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Када снимате цео екран, снима се све што је на њему. Зато пазите на лозинке, информације о плаћању, поруке, слике, аудио и видео садржај."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Када снимате апликацију, снима се сав садржај који се приказује или пушта у њој. Зато пазите на лозинке, информације о плаћању, поруке, слике, аудио и видео садржај."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Сними екран"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ажурирање задатих подешавања није успело"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Унапред одређена подешавања"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Изабрано"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Алатке"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Титл уживо"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Белешка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Прикажи иконе обавештења ниског приоритета"</string>
<string name="other" msgid="429768510980739978">"Друго"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"уклонили плочицу"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додали плочицу на крај"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместите плочицу"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додајте плочицу"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместите на <xliff:g id="POSITION">%1$d</xliff:g>. позицију"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додајте на <xliff:g id="POSITION">%1$d</xliff:g>. позицију"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Позиција је неважећа."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"одабрали корисника"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Нема интернета"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Отвори подешавања за <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Измени редослед подешавања."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Мени дугмета за укључивање"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>. страна од <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Закључан екран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(веза је прекинута)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Пребацивање није успело. Пробајте поново."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Повежите уређај"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Да бисте пребацивали ову сесију, отворите апликацију."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Непозната апликација"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Заустави пребацивање"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Доступни уређаји за аудио излаз."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Иди на почетни екран"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прикажи недавно коришћене апликације"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Пробајте поново."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Превуците улево или удесно са три прста на тачпеду"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Супер!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Довршили сте покрет за повратак."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Да бисте се вратили помоћу тачпеда, превуците улево или удесно са три прста"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Иди на почетни екран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Превуците нагоре са три прста на тачпеду"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Одлично!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Довршили сте покрет за повратак на почетну страницу."</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Да бисте отишли на почетни екран, превуците нагоре са три прста на тачпеду"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Прикажи недавно коришћене апликације"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Превуците нагоре и задржите са три прста на тачпеду"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Одлично!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Довршили сте покрет за приказивање недавно коришћених апликација."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Да бисте прегледали недавне апликације, превуците нагоре и задржите са три прста на тачпеду"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Прикажи све апликације"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Притисните тастер радњи на тастатури"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Одлично!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Довршили сте покрет за приказивање свих апликација."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Притисните тастер радњи на тастатури да бисте прегледали све апликације"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Анимација водича, кликните да бисте паузирали и наставили репродукцију."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Позадинско осветљење тастатуре"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. ниво од %2$d"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 7d1f755..6d9f721 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Avisering om att skärminspelning pågår"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Vill du spela in det som visas på skärmen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Spela in en app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Spela in hela skärmen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Spela in hela skärmen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"När du spelar in hela skärmen spelas allt som visas på skärmen in. Var försiktig med sådant som lösenord, betalningsuppgifter, meddelanden, foton, ljud och video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"När du spelar in en app spelas allt som visas eller spelas upp i appen in. Var försiktig med sådant som lösenord, betalningsuppgifter, meddelanden, foton, ljud och video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Spela in skärmen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Det gick inte att uppdatera förinställningen"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Förinställning"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Markerad"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Verktyg"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Live Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Anteckning"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Visa ikoner för aviseringar med låg prioritet"</string>
<string name="other" msgid="429768510980739978">"Annat"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ta bort ruta"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"lägg till ruta i slutet"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"lägg till en ruta på den sista platsen"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytta ruta"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lägg till ruta"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Lägg till en ruta på önskad plats"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flytta till <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lägg till på position <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Positionen är ogiltig."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"välj användare"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Inget internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Öppna <xliff:g id="ID_1">%s</xliff:g>-inställningarna."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Ändra ordning på inställningarna."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"Ändra ordningen på snabbinställningarna."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Startmeny"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Sida <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Låsskärm"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(frånkopplad)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Misslyckat byte. Tryck och försök igen."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Anslut en enhet"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Öppna appen om du vill casta den här sessionen."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Okänd app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Sluta casta"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Enheter som är tillgängliga för ljudutdata."</string>
@@ -1468,32 +1483,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Återvänd till startsidan"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se de senaste apparna"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klar"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Försök igen!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tillbaka"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Svep åt vänster eller höger med tre fingrar på styrplattan"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Bra!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Du är klar med rörelsen för att gå tillbaka."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Svep åt vänster eller höger med tre fingrar på styrplattan för att gå tillbaka"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Återvänd till startskärmen"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Svep uppåt med tre fingrar på styrplattan"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Bra jobbat!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Du är klar med rörelsen för att öppna startskärmen"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Svep uppåt med tre fingrar på styrplattan för att öppna startskärmen"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Se de senaste apparna"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Svep uppåt med tre fingrar på styrplattan och håll kvar"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Bra jobbat!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du är klar med rörelsen för att se de senaste apparna."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Svep uppåt på styrplattan med tre fingrar och håll kvar för att se nyligen använda appar"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Visa alla appar"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tryck på åtgärdstangenten på tangentbordet"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bra gjort!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Du är klar med rörelsen för att se alla apparna."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Tryck på åtgärdstangenten på tangentbordet för att se alla dina appar"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Animation för guiden: Klicka för att pausa och återuppta uppspelningen."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Bakgrundsbelysning för tangentbord"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index a17d645..6fb8f08 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Arifa inayoendelea ya kipindi cha kurekodi skrini"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Ungependa kurekodi skrini yako?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Rekodi programu moja"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Rekodi skrini nzima"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Rekodi skrini nzima: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Unaporekodi skrini yako nzima, chochote kinachoonyeshwa kwenye skrini yako kitarekodiwa. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha, sauti na video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Unaporekodi programu, chochote kinachoonyeshwa au kuchezwa kwenye programu hiyo kitarekodiwa. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha, sauti na video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Rekodi skrini"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Imeshindwa kusasisha mipangilio iliyowekwa mapema"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Mipangilio iliyowekwa mapema"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Umechagua"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Zana"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Manukuu Papo Hapo"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Dokezo"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Onyesha aikoni za arifa zisizo muhimu"</string>
<string name="other" msgid="429768510980739978">"Nyingine"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ondoa kigae"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ongeza kigae mwishoni"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hamisha kigae"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ongeza kigae"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Hamishia kwenye <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ongeza kwenye nafasi ya <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Nafasi si sahihi."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"chagua mtumiaji"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Hakuna intaneti"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Fungua mipangilio ya <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Badilisha orodha ya mipangilio."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Menyu ya kuzima/kuwasha"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Ukurasa wa <xliff:g id="ID_1">%1$d</xliff:g> kati ya <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Skrini iliyofungwa"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(imetenganishwa)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Imeshindwa kubadilisha. Gusa ili ujaribu tena."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Unganisha kifaa"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ili utume kipindi hiki, tafadhali fungua programu."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Programu isiyojulikana"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Acha kutuma"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Vifaa vya kutoa sauti vilivyopo"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Nenda kwenye ukurasa wa mwanzo"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Angalia programu za hivi majuzi"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Nimemaliza"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Jaribu tena!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Rudi nyuma"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Telezesha vidole vitatu kushoto au kulia kwenye padi yako ya kugusa"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Safi!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Umekamilisha mafunzo ya miguso ya kurudi nyuma."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Ili uendelee kutumia padi yako ya kugusa, telezesha kushoto au kulia ukitumia vidole vitatu"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Nenda kwenye skrini ya kwanza"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Telezesha vidole vitatu juu kwenye padi yako ya kugusa"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Kazi nzuri!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Umeweka ishara ya kwenda kwenye skrini ya kwanza"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Telezesha vidole vitatu juu kwenye padi yako ya kugusa ili uende kwenye skrini yako ya kwanza"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Angalia programu za hivi majuzi"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Telezesha vidole vitatu juu kisha ushikilie kwenye padi yako ya kugusa"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Kazi nzuri!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Umekamilisha mafunzo ya mguso wa kuangalia programu za hivi majuzi."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Telezesha vidole vitatu juu na ushikilie kwenye padi yako ya kugusa ili uangalie programu za hivi majuzi"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Angalia programu zote"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Bonyeza kitufe cha vitendo kwenye kibodi yako"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Vizuri sana!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Umekamilisha mafunzo ya mguso wa kuangalia programu zote"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Bonyeza kitufe cha vitendo kwenye kibodi yako ili uangalie programu zako zote"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Uhuishaji wa mafunzo, bofya ili usitishe na uendelee kucheza."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Mwanga chini ya kibodi"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Kiwango cha %1$d kati ya %2$d"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 3270e5e..ead1f83 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"திரை ரெக்கார்டிங் அமர்விற்கான தொடர் அறிவிப்பு"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"உங்கள் திரையை ரெக்கார்டு செய்யவா?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ஓர் ஆப்ஸை ரெக்கார்டு செய்தல்"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"முழுத் திரையை ரெக்கார்டு செய்தல்"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"முழுத் திரையை ரெக்கார்டு செய்தல்: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"முழுத் திரையை நீங்கள் ரெக்கார்டு செய்யும்போது அதில் காட்டப்படும் அனைத்தும் ரெக்கார்டு செய்யப்படும். எனவே கடவுச்சொற்கள், பேமெண்ட் விவரங்கள், மெசேஜ்கள், படங்கள், ஆடியோ, வீடியோ போன்றவை குறித்துக் கவனத்துடன் இருங்கள்."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ஓர் ஆப்ஸை ரெக்கார்டு செய்யும்போது அதில் காட்டப்படும் அல்லது பிளே செய்யப்படும் அனைத்தும் ரெக்கார்டு செய்யப்படும். எனவே கடவுச்சொற்கள், பேமெண்ட் விவரங்கள், மெசேஜ்கள், படங்கள், ஆடியோ, வீடியோ போன்றவை குறித்துக் கவனத்துடன் இருங்கள்."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"திரையை ரெக்கார்டு செய்"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"முன்னமைவைப் புதுப்பிக்க முடியவில்லை"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"முன்னமைவு"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"தேர்ந்தெடுக்கப்பட்டது"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"கருவிகள்"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"உடனடி வசனம்"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"குறிப்பு"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"குறைந்த முன்னுரிமை உள்ள அறிவிப்பு ஐகான்களைக் காட்டு"</string>
<string name="other" msgid="429768510980739978">"மற்றவை"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"கட்டத்தை அகற்றும்"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"கடைசியில் கட்டத்தைச் சேர்க்கும்"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"கட்டத்தை நகர்த்து"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"கட்டத்தைச் சேர்"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>க்கு நகர்த்தும்"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g>ல் சேர்க்கும்"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"நிலை தவறானது."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"பயனரைத் தேர்வுசெய்யவும்"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"இணைய இணைப்பு இல்லை"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> அமைப்புகளைத் திற."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"அமைப்புகளின் வரிசை முறையைத் திருத்து."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"பவர் மெனு"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"பக்கம் <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"லாக் ஸ்கிரீன்"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(துண்டிக்கப்பட்டது)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"இணைக்க முடியவில்லை. மீண்டும் முயல தட்டவும்."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"சாதனத்தை இணை"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"இந்த அமர்வை அலைபரப்ப ஆப்ஸைத் திறங்கள்."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"அறியப்படாத ஆப்ஸ்"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"அலைபரப்புவதை நிறுத்து"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ஆடியோ அவுட்புட்டுக்குக் கிடைக்கும் சாதனங்கள்."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"முகப்பிற்குச் செல்"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"சமீபத்திய ஆப்ஸைக் காட்டுதல்"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"முடிந்தது"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"மீண்டும் முயலவும்!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"பின்செல்"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"உங்கள் டச்பேடில் மூன்று விரல்களால் இடது அல்லது வலதுபுறம் ஸ்வைப் செய்யவும்"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"அருமை!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"பின்செல்வதற்கான சைகையை நிறைவுசெய்துவிட்டீர்கள்."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"உங்கள் டச்பேடைப் பயன்படுத்திப் பின்செல்ல, மூன்று விரல்களால் இடது அல்லது வலதுபுறம் ஸ்வைப் செய்யவும்"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"முகப்பிற்குச் செல்"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்யவும்"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"அருமை!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"முகப்புக்குச் செல்வதற்கான சைகைப் பயிற்சியை நிறைவுசெய்துவிட்டீர்கள்"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"உங்கள் முகப்புத் திரைக்குச் செல்ல டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்யவும்"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"சமீபத்திய ஆப்ஸைக் காட்டுதல்"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"உங்கள் டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"அருமை!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"சமீபத்தில் பயன்படுத்திய ஆப்ஸுக்கான சைகை பயிற்சியை நிறைவுசெய்துவிட்டீர்கள்."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"சமீபத்திய ஆப்ஸைப் பார்க்க, உங்கள் டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"அனைத்து ஆப்ஸையும் காட்டு"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"உங்கள் கீபோர்டில் ஆக்ஷன் பட்டனை அழுத்தவும்"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"அருமை!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"அனைத்து ஆப்ஸையும் பார்ப்பதற்கான சைகை பயிற்சியை நிறைவுசெய்துவிட்டீர்கள்"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"உங்களின் அனைத்து ஆப்ஸையும் பார்க்க, உங்கள் கீபோர்டில் உள்ள ஆக்ஷன் பட்டனை அழுத்தவும்"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"பயிற்சி அனிமேஷன், இடைநிறுத்தவும் மீண்டும் இயக்கவும் கிளிக் செய்யலாம்."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"கீபோர்டு பேக்லைட்"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"நிலை, %2$d இல் %1$d"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index ea02e4f..73a4250 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"స్క్రీన్ రికార్డ్ సెషన్ కోసం ఆన్గోయింగ్ నోటిఫికేషన్"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"మీ స్క్రీన్ను రికార్డ్ చేయాలా?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ఒక యాప్ను రికార్డ్ చేయండి"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"ఫుల్ స్క్రీన్ను రికార్డ్ చేయండి"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"ఫుల్-స్క్రీన్ను రికార్డ్ చేయండి: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"మీ ఫుల్ స్క్రీన్ను మీరు రికార్డ్ చేసేటప్పుడు, మీ స్క్రీన్పై కనిపించేవన్నీ రికార్డ్ అవుతాయి. కాబట్టి పాస్వర్డ్లు, పేమెంట్ వివరాలు, మెసేజ్లు, ఫోటోలు, ఆడియో, ఇంకా వీడియో వంటి విషయాల్లో జాగ్రత్త వహించండి."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"మీరు యాప్ను రికార్డ్ చేసేటప్పుడు, సంబంధిత యాప్లో కనిపించేవన్నీ లేదా ప్లే అయ్యేవన్నీ రికార్డ్ అవుతాయి. కాబట్టి పాస్వర్డ్లు, పేమెంట్ వివరాలు, మెసేజ్లు, ఫోటోలు, ఆడియో, ఇంకా వీడియో వంటి విషయాల్లో జాగ్రత్త వహించండి."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"స్క్రీన్ను రికార్డ్ చేయండి"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ప్రీసెట్ను అప్డేట్ చేయడం సాధ్యపడలేదు"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ప్రీసెట్"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"ఎంచుకోబడింది"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"టూల్స్"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"లైవ్ క్యాప్షన్"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"గమనిక"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"తక్కువ ప్రాధాన్యత నోటిఫికేషన్ చిహ్నాలను చూపించు"</string>
<string name="other" msgid="429768510980739978">"ఇతరం"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"టైల్ను తీసివేయండి"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ముగించడానికి టైల్ను జోడించండి"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"టైల్ను తరలించండి"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"టైల్ను జోడించండి"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>కు తరలించండి"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> స్థానానికి జోడించండి"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ప్రస్తుత పొజిషన్ చెల్లదు."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"యూజర్ను ఎంపిక చేయండి"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ఇంటర్నెట్ లేదు"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> సెట్టింగ్లను తెరవండి."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"సెట్టింగ్ల క్రమాన్ని ఎడిట్ చేయండి."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"పవర్ మెనూ"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_2">%2$d</xliff:g>లో <xliff:g id="ID_1">%1$d</xliff:g>వ పేజీ"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"లాక్ స్క్రీన్"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(డిస్కనెక్ట్ అయ్యింది)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"స్విచ్ చేయడం సాధ్యం కాదు. మళ్ళీ ట్రై చేయడానికి ట్యాప్ చేయండి."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"పరికరాన్ని కనెక్ట్ చేయండి"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ఈ సెషన్ను ప్రసారం చేయడానికి, దయచేసి యాప్ను తెరవండి."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"తెలియని యాప్"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ప్రసారాన్ని ఆపివేయండి"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"ఆడియో అవుట్పుట్ కోసం అందుబాటులో ఉన్న పరికరాలు."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"మొదటి ట్యాబ్కు వెళ్లండి"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ఇటీవలి యాప్లను చూడండి"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"పూర్తయింది"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"మళ్లీ ట్రై చేయండి!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"వెనుకకు"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"మీ టచ్ప్యాడ్లో మూడు వేళ్లను ఉపయోగించి ఎడమ వైపునకు లేదా కుడి వైపునకు స్వైప్ చేయండి"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"సూపర్!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"తిరిగి వెనుకకు వెళ్ళడానికి ఉపయోగించే సంజ్ఞకు సంబంధించిన ట్యుటోరియల్ను మీరు పూర్తి చేశారు."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"మీ టచ్ప్యాడ్ను ఉపయోగించి తిరిగి వెనక్కి వెళ్లడానికి, మూడు వేళ్లను ఉపయోగించి ఎడమ వైపునకు లేదా కుడి వైపునకు స్వైప్ చేయండి"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"మొదటి ట్యాబ్కు వెళ్లండి"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"మీ టచ్ప్యాడ్పై మూడు వేళ్లతో పైకి స్వైప్ చేయండి"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"చక్కగా పూర్తి చేశారు!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"మీరు మొదటి స్క్రీన్కు వెళ్లే సంజ్ఞను పూర్తి చేశారు"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"మీ మొదటి స్క్రీన్కు వెళ్లడానికి మీ టచ్ప్యాడ్పై మూడు వేళ్లతో పైకి స్వైప్ చేయండి"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"ఇటీవలి యాప్లను చూడండి"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"మీ టచ్ప్యాడ్లో మూడు వేళ్లను ఉపయోగించి పైకి స్వైప్ చేసి, హోల్డ్ చేయండి"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"చక్కగా పూర్తి చేశారు!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ఇటీవలి యాప్లను చూడడానికి ఉపయోగించే సంజ్ఞకు సంబంధించిన ట్యుటోరియల్ను మీరు పూర్తి చేశారు."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ఇటీవలి యాప్లను చూడటానికి, మీ టచ్ప్యాడ్లో మూడు వేళ్లను ఉపయోగించి పైకి స్వైప్ చేసి, హోల్డ్ చేయండి"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"అన్ని యాప్లను చూడండి"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"మీ కీబోర్డ్లో యాక్షన్ కీని నొక్కండి"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"చక్కగా చేశారు!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"అన్ని యాప్లను చూడడానికి ఉపయోగించే సంజ్ఞకు సంబంధించిన ట్యుటోరియల్ను మీరు పూర్తి చేశారు"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"మీ యాప్లన్నింటినీ చూడటానికి మీ కీబోర్డ్లోని యాక్షన్ కీని నొక్కండి"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ట్యుటోరియల్ యానిమేషన్, పాజ్ చేసి, మళ్లీ ప్లే చేయడానికి క్లిక్ చేయండి."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"కీబోర్డ్ బ్యాక్లైట్"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dలో %1$dవ స్థాయి"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index f8c4327..c46a9d7 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"การแจ้งเตือนต่อเนื่องสำหรับเซสชันการบันทึกหน้าจอ"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"บันทึกหน้าจอไหม"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"บันทึกแอปเดียว"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"บันทึกทั้งหน้าจอ"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"บันทึกทั้งหน้าจอ: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"ขณะบันทึกทั้งหน้าจอ ระบบจะบันทึกทุกสิ่งที่แสดงอยู่บนหน้าจอ ดังนั้นโปรดระวังสิ่งต่างๆ อย่างเช่นรหัสผ่าน รายละเอียดการชำระเงิน ข้อความ รูปภาพ รวมถึงเสียงและวิดีโอ"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"ขณะบันทึกแอป ระบบจะบันทึกทุกสิ่งที่แสดงหรือเล่นอยู่ในแอปดังกล่าว ดังนั้นโปรดระวังสิ่งต่างๆ อย่างเช่นรหัสผ่าน รายละเอียดการชำระเงิน ข้อความ รูปภาพ รวมถึงเสียงและวิดีโอ"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"บันทึกหน้าจอ"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"ไม่สามารถอัปเดตค่าที่กำหนดล่วงหน้า"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"ค่าที่กำหนดล่วงหน้า"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"เลือกแล้ว"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"เครื่องมือ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"คำบรรยายสด"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"จดบันทึก"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"แสดงไอคอนการแจ้งเตือนลำดับความสำคัญต่ำ"</string>
<string name="other" msgid="429768510980739978">"อื่นๆ"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"นำชิ้นส่วนออก"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"เพิ่มชิ้นส่วนต่อท้าย"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ย้ายชิ้นส่วน"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"เพิ่มชิ้นส่วน"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ย้ายไปที่ <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"เพิ่มไปยังตำแหน่ง <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"ตำแหน่งไม่ถูกต้อง"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"เลือกผู้ใช้"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"ไม่มีอินเทอร์เน็ต"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"เปิดการตั้งค่า <xliff:g id="ID_1">%s</xliff:g>"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"แก้ไขลำดับการตั้งค่า"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"เมนูเปิด/ปิด"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"หน้า <xliff:g id="ID_1">%1$d</xliff:g> จาก <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"หน้าจอล็อก"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ยกเลิกการเชื่อมต่อแล้ว)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"เปลี่ยนไม่ได้ แตะเพื่อลองอีกครั้ง"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"เชื่อมต่ออุปกรณ์"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"โปรดเปิดแอปหากต้องการแคสต์เซสชันนี้"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"แอปที่ไม่รู้จัก"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"หยุดแคสต์"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"อุปกรณ์ที่พร้อมใช้งานสำหรับเอาต์พุตเสียง"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index c47da32..6953458 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Kasalukuyang notification para sa session ng pag-record ng screen"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"I-record ang iyong screen?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Mag-record ng isang app"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"I-record ang buong screen"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"I-record ang buong screen: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Kapag nire-record mo ang iyong buong screen, nire-record ang anumang ipinapakita sa screen mo. Kaya mag-ingat sa mga bagay-bagay tulad ng mga password, detalye ng pagbabayad, mensahe, larawan, at audio at video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Kapag nagre-record ka ng app, nire-record ang anumang ipinapakita o pine-play sa app na iyon. Kaya mag-ingat sa mga bagay-bagay tulad ng mga password, detalye ng pagbabayad, mensahe, larawan, at audio at video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"I-record ang screen"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Hindi ma-update ang preset"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Preset"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Napili"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Mga Tool"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Instant Caption"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Tala"</string>
@@ -960,9 +976,9 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Ipakita ang mga icon ng notification na may mababang priority"</string>
<string name="other" msgid="429768510980739978">"Iba pa"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alisin ang tile"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"idagdag ang tile sa dulo"</string>
+ <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"magdagdag ng tile sa huling posisyon"</string>
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Ilipat ang tile"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Magdagdag ng tile"</string>
+ <string name="accessibility_qs_edit_tile_start_add" msgid="8141710006899065161">"Magdagdag ng tile sa gustong posisyon"</string>
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Ilipat sa <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Idagdag sa posisyong <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Invalid ang posisyon."</string>
@@ -978,7 +994,7 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"pumili ng user"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Walang internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Buksan ang mga setting ng <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"I-edit ang pagkakasunud-sunod ng mga setting."</string>
+ <string name="accessibility_quick_settings_edit" msgid="6544873823850165">"I-edit ang pagkakasunod-sunod ng Mga Mabilisang Setting."</string>
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Power menu"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Page <xliff:g id="ID_1">%1$d</xliff:g> ng <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Lock screen"</string>
@@ -1209,7 +1225,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(nadiskonekta)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Hindi makalipat. I-tap para subukan ulit."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Magkonekta ng device"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para ma-cast ang session na ito, buksan ang app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Hindi kilalang app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ihinto ang pag-cast"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Mga available na device para sa audio output."</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 2a3c4426..441cec1 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekran kaydı oturumu için devam eden bildirim"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Ekranınız kaydedilsin mi?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Bir uygulamayı kaydet"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Tüm ekranı kaydet"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Tüm ekranı kaydet: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Ekranın tamamını kaydederken ekranınızda gösterilen her şey kaydedilir. Bu nedenle şifre, ödeme ayrıntıları, mesaj, fotoğraf, ses ve video gibi öğeler konusunda dikkatli olun."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Bir uygulamayı kaydettiğinizde o uygulamada gösterilen veya oynatılan her şey kaydedilir. Bu nedenle şifre, ödeme ayrıntıları, mesaj, fotoğraf, ses ve video gibi öğeler konusunda dikkatli olun."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ekranı kaydet"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Hazır ayar güncellenemedi"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Hazır Ayar"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Seçili"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Araçlar"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Canlı Altyazı"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Not"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Düşük öncelikli bildirim simgelerini göster"</string>
<string name="other" msgid="429768510980739978">"Diğer"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Kutuyu kaldırmak için"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"Sona kutu eklemek için"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kutuyu taşı"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Kutu ekle"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> konumuna taşı"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> konumuna ekle"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Konum geçersiz."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"kullanıcı seç"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"İnternet yok"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ayarlarını aç."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Ayarların sırasını düzenle."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Güç menüsü"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Sayfa <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Kilit ekranı"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(bağlantı kesildi)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Geçiş yapılamıyor. Tekrar denemek için dokunun."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Cihaz bağla"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu oturumu yayınlamak için lütfen uygulamayı açın."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Bilinmeyen uygulama"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Yayını durdur"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Ses çıkışı için kullanılabilir cihazlar."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Ana sayfaya git"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son uygulamaları görüntüle"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Bitti"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Tekrar deneyin."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri dön"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Dokunmatik alanda üç parmağınızla sola veya sağa kaydırın"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Güzel!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Geri dön hareketini tamamladınız."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Dokunmatik alanı kullanarak geri dönmek için üç parmağınızla sola veya sağa kaydırın"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Ana sayfaya gidin"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Dokunmatik alanda üç parmağınızla yukarı kaydırın"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Tebrikler!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ana ekrana git hareketini tamamladınız"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Ana ekranınıza gitmek için dokunmatik alanda üç parmağınızla yukarı kaydırın"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Son uygulamaları görüntüle"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Dokunmatik alanda üç parmağınızla yukarı doğru kaydırıp basılı tutun"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Tebrikler!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Son uygulamaları görüntüleme hareketini tamamladınız."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Son kullanılan uygulamaları görüntülemek için dokunmatik alanda üç parmağınızla yukarı kaydırıp basılı tutun"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Tüm uygulamaları göster"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Klavyenizde eylem tuşuna basın"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Tebrikler!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Tüm uygulamaları görüntüleme hareketini tamamladınız"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Tüm uygulamalarınızı görüntülemek için klavyenizdeki eylem tuşuna basın"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Eğitim animasyonu, oynatmayı duraklatmak ve sürdürmek için tıklayın."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klavye aydınlatması"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Seviye %1$d / %2$d"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 68129a8..af70c6f 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Сповіщення про сеанс запису екрана"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Записати відео з екрана?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Записувати один додаток"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Записувати весь екран"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Записувати весь вміст екрана: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Коли ви записуєте вміст усього екрана, на відео потрапляє все, що на ньому відображається. Тому будьте уважні з паролями, повідомленнями, фотографіями, аудіо, відео, платіжною інформацією тощо."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Коли ви записуєте додаток, на відео потрапляє все, що відображається або відтворюється в ньому. Тому будьте уважні з паролями, повідомленнями, фотографіями, аудіо, відео, платіжною інформацією тощо."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Записувати вміст екрана"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Не вдалось оновити набір налаштувань"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Набір налаштувань"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Вибрано"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Інструменти"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Живі субтитри"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Нотатка"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Показувати значки сповіщень із низьким пріоритетом"</string>
<string name="other" msgid="429768510980739978">"Інше"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"вилучити опцію"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додати опцію в кінець"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перемістити опцію"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додати панель"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Перемістити на позицію <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додати на позицію <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Позиція недійсна."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"вибрати користувача"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Немає Інтернету"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Відкрити налаштування <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Змінити порядок налаштувань."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Меню кнопки живлення"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Сторінка <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Заблокований екран"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(від’єднано)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Не вдалося змінити підключення. Натисніть, щоб повторити спробу."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Під’єднати пристрій"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Щоб транслювати цей сеанс, відкрийте додаток."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Невідомий додаток"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Припинити трансляцію"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Доступні пристрої для відтворення звуку."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Перейти на головний екран"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Переглянути нещодавні додатки"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Спробуйте ще"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Проведіть трьома пальцями вліво чи вправо по сенсорній панелі"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Чудово!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ви виконали жест \"Назад\"."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Щоб повернутися за допомогою сенсорної панелі, проведіть трьома пальцями вліво чи вправо"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Перейти на головний екран"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Проведіть трьома пальцями вгору на сенсорній панелі"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Чудово!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ви виконали жест переходу на головний екран"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Щоб перейти на головний екран, проведіть трьома пальцями вгору на сенсорній панелі"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Переглянути нещодавні додатки"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Проведіть трьома пальцями вгору й утримуйте їх на сенсорній панелі"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Чудово!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Ви виконали жест для перегляду нещодавно відкритих додатків."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Щоб переглянути останні додатки, проведіть трьома пальцями вгору й утримуйте їх на сенсорній панелі"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Переглянути всі додатки"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Натисніть клавішу дії на клавіатурі"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Чудово!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Ви виконали жест для перегляду всіх додатків"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Щоб переглянути всі додатки, натисніть клавішу дії на клавіатурі"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Навчальна анімація. Натисніть, щоб призупинити або відновити відтворення."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Підсвічування клавіатури"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Рівень %1$d з %2$d"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 63213da..28aa1bb 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"اسکرین ریکارڈ سیشن کیلئے جاری اطلاع"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"آپ کی اسکرین ریکارڈ کریں؟"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"ایک ایپ ریکارڈ کریں"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"پوری اسکرین کو ریکارڈ کریں"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"پوری اسکرین ریکارڈ کریں: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"جب آپ اپنی پوری اسکرین کو ریکارڈ کر رہے ہوتے ہیں تو آپ کی اسکرین پر دکھائی گئی ہر چیز ریکارڈ کی جاتی ہے۔ لہذا، پاس ورڈز، ادائیگی کی تفصیلات، پیغامات، تصاویر، ساتھ ہی آڈیو اور ویڈیو جیسی چیزوں کے سلسلے میں محتاط رہیں۔"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"جب آپ کسی ایپ کو ریکارڈ کر رہے ہوتے ہیں تو اس ایپ میں دکھائی گئی یا چلائی گئی ہر چیز ریکارڈ کی جاتی ہے۔ لہذا، پاس ورڈز، ادائیگی کی تفصیلات، پیغامات، تصاویر، ساتھ ہی آڈیو اور ویڈیو جیسی چیزوں کے سلسلے میں محتاط رہیں۔"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"اسکرین ریکارڈ کریں"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"پہلے سے ترتیب شدہ کو اپ ڈیٹ نہیں کیا جا سکا"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"پہلے سے ترتیب شدہ"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"منتخب کردہ"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"ٹولز"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"لائیو کیپشن"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"نوٹ"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"کم ترجیحی اطلاع کے آئیکنز دکھائیں"</string>
<string name="other" msgid="429768510980739978">"دیگر"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ٹائل ہٹائیں"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ختم کرنے کے لیے ٹائل شامل کریں"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ٹائل منتقل کریں"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ٹائل شامل کریں"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> میں منتقل کریں"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"پوزیشن <xliff:g id="POSITION">%1$d</xliff:g> میں شامل کریں"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"پوزیشن غلط ہے۔"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"صارف منتخب کریں"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"انٹرنیٹ نہیں ہے"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> ترتیبات کھولیں۔"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"ترتیبات کی ترتیب میں ترمیم کریں۔"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"پاور مینیو"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"صفحہ <xliff:g id="ID_1">%1$d</xliff:g> از <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"مقفل اسکرین"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(غیر منسلک ہے)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"سوئچ نہیں کر سکتے۔ دوبارہ کوشش کرنے کے لیے تھپتھپائیں۔"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"آلہ منسلک کریں"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"اس سیشن کو کاسٹ کرنے کیلئے، براہ کرم ایپ کھولیں۔"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"نامعلوم ایپ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"کاسٹ کرنا بند کریں"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"آڈیو آؤٹ پٹ کے لیے دستیاب آلات۔"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"ہوم پر جائیں"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"حالیہ ایپس دیکھیں"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ہو گیا"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"دوبارہ کوشش کریں!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"واپس جائیں"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"اپنے ٹچ پیڈ پر تین انگلیوں کا استعمال کرتے ہوئے دائیں یا بائیں طرف سوائپ کریں"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"عمدہ!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"آپ نے واپس جائیں اشارے کو مکمل کر لیا۔"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"اپنے ٹچ پیڈ کا استعمال کرتے ہوئے واپس جانے کے لیے، تین انگلیوں کی مدد سے دائیں یا بائیں سوائپ کریں"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"ہوم پر جائیں"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"اپنے ٹچ پیڈ پر تین انگلیوں کی مدد سے اوپر کی طرف سوائپ کریں"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"بہترین!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"آپ نے ہوم پر جانے کا اشارہ مکمل کر لیا"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"اپنی ہوم اسکرین پر جانے کے لیے اپنے ٹچ پیڈ پر تین انگلیوں کی مدد سے اوپر کی طرف سوائپ کریں"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"حالیہ ایپس دیکھیں"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"اپنے ٹچ پیڈ پر تین انگلیوں کا استعمال کرتے ہوئے اوپر کی طرف سوائپ کریں اور دبائے رکھیں"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"بہترین!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"آپ نے حالیہ ایپس دیکھیں کا اشارہ مکمل کر لیا ہے۔"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"حالیہ ایپس دیکھنے کے لیے، اپنے ٹچ پیڈ پر تین انگلیوں کی مدد سے اوپر کی طرف سوائپ کریں اور دبائے رکھیں"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"سبھی ایپس دیکھیں"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"اپنے کی بورڈ پر ایکشن کلید دبائیں"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"بہت خوب!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"آپ نے سبھی ایپس دیکھیں کا اشارہ مکمل کر لیا ہے"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"اپنی سبھی ایپس دیکھنے کے لیے اپنے کی بورڈ پر ایکشن کلید کو دبائیں"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"ٹیوٹوریل اینیمیشن، روکنے کے لیے کلک کریں اور چلانا دوبارہ شروع کریں۔"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"کی بورڈ بیک لائٹ"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d میں سے %1$d کا لیول"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 488852f5..394a6e4 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekrandan yozib olish seansi uchun joriy bildirishnoma"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Ekran yozib olinsinmi?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Bitta ilovani yozib olish"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Butun ekranni yozib olish"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Butun ekranni yozib olish: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Butun ekranni yozib olishda ekranda koʻrsatilgan barcha axborotlar yozib olinadi. Shu sababli parollar, toʻlov tafsilotlari, xabarlar, suratlar, audio va video chiqmasligi uchun ehtiyot boʻling."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Ilovani yozib olishda ilovada koʻrsatilgan yoki ijro etilgan barcha axborotlar yozib olinadi. Shu sababli parollar, toʻlov tafsilotlari, xabarlar, suratlar, audio va video chiqmasligi uchun ehtiyot boʻling."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ekranni yozib olish"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Andoza yangilanmadi"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Andoza"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Tanlangan"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Vositalar"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Jonli izoh"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Qayd"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Muhim boʻlmagan bildirishnoma ikonkalarini koʻrsatish"</string>
<string name="other" msgid="429768510980739978">"Boshqa"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"katakchani olib tashlash"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"oxiriga katakcha kiritish"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Katakchani boshqa joyga olish"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Katakcha kiritish"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Bu joyga olish: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Bu joyga kiritish: <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Pozitsiya yaroqsiz."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"foydalanuvchini tanlash"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Internetga ulanmagansiz"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"<xliff:g id="ID_1">%s</xliff:g> sozlamalarini ochish."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Sozlamalar tartibini o‘zgartirish."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Quvvat menyusi"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"<xliff:g id="ID_1">%1$d</xliff:g>-sahifa, jami: <xliff:g id="ID_2">%2$d</xliff:g> ta sahifa"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Ekran qulfi"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(uzildi)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Xatolik. Qayta urinish uchun bosing."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Qurilma ulash"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu seansni translatsiya qilish uchun ilovani oching."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Notanish ilova"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Toʻxtatish"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Audio chiqish uchun mavjud qurilmalar."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Boshiga qaytish"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Oxirgi ilovalarni koʻrish"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tayyor"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Qayta urining!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Orqaga qaytish"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Sensorli panelda uchta barmoq bilan chapga yoki oʻngga suring"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Yaxshi!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ortga qaytish ishorasi darsini tamomladingiz."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Sensorli panel yordamida orqaga qaytish uchun uchta barmoq bilan chapga yoki oʻngga suring"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Boshiga qaytish"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Sensorli panelda uchta barmoq bilan tepaga suring"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Barakalla!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Bosh ekranni ochish ishorasi darsini tamomladingiz"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Asosiy ekraningizga oʻtish uchun sensorli panelda uchta barmoq bilan suring"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Oxirgi ilovalarni koʻrish"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Sensorli panelda uchta barmoq bilan tepaga surib, bosib turing"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Barakalla!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Oxirgi ilovalarni koʻrish ishorasini tugalladingiz."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Oxirgi ochilgan ilovalarni koʻrish uchun sensorli panelda uchta barmoq bilan tepega surib, ushlab turing"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Barcha ilovalarni koʻrish"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Klaviaturadagi amal tugmasini bosing"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Barakalla!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Hamma ilovalarni koʻrish ishorasini tugalladingiz"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Barcha ilovalaringizni koʻrish uchun klaviaturangizda amal tugmasini bosing"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Qoʻllanma animatsiyasi, pauza qilish va ijroni davom ettirish uchun bosing."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Klaviatura orqa yoritkichi"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Daraja: %1$d / %2$d"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 1b505d3d..81ac5e7 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Thông báo đang diễn ra về phiên ghi màn hình"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Ghi màn hình?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Ghi một ứng dụng"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Ghi toàn màn hình"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Ghi toàn bộ màn hình: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Khi bạn ghi toàn màn hình, mọi nội dung trên màn hình của bạn đều được ghi. Vì vậy, hãy thận trọng để không làm lộ thông tin như mật khẩu, thông tin thanh toán, tin nhắn, ảnh, âm thanh và video."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Khi bạn ghi một ứng dụng, mọi nội dung xuất hiện hoặc phát trong ứng dụng đó sẽ đều được ghi. Vì vậy, hãy thận trọng để không làm lộ thông tin như mật khẩu, thông tin thanh toán, tin nhắn, ảnh, âm thanh và video."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Ghi màn hình"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Không cập nhật được giá trị đặt trước"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Chế độ đặt sẵn"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Đã chọn"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Công cụ"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Phụ đề trực tiếp"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Ghi chú"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Hiển thị biểu tượng thông báo có mức ưu tiên thấp"</string>
<string name="other" msgid="429768510980739978">"Khác"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"xóa ô"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"thêm ô vào cuối"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Di chuyển ô"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Thêm ô"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Di chuyển tới <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Thêm vào vị trí <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Vị trí không hợp lệ."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"chọn người dùng"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Không có Internet"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Mở cài đặt <xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Chỉnh sửa thứ tự cài đặt."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Trình đơn nguồn"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Trang <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Màn hình khóa"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(đã ngắt kết nối)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Không thể chuyển đổi. Hãy nhấn để thử lại."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Kết nối thiết bị"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Vui lòng mở ứng dụng để truyền phiên này."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ứng dụng không xác định"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Dừng truyền"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Các thiết bị có sẵn để xuất âm thanh."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Chuyển đến màn hình chính"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Xem các ứng dụng gần đây"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Xong"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Hãy thử lại!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Quay lại"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Dùng 3 ngón tay vuốt sang trái hoặc sang phải trên bàn di chuột"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Tuyệt vời!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Bạn đã thực hiện xong cử chỉ quay lại."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Để quay lại bằng bàn di chuột, hãy dùng 3 ngón tay vuốt sang trái hoặc sang phải"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Chuyển đến màn hình chính"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Dùng 3 ngón tay vuốt lên trên bàn di chuột"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Tuyệt vời!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Bạn đã thực hiện xong cử chỉ chuyển đến màn hình chính"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Dùng 3 ngón tay vuốt lên trên bàn di chuột để chuyển đến màn hình chính"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Xem các ứng dụng gần đây"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Dùng 3 ngón tay vuốt lên và giữ trên bàn di chuột"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Tuyệt vời!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Bạn đã hoàn tất cử chỉ xem ứng dụng gần đây."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Để xem các ứng dụng gần đây, hãy dùng 3 ngón tay vuốt lên và giữ trên bàn di chuột"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Xem tất cả các ứng dụng"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Nhấn phím hành động trên bàn phím"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Rất tốt!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Bạn đã hoàn tất cử chỉ xem tất cả các ứng dụng"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Nhấn phím hành động trên bàn phím để xem mọi ứng dụng của bạn"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Ảnh động trong phần hướng dẫn, nhấp để tạm dừng và tiếp tục phát."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Đèn nền bàn phím"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Độ sáng %1$d/%2$d"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 8d6ec77..1649b3a 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"持续显示屏幕录制会话通知"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"要录制屏幕吗?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"录制单个应用"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"录制整个屏幕"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"全屏录制:%s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"录制整个屏幕时,屏幕上显示的所有内容均会被录制。因此,请务必小心操作,谨防泄露密码、付款详情、消息、照片、音频、视频等敏感信息。"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"录制单个应用时,该应用中显示或播放的所有内容均会被录制。因此,请务必小心操作,谨防泄露密码、付款信息、消息、照片、音频、视频等。"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"录制屏幕"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"无法更新预设"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"预设"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"已选择"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"工具"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"实时字幕"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"记事"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"显示低优先级的通知图标"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除功能块"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"将功能块添加到末尾"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移动功能块"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"添加功能块"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移至 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"添加到位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"位置无效。"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"选择用户"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"未连接到互联网"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"打开<xliff:g id="ID_1">%s</xliff:g>设置。"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"修改设置顺序。"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"电源菜单"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"第 <xliff:g id="ID_1">%1$d</xliff:g> 页,共 <xliff:g id="ID_2">%2$d</xliff:g> 页"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"锁定屏幕"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(已断开连接)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"无法切换。点按即可重试。"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"连接设备"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如需投放此会话,请打开相关应用。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"未知应用"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投放"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"音频输出的可用设备。"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"前往主屏幕"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近用过的应用"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"再试一次!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"在触控板上用三根手指向左或向右滑动"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"太棒了!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"您已完成“返回”手势教程。"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"如需使用触控板返回,请用三根手指向左或向右滑动"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"前往主屏幕"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"在触控板上用三根手指向上滑动"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"太棒了!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"您已完成“前往主屏幕”手势"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"在触控板上用三根手指向上滑动,即可前往主屏幕"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"查看最近用过的应用"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"在触控板上用三根手指向上滑动并按住"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"太棒了!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"您已完成“查看最近用过的应用”的手势教程。"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"如需查看最近用过的应用,请用三根手指在触控板上向上滑动并按住"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"查看所有应用"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"按键盘上的快捷操作按键"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"非常棒!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"您已完成“查看所有应用”手势教程"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"按下键盘上的快捷操作按键即可查看所有应用"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"教程动画,点击可暂停和继续播放。"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"键盘背光"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 级,共 %2$d 级"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index b1df372..29e9712 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"持續顯示錄影畫面工作階段通知"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"要錄影螢幕畫面嗎?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"錄影一個應用程式"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"錄影整個螢幕畫面"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"錄製整個螢幕:%s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"當你錄影整個螢幕畫面時,系統會錄影螢幕畫面上顯示的任何內容。因此,請謹慎處理密碼、付款資料、訊息、相片、音訊和影片等。"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"當你錄影應用程式時,系統會錄影該應用程式中顯示或播放的任何內容。因此,請謹慎處理密碼、付款資料、訊息、相片、音訊和影片等。"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"錄影螢幕畫面"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"無法更新預設"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"預設"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"揀咗"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"工具"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"即時字幕"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"筆記"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"將圖塊加到最尾"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"加圖塊"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移去 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"加去位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"位置冇效。"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"揀使用者"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"沒有互聯網連線"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"開啟<xliff:g id="ID_1">%s</xliff:g>設定頁面。"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"編輯設定次序。"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"電源選單"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"第 <xliff:g id="ID_1">%1$d</xliff:g> 頁 (共 <xliff:g id="ID_2">%2$d</xliff:g> 頁)"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"螢幕鎖定"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(已中斷連線)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"無法切換,輕按即可重試。"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"連接裝置"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如要投放此工作階段,請開啟應用程式。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明應用程式"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投放"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"可用作音訊輸出的裝置"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"返回主畫面"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近使用的應用程式"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"請再試一次!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"在觸控板上用三隻手指向左或向右滑動"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"很好!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"你已完成「返回」手勢的教學課程。"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"如要使用觸控板返回,請用三隻手指向左或向右滑動"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"返回主畫面"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"在觸控板上用三隻手指向上滑動"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"太好了!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"你已完成「返回主畫面」手勢的教學課程"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"用三隻手指在觸控板上向上滑動,即可前往主畫面"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"查看最近使用的應用程式"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"在觸控板上用三隻手指向上滑動並按住"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"做得好!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"你已完成「查看最近使用的應用程式」手勢的教學課程。"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"如要查看最近使用的應用程式,請用三隻手指在觸控板上向上滑動並按住"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"查看所有應用程式"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"按下鍵盤上的快捷操作鍵"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"做得好!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"你已完成「查看所有應用程式」手勢的教學課程"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"按下鍵盤上的快捷操作鍵即可查看所有應用程式"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"教學動畫,按一下以暫停和繼續播放。"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"鍵盤背光"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 373f1af..1c80985 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"持續顯示螢幕畫面錄製工作階段通知"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"要錄製畫面嗎?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"錄製單一應用程式"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"錄製整個畫面"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"錄製整個畫面:%s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"錄製整個畫面時,系統會錄下畫面上的所有內容。因此,請謹慎處理密碼、付款資料、訊息、相片和影音內容等資訊。"</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"當你錄製應用程式畫面時,系統會錄下該應用程式顯示或播放的所有內容。因此,請謹慎處理密碼、付款資料、訊息、相片和影音內容等資訊。"</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"錄製畫面"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"無法更新預設設定"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"預設"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"已選取"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"工具"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"即時字幕"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"筆記"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string>
<string name="other" msgid="429768510980739978">"其他"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"將圖塊加到結尾處"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"新增圖塊"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移至 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"新增到位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"位置無效。"</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"選擇使用者"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"沒有網際網路連線"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"開啟「<xliff:g id="ID_1">%s</xliff:g>」設定。"</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"編輯設定順序。"</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"電源鍵選單"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"第 <xliff:g id="ID_1">%1$d</xliff:g> 頁,共 <xliff:g id="ID_2">%2$d</xliff:g> 頁"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"螢幕鎖定"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(連線中斷)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"無法切換,輕觸即可重試。"</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"連接裝置"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如要投放這個工作階段,請開啟應用程式。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明的應用程式"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投放"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"可用於輸出音訊的裝置。"</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"返回主畫面"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近使用的應用程式"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"請再試一次!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"在觸控板上用三指向左或向右滑動"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"很好!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"你已完成「返回」手勢的教學課程。"</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"如要使用觸控板返回,請用三指向左或向右滑動"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"返回主畫面"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"在觸控板上用三指向上滑動"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"太棒了!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"你已完成「返回主畫面」手勢教學課程"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"在觸控板上用三指向上滑動,即可前往主畫面"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"查看最近使用的應用程式"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"在觸控板上用三指向上滑動並按住"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"太棒了!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"你已完成「查看最近使用的應用程式」手勢教學課程。"</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"如要查看最近使用的應用程式,請在觸控板上用三指向上滑動並按住"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"查看所有應用程式"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"按下鍵盤上的快捷操作鍵"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"非常好!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"你已完成「查看所有應用程式」手勢教學課程"</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"按下鍵盤上的快捷操作鍵即可查看所有應用程式"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"教學課程動畫,按一下即可暫停和繼續播放。"</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"鍵盤背光"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index a18d9e7..6a8483d 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -111,8 +111,10 @@
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Isaziso esiqhubekayo seseshini yokurekhoda isikrini"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Rekhoda isikrini sakho?"</string>
<string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Rekhoda i-app eyodwa"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="2794896384693120020">"Rekhoda sonke isikrini"</string>
- <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="3754611651558838691">"Rekhoda sonke isikrini: %s"</string>
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen (4882406311415082016) -->
+ <skip />
+ <!-- no translation found for screenrecord_permission_dialog_option_text_entire_screen_for_display (4169494703993148253) -->
+ <skip />
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Uma urekhoda sonke isikrini sakho, noma yini evela esikrinini iyarekhodwa. Ngakho-ke qaphela ngezinto ezifana namaphasiwedi, imininingwane yenkokhelo, imilayezo, izithombe, nomsindo nevidiyo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Uma urekhoda i-app, noma yini evezwa noma edlala kuleyo app iyarekhodwa. Ngakho-ke qaphela ngezinto ezifana namaphasiwedi, imininingwane yenkokhelo, imilayezo, izithombe, nomsindo nevidiyo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Rekhoda isikrini"</string>
@@ -415,6 +417,20 @@
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Ayikwazanga ukubuyekeza ukusetha ngaphambilini"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Ukusetha ngaphambilini"</string>
<string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Okukhethiwe"</string>
+ <!-- no translation found for hearing_devices_ambient_label (629440938614895797) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_left (3586965448230412600) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_control_right (6192137602448918383) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_expand_controls (2131816068187709200) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_collapse_controls (2261097656446201581) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_mute (1836882837647429416) -->
+ <skip />
+ <!-- no translation found for hearing_devices_ambient_unmute (2187938085943876814) -->
+ <skip />
<string name="hearing_devices_tools_label" msgid="1929081464316074476">"Amathuluzi"</string>
<string name="quick_settings_hearing_devices_live_caption_title" msgid="1054814050932225451">"Okushuthwe Bukhoma"</string>
<string name="quick_settings_notes_label" msgid="1028004078001002623">"Inothi"</string>
@@ -960,9 +976,11 @@
<string name="tuner_low_priority" msgid="8412666814123009820">"Bonisa izithonjana zesaziso zokubaluleka okuncane"</string>
<string name="other" msgid="429768510980739978">"Okunye"</string>
<string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"susa ithayela"</string>
- <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"engeza ithayela ekugcineni"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_add_action (8311378984458545661) -->
+ <skip />
<string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hambisa ithayela"</string>
- <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Engeza ithayela"</string>
+ <!-- no translation found for accessibility_qs_edit_tile_start_add (8141710006899065161) -->
+ <skip />
<string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Hambisa ku-<xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Engeza kusikhundla se-<xliff:g id="POSITION">%1$d</xliff:g>"</string>
<string name="accessibilit_qs_edit_tile_add_move_invalid_position" msgid="2858467994472624487">"Indawo ayivumelekile."</string>
@@ -978,7 +996,8 @@
<string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"khetha umsebenzisi"</string>
<string name="data_connection_no_internet" msgid="691058178914184544">"Ayikho i-inthanethi"</string>
<string name="accessibility_quick_settings_open_settings" msgid="536838345505030893">"Vula izilungiselelo ze-<xliff:g id="ID_1">%s</xliff:g>."</string>
- <string name="accessibility_quick_settings_edit" msgid="1523745183383815910">"Hlela uhlelo lwezilungiselelo."</string>
+ <!-- no translation found for accessibility_quick_settings_edit (6544873823850165) -->
+ <skip />
<string name="accessibility_quick_settings_power_menu" msgid="6820426108301758412">"Imenyu yamandla"</string>
<string name="accessibility_quick_settings_page" msgid="7506322631645550961">"Ikhasi <xliff:g id="ID_1">%1$d</xliff:g> kwangu-<xliff:g id="ID_2">%2$d</xliff:g>"</string>
<string name="tuner_lock_screen" msgid="2267383813241144544">"Khiya isikrini"</string>
@@ -1209,7 +1228,6 @@
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(inqamukile)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Akukwazi ukushintsha. Thepha ukuze uzame futhi."</string>
<string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"Xhuma idivayisi"</string>
- <string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ukuze usakaze le seshini, sicela uvule i-app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"I-app engaziwa"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Misa ukusakaza"</string>
<string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"Amadivayisi atholakalayo okukhipha umsindo."</string>
@@ -1468,32 +1486,27 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Iya ekhasini lokuqala"</string>
<string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Buka ama-app akamuva"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kwenziwe"</string>
- <!-- no translation found for gesture_error_title (469064941635578511) -->
- <skip />
+ <string name="gesture_error_title" msgid="469064941635578511">"Zama futhi!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Buyela emuva"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swayiphela kwesokunxele noma kwesokudla usebenzisa iminwe emithathu kuphedi yokuthinta"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Kuhle!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Ukuqedile ukuthinta kokubuyela emuva."</string>
- <!-- no translation found for touchpad_back_gesture_error_body (7112668207481458792) -->
- <skip />
+ <string name="touchpad_back_gesture_error_body" msgid="7112668207481458792">"Ukuze ubuyele emuva usebenzise iphedi yakho yokuthinta, swayiphela kwesokunxele noma kwesokudla usebenzisa iminwe emithathu"</string>
<string name="touchpad_home_gesture_action_title" msgid="8885107349719257882">"Iya ekhasini lokuqala"</string>
<string name="touchpad_home_gesture_guidance" msgid="4178219118381915899">"Swayiphela phezulu ngeminwe emithathu ephedini yakho yokuthinta"</string>
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Umsebenzi omuhle!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Ukuqedile ukunyakaza kokuya ekhaya"</string>
- <!-- no translation found for touchpad_home_gesture_error_body (3810674109999513073) -->
- <skip />
+ <string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Swayiphela phezulu ngeminwe emithathu kuphedi yakho yokuthinta ukuze uye esikrinini sakho sasekhaya"</string>
<string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Buka ama-app akamuva"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Swayiphela phezulu bese ubamba usebenzisa iminwe emithathu ephedini yokuthinta."</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Umsebenzi omuhle!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Uqedele ukubuka ukuthinta kwama-app akamuva."</string>
- <!-- no translation found for touchpad_recent_gesture_error_body (8695535720378462022) -->
- <skip />
+ <string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ukuze ubuke ama-app akamuva, swayiphela phezulu futhi ubambe usebenzisa iminwe emithathu kuphedi yakho yokuthinta"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Buka wonke ama-app"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Cindezela inkinobho yokufinyelela kukhibhodi yakho"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Wenze kahle!"</string>
<string name="tutorial_action_key_success_body" msgid="1688986269491357832">"Uqedele ukunyakazisa kokubuka onke ama-app."</string>
- <!-- no translation found for touchpad_action_key_error_body (8685502040091860903) -->
- <skip />
+ <string name="touchpad_action_key_error_body" msgid="8685502040091860903">"Cindezela inkinobho yokufinyelela kukhibhodi yakho ukuze ubuke wonke ama-app akho"</string>
<string name="tutorial_animation_content_description" msgid="2698816574982370184">"Okopopayi okokufundisa, chofoza ukuze umise kancane futhi uqalise kabusha ukudlala."</string>
<string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Ilambu lekhibhodi"</string>
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ileveli %1$d ka-%2$d"</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 6994a55..11327b6 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -2116,6 +2116,8 @@
<dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>
+ <dimen name="volume_dialog_ringer_drawer_left_margin">10dp</dimen>
+ <dimen name="volume_dialog_ringer_drawer_diff_right_margin">6dp</dimen>
<dimen name="volume_dialog_ringer_drawer_button_size">@dimen/volume_dialog_button_size</dimen>
<dimen name="volume_dialog_ringer_drawer_button_icon_radius">10dp</dimen>
<dimen name="volume_dialog_ringer_selected_button_background_radius">20dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
index 41b9d33..5f0acfa 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
@@ -19,6 +19,7 @@
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
+import android.annotation.Nullable;
import android.content.Context;
import android.hardware.display.DisplayManager;
import android.os.Handler;
@@ -35,6 +36,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.accessibility.AccessibilityButtonModeObserver;
import com.android.systemui.accessibility.AccessibilityButtonModeObserver.AccessibilityButtonMode;
import com.android.systemui.accessibility.AccessibilityButtonTargetsObserver;
@@ -61,6 +63,7 @@
private final ViewCaptureAwareWindowManager mViewCaptureAwareWindowManager;
private final DisplayManager mDisplayManager;
private final AccessibilityManager mAccessibilityManager;
+ private final HearingAidDeviceManager mHearingAidDeviceManager;
private final SecureSettings mSecureSettings;
private final DisplayTracker mDisplayTracker;
@@ -107,6 +110,7 @@
AccessibilityManager accessibilityManager,
AccessibilityButtonTargetsObserver accessibilityButtonTargetsObserver,
AccessibilityButtonModeObserver accessibilityButtonModeObserver,
+ @Nullable HearingAidDeviceManager hearingAidDeviceManager,
KeyguardUpdateMonitor keyguardUpdateMonitor,
SecureSettings secureSettings,
DisplayTracker displayTracker,
@@ -119,6 +123,7 @@
mAccessibilityManager = accessibilityManager;
mAccessibilityButtonTargetsObserver = accessibilityButtonTargetsObserver;
mAccessibilityButtonModeObserver = accessibilityButtonModeObserver;
+ mHearingAidDeviceManager = hearingAidDeviceManager;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mSecureSettings = secureSettings;
mDisplayTracker = displayTracker;
@@ -201,7 +206,7 @@
TYPE_NAVIGATION_BAR_PANEL, /* options= */ null);
mFloatingMenu = new MenuViewLayerController(windowContext, mWindowManager,
mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
- mNavigationModeController);
+ mNavigationModeController, mHearingAidDeviceManager);
}
mFloatingMenu.show();
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
index ffb5f3d..121b51f 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
@@ -30,6 +30,7 @@
import android.annotation.FloatRange;
import android.annotation.IntDef;
+import android.annotation.Nullable;
import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.pm.ActivityInfo;
@@ -49,6 +50,8 @@
import com.android.internal.accessibility.dialog.AccessibilityTarget;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
+import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.Prefs;
import com.android.systemui.util.settings.SecureSettings;
@@ -80,8 +83,11 @@
private final AccessibilityManager mAccessibilityManager;
private final AccessibilityManager.AccessibilityServicesStateChangeListener
mA11yServicesStateChangeListener = manager -> onTargetFeaturesChanged();
+ private final HearingAidDeviceManager mHearingAidDeviceManager;
+ private final HearingAidDeviceManager.ConnectionStatusListener
+ mHearingDeviceStatusListener = this::onDevicesConnectionStatusChanged;
private final Handler mHandler = new Handler(Looper.getMainLooper());
- private final OnSettingsContentsChanged mSettingsContentsCallback;
+ private final OnContentsChanged mSettingsContentsCallback;
private final SecureSettings mSecureSettings;
private Position mPercentagePosition;
@@ -148,12 +154,14 @@
};
MenuInfoRepository(Context context, AccessibilityManager accessibilityManager,
- OnSettingsContentsChanged settingsContentsChanged, SecureSettings secureSettings) {
+ OnContentsChanged settingsContentsChanged, SecureSettings secureSettings,
+ @Nullable HearingAidDeviceManager hearingAidDeviceManager) {
mContext = context;
mAccessibilityManager = accessibilityManager;
mConfiguration = new Configuration(context.getResources().getConfiguration());
mSettingsContentsCallback = settingsContentsChanged;
mSecureSettings = secureSettings;
+ mHearingAidDeviceManager = hearingAidDeviceManager;
mPercentagePosition = getStartPosition();
}
@@ -185,6 +193,14 @@
callback.onReady(getTargets(mContext, SOFTWARE));
}
+ void loadHearingDeviceStatus(OnInfoReady<Integer> callback) {
+ if (mHearingAidDeviceManager != null) {
+ callback.onReady(mHearingAidDeviceManager.getDevicesConnectionStatus());
+ } else {
+ callback.onReady(HearingAidDeviceManager.ConnectionStatus.NO_DEVICE_BONDED);
+ }
+ }
+
void loadMenuSizeType(OnInfoReady<Integer> callback) {
callback.onReady(getMenuSizeTypeFromSettings());
}
@@ -222,8 +238,8 @@
}
private void onTargetFeaturesChanged() {
- mSettingsContentsCallback.onTargetFeaturesChanged(
- getTargets(mContext, SOFTWARE));
+ List<AccessibilityTarget> targets = getTargets(mContext, SOFTWARE);
+ mSettingsContentsCallback.onTargetFeaturesChanged(targets);
}
private Position getStartPosition() {
@@ -269,6 +285,24 @@
mAccessibilityManager.addAccessibilityServicesStateChangeListener(
mA11yServicesStateChangeListener);
}
+
+ if (com.android.settingslib.flags.Flags.hearingDeviceSetConnectionStatusReport()) {
+ registerConnectionStatusListener();
+ }
+ }
+
+ private void registerConnectionStatusListener() {
+ if (mHearingAidDeviceManager != null) {
+ mHearingAidDeviceManager.registerConnectionStatusListener(
+ mHearingDeviceStatusListener, ThreadUtils.getBackgroundExecutor());
+ }
+ }
+
+ private void unregisterConnectionStatusListener() {
+ if (mHearingAidDeviceManager != null) {
+ mHearingAidDeviceManager.unregisterConnectionStatusListener(
+ mHearingDeviceStatusListener);
+ }
}
void unregisterObserversAndCallbacks() {
@@ -281,14 +315,18 @@
mAccessibilityManager.removeAccessibilityServicesStateChangeListener(
mA11yServicesStateChangeListener);
}
+
+ unregisterConnectionStatusListener();
}
- interface OnSettingsContentsChanged {
+ interface OnContentsChanged {
void onTargetFeaturesChanged(List<AccessibilityTarget> newTargetFeatures);
void onSizeTypeChanged(int newSizeType);
void onFadeEffectInfoChanged(MenuFadeEffectInfo fadeEffectInfo);
+
+ void onDevicesConnectionStatusChanged(@HearingAidDeviceManager.ConnectionStatus int status);
}
interface OnInfoReady<T> {
@@ -311,4 +349,9 @@
ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_OPACITY_VALUE,
UserHandle.USER_CURRENT);
}
+
+ private void onDevicesConnectionStatusChanged(
+ @HearingAidDeviceManager.ConnectionStatus int status) {
+ mSettingsContentsCallback.onDevicesConnectionStatusChanged(status);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
index 9d9e7df..23fc546 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
@@ -37,6 +37,7 @@
import com.android.internal.accessibility.dialog.AccessibilityTarget;
import com.android.modules.expresslog.Counter;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.util.settings.SecureSettings;
@@ -65,8 +66,11 @@
private final Observer<Integer> mSizeTypeObserver = this::onSizeTypeChanged;
private final Observer<List<AccessibilityTarget>> mTargetFeaturesObserver =
this::onTargetFeaturesChanged;
+ private final Observer<Integer> mHearingDeviceStatusObserver =
+ this::updateHearingDeviceStatus;
+ private final Observer<Integer> mHearingDeviceTargetIndexObserver =
+ this::updateHearingDeviceTargetIndex;
private final MenuViewAppearance mMenuViewAppearance;
-
private boolean mIsMoveToTucked;
private final MenuAnimationController mMenuAnimationController;
@@ -357,6 +361,11 @@
mMenuViewModel.getTargetFeaturesData().observeForever(mTargetFeaturesObserver);
mMenuViewModel.getSizeTypeData().observeForever(mSizeTypeObserver);
mMenuViewModel.getMoveToTuckedData().observeForever(mMoveToTuckedObserver);
+ if (com.android.settingslib.flags.Flags.hearingDeviceSetConnectionStatusReport()) {
+ mMenuViewModel.loadHearingDeviceStatus().observeForever(mHearingDeviceStatusObserver);
+ mMenuViewModel.getHearingDeviceTargetIndexData().observeForever(
+ mHearingDeviceTargetIndexObserver);
+ }
setVisibility(VISIBLE);
mMenuViewModel.registerObserversAndCallbacks();
getViewTreeObserver().addOnComputeInternalInsetsListener(this);
@@ -371,6 +380,9 @@
mMenuViewModel.getTargetFeaturesData().removeObserver(mTargetFeaturesObserver);
mMenuViewModel.getSizeTypeData().removeObserver(mSizeTypeObserver);
mMenuViewModel.getMoveToTuckedData().removeObserver(mMoveToTuckedObserver);
+ mMenuViewModel.getHearingDeviceStatusData().removeObserver(mHearingDeviceStatusObserver);
+ mMenuViewModel.getHearingDeviceTargetIndexData().removeObserver(
+ mHearingDeviceTargetIndexObserver);
mMenuViewModel.unregisterObserversAndCallbacks();
getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
getViewTreeObserver().removeOnDrawListener(mSystemGestureExcludeUpdater);
@@ -421,6 +433,14 @@
parentView.setSystemGestureExclusionRects(Collections.singletonList(mBoundsInParent));
}
+ private void updateHearingDeviceStatus(@HearingAidDeviceManager.ConnectionStatus int status) {
+ // TODO: b/357882387 - To update status drawable according to the status here.
+ }
+
+ private void updateHearingDeviceTargetIndex(int position) {
+ // TODO: b/357882387 - To update status drawable according to the status here.
+ }
+
/**
* Interface definition for the {@link AccessibilityTarget} list changes.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
index cb96e78..184518a 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
@@ -24,6 +24,7 @@
import android.view.accessibility.AccessibilityManager;
import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.util.settings.SecureSettings;
@@ -39,11 +40,12 @@
MenuViewLayerController(Context context, WindowManager windowManager,
ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
AccessibilityManager accessibilityManager, SecureSettings secureSettings,
- NavigationModeController navigationModeController) {
+ NavigationModeController navigationModeController,
+ HearingAidDeviceManager hearingAidDeviceManager) {
mWindowManager = viewCaptureAwareWindowManager;
MenuViewModel menuViewModel = new MenuViewModel(
- context, accessibilityManager, secureSettings);
+ context, accessibilityManager, secureSettings, hearingAidDeviceManager);
MenuViewAppearance menuViewAppearance = new MenuViewAppearance(context, windowManager);
mMenuViewLayer = new MenuViewLayer(context, windowManager, accessibilityManager,
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
index f924784..8b7d6a1 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
@@ -16,13 +16,20 @@
package com.android.systemui.accessibility.floatingmenu;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
+
+import static java.util.Collections.emptyList;
+
+import android.content.ComponentName;
import android.content.Context;
import android.view.accessibility.AccessibilityManager;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.Transformations;
import com.android.internal.accessibility.dialog.AccessibilityTarget;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.util.settings.SecureSettings;
import java.util.List;
@@ -31,9 +38,9 @@
* The view model provides the menu information from the repository{@link MenuInfoRepository} for
* the menu view{@link MenuView}.
*/
-class MenuViewModel implements MenuInfoRepository.OnSettingsContentsChanged {
+class MenuViewModel implements MenuInfoRepository.OnContentsChanged {
private final MutableLiveData<List<AccessibilityTarget>> mTargetFeaturesData =
- new MutableLiveData<>();
+ new MutableLiveData<>(emptyList());
private final MutableLiveData<Integer> mSizeTypeData = new MutableLiveData<>();
private final MutableLiveData<MenuFadeEffectInfo> mFadeEffectInfoData =
new MutableLiveData<>();
@@ -41,12 +48,18 @@
private final MutableLiveData<Boolean> mDockTooltipData = new MutableLiveData<>();
private final MutableLiveData<Boolean> mMigrationTooltipData = new MutableLiveData<>();
private final MutableLiveData<Position> mPercentagePositionData = new MutableLiveData<>();
+ private final MutableLiveData<Integer> mHearingDeviceStatusData = new MutableLiveData<>(
+ HearingAidDeviceManager.ConnectionStatus.NO_DEVICE_BONDED);
+ private final LiveData<Integer> mHearingDeviceTargetIndex = Transformations.map(
+ mTargetFeaturesData, this::getHearingDeviceTargetIndex);
+
private final MenuInfoRepository mInfoRepository;
MenuViewModel(Context context, AccessibilityManager accessibilityManager,
- SecureSettings secureSettings) {
+ SecureSettings secureSettings, HearingAidDeviceManager hearingAidDeviceManager) {
mInfoRepository = new MenuInfoRepository(context,
- accessibilityManager, /* settingsContentsChanged= */ this, secureSettings);
+ accessibilityManager, /* settingsContentsChanged= */ this, secureSettings,
+ hearingAidDeviceManager);
}
@Override
@@ -64,6 +77,12 @@
mFadeEffectInfoData.setValue(fadeEffectInfo);
}
+ @Override
+ public void onDevicesConnectionStatusChanged(
+ @HearingAidDeviceManager.ConnectionStatus int status) {
+ mHearingDeviceStatusData.postValue(status);
+ }
+
void updateMenuMoveToTucked(boolean isMoveToTucked) {
mInfoRepository.updateMoveToTucked(isMoveToTucked);
}
@@ -115,6 +134,19 @@
return mTargetFeaturesData;
}
+ LiveData<Integer> loadHearingDeviceStatus() {
+ mInfoRepository.loadHearingDeviceStatus(mHearingDeviceStatusData::setValue);
+ return mHearingDeviceStatusData;
+ }
+
+ LiveData<Integer> getHearingDeviceStatusData() {
+ return mHearingDeviceStatusData;
+ }
+
+ LiveData<Integer> getHearingDeviceTargetIndexData() {
+ return mHearingDeviceTargetIndex;
+ }
+
void registerObserversAndCallbacks() {
mInfoRepository.registerObserversAndCallbacks();
}
@@ -122,4 +154,16 @@
void unregisterObserversAndCallbacks() {
mInfoRepository.unregisterObserversAndCallbacks();
}
+
+ private int getHearingDeviceTargetIndex(List<AccessibilityTarget> targetList) {
+ final int listSize = targetList.size();
+ for (int index = 0; index < listSize; index++) {
+ AccessibilityTarget target = targetList.get(index);
+ if (ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.equals(
+ ComponentName.unflattenFromString(target.getId()))) {
+ return index;
+ }
+ }
+ return -1;
+ }
}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalTutorialIndicatorViewBinder.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalTutorialIndicatorViewBinder.kt
deleted file mode 100644
index 9c754ea..0000000
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalTutorialIndicatorViewBinder.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.systemui.communal.ui.binder
-
-import android.widget.TextView
-import androidx.core.view.isVisible
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.repeatOnLifecycle
-import com.android.systemui.communal.ui.viewmodel.CommunalTutorialIndicatorViewModel
-import com.android.systemui.lifecycle.repeatWhenAttached
-import kotlinx.coroutines.DisposableHandle
-import com.android.app.tracing.coroutines.launchTraced as launch
-
-/** View binder for communal tutorial indicator shown on keyguard. */
-object CommunalTutorialIndicatorViewBinder {
- fun bind(
- view: TextView,
- viewModel: CommunalTutorialIndicatorViewModel,
- isPreviewMode: Boolean = false,
- ): DisposableHandle {
- val disposableHandle =
- view.repeatWhenAttached {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- launch {
- viewModel.showIndicator(isPreviewMode).collect { showIndicator ->
- view.isVisible = showIndicator
- }
- }
-
- launch { viewModel.alpha.collect { view.alpha = it } }
- }
- }
-
- return disposableHandle
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/sections/CommunalTutorialIndicatorSection.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/sections/CommunalTutorialIndicatorSection.kt
deleted file mode 100644
index 1a323a75..0000000
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/sections/CommunalTutorialIndicatorSection.kt
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.systemui.communal.ui.view.layout.sections
-
-import android.content.res.Resources
-import android.graphics.Typeface
-import android.graphics.Typeface.NORMAL
-import android.view.Gravity
-import android.view.View
-import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
-import android.widget.TextView
-import androidx.constraintlayout.widget.ConstraintLayout
-import androidx.constraintlayout.widget.ConstraintSet
-import androidx.core.content.res.ResourcesCompat
-import com.android.systemui.communal.domain.interactor.CommunalInteractor
-import com.android.systemui.communal.ui.binder.CommunalTutorialIndicatorViewBinder
-import com.android.systemui.communal.ui.viewmodel.CommunalTutorialIndicatorViewModel
-import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.shared.model.KeyguardSection
-import com.android.systemui.keyguard.ui.view.layout.sections.removeView
-import com.android.systemui.res.R
-import javax.inject.Inject
-import kotlinx.coroutines.DisposableHandle
-
-class CommunalTutorialIndicatorSection
-@Inject
-constructor(
- @Main private val resources: Resources,
- private val communalTutorialIndicatorViewModel: CommunalTutorialIndicatorViewModel,
- private val communalInteractor: CommunalInteractor,
-) : KeyguardSection() {
- private var communalTutorialIndicatorHandle: DisposableHandle? = null
-
- override fun addViews(constraintLayout: ConstraintLayout) {
- if (!communalInteractor.isCommunalEnabled.value) {
- return
- }
- val padding =
- constraintLayout.resources.getDimensionPixelSize(
- R.dimen.communal_tutorial_indicator_padding
- )
- val view =
- TextView(constraintLayout.context).apply {
- id = R.id.communal_tutorial_indicator
- visibility = View.GONE
- background =
- ResourcesCompat.getDrawable(
- context.resources,
- R.drawable.keyguard_bottom_affordance_bg,
- context.theme
- )
- foreground =
- ResourcesCompat.getDrawable(
- context.resources,
- R.drawable.keyguard_bottom_affordance_selected_border,
- context.theme
- )
- gravity = Gravity.CENTER_VERTICAL
- typeface = Typeface.create("google-sans", NORMAL)
- text = constraintLayout.context.getString(R.string.communal_tutorial_indicator_text)
- setPadding(padding, padding, padding, padding)
- }
- constraintLayout.addView(view)
- }
-
- override fun bindData(constraintLayout: ConstraintLayout) {
- if (!communalInteractor.isCommunalEnabled.value) {
- return
- }
- communalTutorialIndicatorHandle =
- CommunalTutorialIndicatorViewBinder.bind(
- constraintLayout.requireViewById(R.id.communal_tutorial_indicator),
- communalTutorialIndicatorViewModel,
- )
- }
-
- override fun applyConstraints(constraintSet: ConstraintSet) {
- if (!communalInteractor.isCommunalEnabled.value) {
- return
- }
- val tutorialIndicatorId = R.id.communal_tutorial_indicator
- val width = resources.getDimensionPixelSize(R.dimen.communal_tutorial_indicator_fixed_width)
- val horizontalOffsetMargin =
- resources.getDimensionPixelSize(R.dimen.communal_tutorial_indicator_horizontal_offset)
-
- constraintSet.apply {
- constrainWidth(tutorialIndicatorId, width)
- constrainHeight(tutorialIndicatorId, WRAP_CONTENT)
- connect(
- tutorialIndicatorId,
- ConstraintSet.RIGHT,
- ConstraintSet.PARENT_ID,
- ConstraintSet.RIGHT,
- horizontalOffsetMargin
- )
- connect(
- tutorialIndicatorId,
- ConstraintSet.TOP,
- ConstraintSet.PARENT_ID,
- ConstraintSet.TOP
- )
- connect(
- tutorialIndicatorId,
- ConstraintSet.BOTTOM,
- ConstraintSet.PARENT_ID,
- ConstraintSet.BOTTOM
- )
- setVisibility(tutorialIndicatorId, View.GONE)
- }
- }
-
- override fun removeViews(constraintLayout: ConstraintLayout) {
- communalTutorialIndicatorHandle?.dispose()
- constraintLayout.removeView(R.id.communal_tutorial_indicator)
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTutorialIndicatorViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTutorialIndicatorViewModel.kt
deleted file mode 100644
index ce3a2be..0000000
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTutorialIndicatorViewModel.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.systemui.communal.ui.viewmodel
-
-import com.android.systemui.communal.domain.interactor.CommunalTutorialInteractor
-import javax.inject.Inject
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.asStateFlow
-import kotlinx.coroutines.flow.flowOf
-
-/** View model for communal tutorial indicator on keyguard */
-class CommunalTutorialIndicatorViewModel
-@Inject
-constructor(private val communalTutorialInteractor: CommunalTutorialInteractor) {
- /**
- * An observable for whether the tutorial indicator view should be visible.
- *
- * @param isPreviewMode Whether for preview keyguard mode in wallpaper settings.
- */
- fun showIndicator(isPreviewMode: Boolean): StateFlow<Boolean> {
- return if (isPreviewMode) {
- MutableStateFlow(false).asStateFlow()
- } else {
- communalTutorialInteractor.isTutorialAvailable
- }
- }
-
- /** An observable for the alpha level for the tutorial indicator. */
- // TODO("b/383587536") find replacement for keyguardBottomAreaInteractor alpha
- val alpha: Flow<Float> = flowOf(0f)
-}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SettingsLibraryModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SettingsLibraryModule.java
index 14626e1..e72dfad 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SettingsLibraryModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SettingsLibraryModule.java
@@ -22,6 +22,7 @@
import android.os.Handler;
import android.os.UserHandle;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.dagger.qualifiers.Background;
@@ -41,4 +42,16 @@
@Background Handler bgHandler) {
return LocalBluetoothManager.create(context, bgHandler, UserHandle.ALL);
}
+
+ @SuppressLint("MissingPermission")
+ @SysUISingleton
+ @Provides
+ @Nullable
+ static HearingAidDeviceManager provideHearingAidDeviceManager(
+ @Nullable LocalBluetoothManager localBluetoothManager) {
+ if (localBluetoothManager == null) {
+ return null;
+ }
+ return localBluetoothManager.getCachedDeviceManager().getHearingAidDeviceManager();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepository.kt b/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepository.kt
index f310b30..3390640 100644
--- a/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayWindowPropertiesRepository.kt
@@ -18,6 +18,8 @@
import android.annotation.SuppressLint
import android.content.Context
+import android.os.Bundle
+import android.util.Log
import android.view.Display
import android.view.LayoutInflater
import android.view.WindowManager
@@ -39,14 +41,13 @@
interface DisplayWindowPropertiesRepository {
/**
- * Returns a [DisplayWindowProperties] instance for a given display id and window type.
- *
- * @throws IllegalArgumentException if no display with the given display id exists.
+ * Returns a [DisplayWindowProperties] instance for a given display id and window type, or null
+ * if no display with the given display id exists.
*/
fun get(
displayId: Int,
@WindowManager.LayoutParams.WindowType windowType: Int,
- ): DisplayWindowProperties
+ ): DisplayWindowProperties?
}
@SysUISingleton
@@ -72,12 +73,10 @@
override fun get(
displayId: Int,
@WindowManager.LayoutParams.WindowType windowType: Int,
- ): DisplayWindowProperties {
- val display =
- displayRepository.getDisplay(displayId)
- ?: throw IllegalArgumentException("Display with id $displayId doesn't exist")
+ ): DisplayWindowProperties? {
+ val display = displayRepository.getDisplay(displayId) ?: return null
return properties.get(displayId, windowType)
- ?: create(display, windowType).also { properties.put(displayId, windowType, it) }
+ ?: create(display, windowType)?.also { properties.put(displayId, windowType, it) }
}
override fun start() {
@@ -88,7 +87,7 @@
}
}
- private fun create(display: Display, windowType: Int): DisplayWindowProperties {
+ private fun create(display: Display, windowType: Int): DisplayWindowProperties? {
val displayId = display.displayId
return if (displayId == Display.DEFAULT_DISPLAY) {
// For the default display, we can just reuse the global/application properties.
@@ -102,6 +101,14 @@
)
} else {
val context = createWindowContext(display, windowType)
+ if (context.displayId != display.displayId) {
+ Log.e(
+ TAG,
+ "Returning null because the new context doesn't have the desired display id " +
+ "${display.displayId}. Display was already removed.",
+ )
+ return null
+ }
@SuppressLint("NonInjectedService") // Need to manually get the service
val windowManager = context.getSystemService(WindowManager::class.java) as WindowManager
val layoutInflater = LayoutInflater.from(context)
@@ -110,11 +117,15 @@
}
private fun createWindowContext(display: Display, windowType: Int): Context =
- globalContext.createWindowContext(display, windowType, /* options= */ null).also {
+ globalContext.createWindowContext(display, windowType, /* options= */ Bundle.EMPTY).also {
it.setTheme(R.style.Theme_SystemUI)
}
override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.write("perDisplayContexts: $properties")
}
+
+ private companion object {
+ const val TAG = "DisplayWindowPropsRepo"
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/display/data/repository/PerDisplayStore.kt b/packages/SystemUI/src/com/android/systemui/display/data/repository/PerDisplayStore.kt
index 711534f..564588c 100644
--- a/packages/SystemUI/src/com/android/systemui/display/data/repository/PerDisplayStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/data/repository/PerDisplayStore.kt
@@ -16,6 +16,7 @@
package com.android.systemui.display.data.repository
+import android.util.Log
import android.view.Display
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
@@ -36,12 +37,10 @@
val defaultDisplay: T
/**
- * Returns an instance for a specific display id.
- *
- * @throws IllegalArgumentException if [displayId] doesn't match the id of any existing
- * displays.
+ * Returns an instance for a specific display id, or null if [displayId] doesn't match the id of
+ * any existing displays.
*/
- fun forDisplay(displayId: Int): T
+ fun forDisplay(displayId: Int): T?
}
abstract class PerDisplayStoreImpl<T>(
@@ -58,7 +57,7 @@
* Note that the id of the default display is [Display.DEFAULT_DISPLAY].
*/
override val defaultDisplay: T
- get() = forDisplay(Display.DEFAULT_DISPLAY)
+ get() = forDisplay(Display.DEFAULT_DISPLAY)!!
/**
* Returns an instance for a specific display id.
@@ -66,16 +65,30 @@
* @throws IllegalArgumentException if [displayId] doesn't match the id of any existing
* displays.
*/
- override fun forDisplay(displayId: Int): T {
+ override fun forDisplay(displayId: Int): T? {
if (displayRepository.getDisplay(displayId) == null) {
- throw IllegalArgumentException("Display with id $displayId doesn't exist.")
+ Log.e(TAG, "<${instanceClass.simpleName}>: Display with id $displayId doesn't exist.")
+ return null
}
- return perDisplayInstances.computeIfAbsent(displayId) {
- createInstanceForDisplay(displayId)
+ synchronized(perDisplayInstances) {
+ val existingInstance = perDisplayInstances[displayId]
+ if (existingInstance != null) {
+ return existingInstance
+ }
+ val newInstance = createInstanceForDisplay(displayId)
+ if (newInstance == null) {
+ Log.e(
+ TAG,
+ "<${instanceClass.simpleName}> returning null because createInstanceForDisplay($displayId) returned null.",
+ )
+ } else {
+ perDisplayInstances[displayId] = newInstance
+ }
+ return newInstance
}
}
- protected abstract fun createInstanceForDisplay(displayId: Int): T
+ protected abstract fun createInstanceForDisplay(displayId: Int): T?
override fun start() {
val instanceType = instanceClass.simpleName
@@ -98,6 +111,10 @@
override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println(perDisplayInstances)
}
+
+ private companion object {
+ const val TAG = "PerDisplayStore"
+ }
}
class SingleDisplayStore<T>(defaultInstance: T) : PerDisplayStore<T> {
diff --git a/packages/SystemUI/src/com/android/systemui/display/domain/interactor/DisplayWindowPropertiesInteractor.kt b/packages/SystemUI/src/com/android/systemui/display/domain/interactor/DisplayWindowPropertiesInteractor.kt
index 22e467b..99c9ca9 100644
--- a/packages/SystemUI/src/com/android/systemui/display/domain/interactor/DisplayWindowPropertiesInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/domain/interactor/DisplayWindowPropertiesInteractor.kt
@@ -33,7 +33,7 @@
*
* @throws IllegalArgumentException if no display with the given display id exists.
*/
- fun getForStatusBar(displayId: Int): DisplayWindowProperties
+ fun getForStatusBar(displayId: Int): DisplayWindowProperties?
}
@SysUISingleton
@@ -42,7 +42,7 @@
constructor(private val repo: DisplayWindowPropertiesRepository) :
DisplayWindowPropertiesInteractor {
- override fun getForStatusBar(displayId: Int): DisplayWindowProperties {
+ override fun getForStatusBar(displayId: Int): DisplayWindowProperties? {
return repo.get(displayId, TYPE_STATUS_BAR)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
index a901151..284298d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
@@ -18,6 +18,7 @@
import android.animation.ValueAnimator
import com.android.app.animation.Interpolators
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.Flags.communalSceneKtfRefactor
import com.android.systemui.Flags.restartDreamOnUnocclude
import com.android.systemui.communal.domain.interactor.CommunalInteractor
@@ -38,7 +39,6 @@
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import com.android.app.tracing.coroutines.launchTraced as launch
@SysUISingleton
class FromOccludedTransitionInteractor
@@ -222,6 +222,7 @@
const val TAG = "FromOccludedTransitionInteractor"
private val DEFAULT_DURATION = 500.milliseconds
val TO_ALTERNATE_BOUNCER_DURATION = DEFAULT_DURATION
+ val TO_PRIMARY_BOUNCER_DURATION = DEFAULT_DURATION
val TO_AOD_DURATION = DEFAULT_DURATION
val TO_DOZING_DURATION = DEFAULT_DURATION
val TO_GLANCEABLE_HUB_DURATION = 250.milliseconds
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
index 6fb31c0..a210787 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
@@ -40,7 +40,6 @@
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.FrameLayout
-import android.widget.TextView
import android.window.InputTransferToken
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
@@ -52,8 +51,6 @@
import com.android.systemui.animation.view.LaunchableImageView
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor
import com.android.systemui.broadcast.BroadcastDispatcher
-import com.android.systemui.communal.ui.binder.CommunalTutorialIndicatorViewBinder
-import com.android.systemui.communal.ui.viewmodel.CommunalTutorialIndicatorViewModel
import com.android.systemui.customization.R as customR
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
@@ -118,7 +115,6 @@
@Assisted bundle: Bundle,
private val shadeInteractor: ShadeInteractor,
private val secureSettings: SecureSettings,
- private val communalTutorialViewModel: CommunalTutorialIndicatorViewModel,
private val defaultShortcutsSection: DefaultShortcutsSection,
private val keyguardQuickAffordanceViewBinder: KeyguardQuickAffordanceViewBinder,
) {
@@ -369,7 +365,6 @@
),
)
}
- setupCommunalTutorialIndicator(keyguardRootView)
}
private fun setupShortcuts(keyguardRootView: ConstraintLayout) {
@@ -487,17 +482,6 @@
)
}
- private fun setupCommunalTutorialIndicator(keyguardRootView: ConstraintLayout) {
- keyguardRootView.findViewById<TextView>(R.id.communal_tutorial_indicator)?.let {
- indicatorView ->
- CommunalTutorialIndicatorViewBinder.bind(
- indicatorView,
- communalTutorialViewModel,
- isPreviewMode = true,
- )
- }
- }
-
@Style.Type
private suspend fun fetchThemeStyleFromSetting(): Int {
val overlayPackageJson =
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/PrimaryBouncerTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/PrimaryBouncerTransition.kt
index 16cb450..4a0817b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/PrimaryBouncerTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/PrimaryBouncerTransition.kt
@@ -17,19 +17,23 @@
package com.android.systemui.keyguard.ui.transitions
import android.content.res.Resources
-import com.android.systemui.Flags.notificationShadeBlur
+import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToPrimaryBouncerTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.AodToPrimaryBouncerTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.DozingToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToPrimaryBouncerTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.LockscreenToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.OccludedToPrimaryBouncerTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToAodTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToDozingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGlanceableHubTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToOccludedTransitionViewModel
import com.android.systemui.res.R
+import com.android.systemui.window.flag.WindowBlurFlag
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -47,6 +51,14 @@
interface PrimaryBouncerTransition {
/** Radius of blur applied to the window's root view. */
val windowBlurRadius: Flow<Float>
+
+ fun transitionProgressToBlurRadius(
+ starBlurRadius: Float,
+ endBlurRadius: Float,
+ transitionProgress: Float,
+ ): Float {
+ return MathUtils.lerp(starBlurRadius, endBlurRadius, transitionProgress)
+ }
}
/**
@@ -78,6 +90,16 @@
@Binds
@IntoSet
+ fun fromGlanceableHub(
+ impl: GlanceableHubToPrimaryBouncerTransitionViewModel
+ ): PrimaryBouncerTransition
+
+ @Binds
+ @IntoSet
+ fun fromOccluded(impl: OccludedToPrimaryBouncerTransitionViewModel): PrimaryBouncerTransition
+
+ @Binds
+ @IntoSet
fun toAod(impl: PrimaryBouncerToAodTransitionViewModel): PrimaryBouncerTransition
@Binds
@@ -98,13 +120,17 @@
@IntoSet
fun toGone(impl: PrimaryBouncerToGoneTransitionViewModel): PrimaryBouncerTransition
+ @Binds
+ @IntoSet
+ fun toOccluded(impl: PrimaryBouncerToOccludedTransitionViewModel): PrimaryBouncerTransition
+
companion object {
@Provides
@SysUISingleton
fun provideBlurConfig(@Main resources: Resources): BlurConfig {
val minBlurRadius = resources.getDimensionPixelSize(R.dimen.min_window_blur_radius)
val maxBlurRadius =
- if (notificationShadeBlur()) {
+ if (WindowBlurFlag.isEnabled) {
resources.getDimensionPixelSize(R.dimen.max_shade_window_blur_radius)
} else {
resources.getDimensionPixelSize(R.dimen.max_window_blur_radius)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
index 6973fec..f34cc07 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.ui.view.layout.blueprints
-import com.android.systemui.communal.ui.view.layout.sections.CommunalTutorialIndicatorSection
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
import com.android.systemui.keyguard.shared.model.KeyguardSection
@@ -63,7 +62,6 @@
defaultNotificationStackScrollLayoutSection: DefaultNotificationStackScrollLayoutSection,
aodNotificationIconsSection: AodNotificationIconsSection,
aodBurnInSection: AodBurnInSection,
- communalTutorialIndicatorSection: CommunalTutorialIndicatorSection,
clockSection: ClockSection,
smartspaceSection: SmartspaceSection,
keyguardSliceViewSection: KeyguardSliceViewSection,
@@ -83,7 +81,6 @@
aodNotificationIconsSection,
smartspaceSection,
aodBurnInSection,
- communalTutorialIndicatorSection,
clockSection,
keyguardSliceViewSection,
defaultDeviceEntrySection,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
index 1eed224..856e1d6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.ui.view.layout.blueprints
-import com.android.systemui.communal.ui.view.layout.sections.CommunalTutorialIndicatorSection
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
import com.android.systemui.keyguard.shared.model.KeyguardSection
@@ -61,7 +60,6 @@
splitShadeGuidelines: SplitShadeGuidelines,
aodNotificationIconsSection: AodNotificationIconsSection,
aodBurnInSection: AodBurnInSection,
- communalTutorialIndicatorSection: CommunalTutorialIndicatorSection,
clockSection: ClockSection,
smartspaceSection: SmartspaceSection,
mediaSection: SplitShadeMediaSection,
@@ -81,7 +79,6 @@
aodNotificationIconsSection,
smartspaceSection,
aodBurnInSection,
- communalTutorialIndicatorSection,
clockSection,
mediaSection,
defaultDeviceEntrySection, // Add LAST: Intentionally has z-order above other views.
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt
index 1866d62..f174557 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.FromAlternateBouncerTransitionInteractor
import com.android.systemui.keyguard.shared.model.Edge
@@ -87,7 +86,11 @@
transitionAnimation.sharedFlow(
duration = FromAlternateBouncerTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
onStep = { step ->
- MathUtils.lerp(blurConfig.minBlurRadiusPx, blurConfig.maxBlurRadiusPx, step)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.minBlurRadiusPx,
+ endBlurRadius = blurConfig.maxBlurRadiusPx,
+ transitionProgress = step,
+ )
},
onFinish = { blurConfig.maxBlurRadiusPx },
),
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModel.kt
index dff645c..d8b617a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.FromDozingTransitionInteractor.Companion.TO_PRIMARY_BOUNCER_DURATION
import com.android.systemui.keyguard.shared.model.Edge
@@ -57,7 +56,11 @@
transitionAnimation.sharedFlow(
TO_PRIMARY_BOUNCER_DURATION,
onStep = { step ->
- MathUtils.lerp(blurConfig.minBlurRadiusPx, blurConfig.maxBlurRadiusPx, step)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.minBlurRadiusPx,
+ endBlurRadius = blurConfig.maxBlurRadiusPx,
+ transitionProgress = step,
+ )
},
onFinish = { blurConfig.maxBlurRadiusPx },
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModel.kt
new file mode 100644
index 0000000..597df15
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModel.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.GLANCEABLE_HUB
+import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.BlurConfig
+import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+
+@SysUISingleton
+class GlanceableHubToPrimaryBouncerTransitionViewModel
+@Inject
+constructor(private val blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFlow) :
+ PrimaryBouncerTransition {
+ private val transitionAnimation =
+ animationFlow
+ .setup(
+ duration = FromLockscreenTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
+ edge = Edge.INVALID,
+ )
+ .setupWithoutSceneContainer(edge = Edge.create(GLANCEABLE_HUB, PRIMARY_BOUNCER))
+
+ override val windowBlurRadius: Flow<Float> =
+ transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
index 182c847..c373fd0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor
import com.android.systemui.keyguard.shared.model.Edge
@@ -90,7 +89,11 @@
transitionAnimation.sharedFlow(
duration = FromLockscreenTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
onStep = {
- MathUtils.lerp(blurConfig.minBlurRadiusPx, blurConfig.maxBlurRadiusPx, it)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.minBlurRadiusPx,
+ endBlurRadius = blurConfig.maxBlurRadiusPx,
+ transitionProgress = it,
+ )
},
),
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt
new file mode 100644
index 0000000..4459810
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromOccludedTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
+import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.BlurConfig
+import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+
+@SysUISingleton
+class OccludedToPrimaryBouncerTransitionViewModel
+@Inject
+constructor(blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFlow) :
+ PrimaryBouncerTransition {
+ private val transitionAnimation =
+ animationFlow
+ .setup(
+ duration = FromOccludedTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION,
+ edge = Edge.INVALID,
+ )
+ .setupWithoutSceneContainer(edge = Edge.create(OCCLUDED, PRIMARY_BOUNCER))
+
+ override val windowBlurRadius: Flow<Float> =
+ transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
index 92daed4..fab8008 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor
@@ -84,7 +83,11 @@
transitionAnimation.sharedFlow(
duration = FromPrimaryBouncerTransitionInteractor.TO_AOD_DURATION,
onStep = { step ->
- MathUtils.lerp(blurConfig.maxBlurRadiusPx, blurConfig.minBlurRadiusPx, step)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.maxBlurRadiusPx,
+ endBlurRadius = blurConfig.minBlurRadiusPx,
+ transitionProgress = step,
+ )
},
onFinish = { blurConfig.minBlurRadiusPx },
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModel.kt
index 2c5250b..eebdf2e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor.Companion.TO_DOZING_DURATION
@@ -73,7 +72,11 @@
transitionAnimation.sharedFlow(
duration = TO_DOZING_DURATION,
onStep = { step ->
- MathUtils.lerp(blurConfig.maxBlurRadiusPx, blurConfig.minBlurRadiusPx, step)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.maxBlurRadiusPx,
+ endBlurRadius = blurConfig.minBlurRadiusPx,
+ transitionProgress = step,
+ )
},
onFinish = { blurConfig.minBlurRadiusPx },
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
index ae155ba..4ed3e6c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
@@ -16,7 +16,6 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.util.MathUtils
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.dagger.SysUISingleton
@@ -118,7 +117,11 @@
if (willRunDismissFromKeyguard) {
blurConfig.minBlurRadiusPx
} else {
- MathUtils.lerp(blurConfig.maxBlurRadiusPx, blurConfig.minBlurRadiusPx, it)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.maxBlurRadiusPx,
+ endBlurRadius = blurConfig.minBlurRadiusPx,
+ transitionProgress = it,
+ )
}
},
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
index 1b1718d..2edc93cb 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
@@ -83,7 +83,11 @@
transitionAnimation.sharedFlow(
duration = FromPrimaryBouncerTransitionInteractor.TO_LOCKSCREEN_DURATION,
onStep = {
- MathUtils.lerp(blurConfig.maxBlurRadiusPx, blurConfig.minBlurRadiusPx, it)
+ transitionProgressToBlurRadius(
+ starBlurRadius = blurConfig.maxBlurRadiusPx,
+ endBlurRadius = blurConfig.minBlurRadiusPx,
+ transitionProgress = it,
+ )
},
),
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt
new file mode 100644
index 0000000..3a54a26
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
+import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.BlurConfig
+import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+
+@SysUISingleton
+class PrimaryBouncerToOccludedTransitionViewModel
+@Inject
+constructor(private val blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFlow) :
+ PrimaryBouncerTransition {
+ private val transitionAnimation =
+ animationFlow
+ .setup(
+ duration = FromPrimaryBouncerTransitionInteractor.TO_OCCLUDED_DURATION,
+ edge = Edge.INVALID,
+ )
+ .setupWithoutSceneContainer(edge = Edge.create(PRIMARY_BOUNCER, OCCLUDED))
+
+ override val windowBlurRadius: Flow<Float> =
+ transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java
index c895732..f9df676 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java
@@ -720,9 +720,24 @@
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + mView);
- mViewCaptureAwareWindowManager.addView(mFrame,
- getBarLayoutParams(mContext.getResources().getConfiguration().windowConfiguration
- .getRotation()));
+ try {
+ mViewCaptureAwareWindowManager.addView(
+ mFrame,
+ getBarLayoutParams(
+ mContext.getResources()
+ .getConfiguration()
+ .windowConfiguration
+ .getRotation()));
+ } catch (WindowManager.InvalidDisplayException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ Log.e(
+ TAG,
+ "Unable to add view to WindowManager. Display with id "
+ + mDisplayId
+ + " does not exist anymore",
+ e);
+ }
mDisplayId = mContext.getDisplayId();
mIsOnDefaultDisplay = mDisplayId == mDisplayTracker.getDefaultDisplayId();
@@ -764,6 +779,15 @@
Trace.beginSection("NavigationBar#removeViewImmediate");
try {
mViewCaptureAwareWindowManager.removeViewImmediate(mView.getRootView());
+ } catch (IllegalArgumentException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ // When that happens, adding the View to WindowManager fails, and therefore removing
+ // it here will fail too, since it wasn't added in the first place.
+ Log.e(
+ TAG,
+ "Failed to removed view from WindowManager. The View wasn't attached.",
+ e);
} finally {
Trace.endSection();
}
@@ -859,7 +883,15 @@
if (mOrientationHandle != null) {
resetSecondaryHandle();
getBarTransitions().removeDarkIntensityListener(mOrientationHandleIntensityListener);
- mViewCaptureAwareWindowManager.removeView(mOrientationHandle);
+ try {
+ mViewCaptureAwareWindowManager.removeView(mOrientationHandle);
+ } catch (IllegalArgumentException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ // When that happens, adding the View to WindowManager fails, and therefore removing
+ // it here will fail too, since it wasn't added in the first place.
+ Log.e(TAG, "Trying to remove a View that is not attached", e);
+ }
mOrientationHandle.getViewTreeObserver().removeOnGlobalLayoutListener(
mOrientationHandleGlobalLayoutListener);
}
@@ -930,7 +962,18 @@
mOrientationParams.setTitle("SecondaryHomeHandle" + mContext.getDisplayId());
mOrientationParams.privateFlags |= PRIVATE_FLAG_NO_MOVE_ANIMATION
| WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT;
- mViewCaptureAwareWindowManager.addView(mOrientationHandle, mOrientationParams);
+ try {
+ mViewCaptureAwareWindowManager.addView(mOrientationHandle, mOrientationParams);
+ } catch (WindowManager.InvalidDisplayException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ Log.e(
+ TAG,
+ "Unable to add view to WindowManager. Display with id "
+ + mDisplayId
+ + " does not exist anymore",
+ e);
+ }
mOrientationHandle.setVisibility(View.GONE);
logNavbarOrientation("initSecondaryHomeHandleForRotation");
diff --git a/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt b/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
index ffeec4e..c302cb2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
@@ -79,6 +79,14 @@
@JvmStatic
inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME)
+ /**
+ * Called to ensure code is only run when the flag is enabled. This will throw an exception if
+ * the flag is not enabled to ensure that the refactor author catches issues in testing.
+ * Caution!! Using this check incorrectly will cause crashes in nextfood builds!
+ */
+ @JvmStatic
+ inline fun assertInNewMode() = RefactorFlagUtils.assertInNewMode(isEnabled, FLAG_NAME)
+
/** Returns a developer-readable string that describes the current requirement list. */
@JvmStatic
fun requirementDescription(): String {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
index 9677d47..3b3fb9b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
@@ -23,6 +23,7 @@
import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor
import com.android.systemui.qs.pipeline.domain.interactor.RestoreReconciliationInteractor
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import javax.inject.Inject
@SysUISingleton
@@ -33,12 +34,14 @@
private val accessibilityTilesInteractor: AccessibilityTilesInteractor,
private val autoAddInteractor: AutoAddInteractor,
private val featureFlags: QSPipelineFlagsRepository,
+ private val settingsPackageRepository: QSSettingsPackageRepository,
private val restoreReconciliationInteractor: RestoreReconciliationInteractor,
) : CoreStartable {
override fun start() {
accessibilityTilesInteractor.init(currentTilesInteractor)
autoAddInteractor.init(currentTilesInteractor)
+ settingsPackageRepository.init()
restoreReconciliationInteractor.start()
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/shared/QSSettingsPackageRepository.kt b/packages/SystemUI/src/com/android/systemui/qs/shared/QSSettingsPackageRepository.kt
new file mode 100644
index 0000000..592e9da
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/shared/QSSettingsPackageRepository.kt
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.shared
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.UserHandle
+import android.provider.Settings
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.user.data.repository.UserRepository
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
+
+/**
+ * Provides the cached package name of the default Settings application.
+ *
+ * This repository retrieves and stores the package name to avoid repeated lookups. The package name
+ * is retrieved in a background thread when the `init()` method is called.
+ */
+@SysUISingleton
+@Suppress("ShadeDisplayAwareContextChecker")
+class QSSettingsPackageRepository
+@Inject
+constructor(
+ private val context: Context,
+ @Background private val backgroundScope: CoroutineScope,
+ private val userRepository: UserRepository,
+) {
+ private var settingsPackageName: String? = null
+
+ /**
+ * Initializes the repository by determining and caching the package name of the Settings app.
+ */
+ fun init() {
+ backgroundScope.launch {
+ val mainUserId = userRepository.mainUserId
+ val mainUserContext =
+ context.createContextAsUser(UserHandle.of(mainUserId), /* flags */ 0)
+ val pm = mainUserContext.packageManager
+ settingsPackageName =
+ pm.queryIntentActivities(
+ Intent(Settings.ACTION_SETTINGS),
+ PackageManager.MATCH_SYSTEM_ONLY or PackageManager.MATCH_DEFAULT_ONLY,
+ )
+ .firstOrNull()
+ ?.activityInfo
+ ?.packageName ?: DEFAULT_SETTINGS_PACKAGE_NAME
+ }
+ }
+
+ /**
+ * Returns the cached package name of the Settings app.
+ *
+ * If the package name has not been initialized yet, this method will return the default
+ * Settings package name.
+ *
+ * @return The package name of the Settings app.
+ */
+ fun getSettingsPackageName(): String {
+ return settingsPackageName ?: DEFAULT_SETTINGS_PACKAGE_NAME
+ }
+
+ companion object {
+ private const val DEFAULT_SETTINGS_PACKAGE_NAME = "com.android.settings"
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorCorrectionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorCorrectionTile.java
index c2e609d..1f93681 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorCorrectionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorCorrectionTile.java
@@ -38,6 +38,7 @@
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.UserSettingObserver;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.qs.shared.QSSettingsPackageRepository;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
@@ -53,6 +54,7 @@
@Nullable
private Icon mIcon = null;
private final UserSettingObserver mSetting;
+ private final QSSettingsPackageRepository mQSSettingsPackageRepository;
@Inject
public ColorCorrectionTile(
@@ -66,11 +68,13 @@
ActivityStarter activityStarter,
QSLogger qsLogger,
UserTracker userTracker,
- SecureSettings secureSettings
+ SecureSettings secureSettings,
+ QSSettingsPackageRepository qsSettingsPackageRepository
) {
super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
statusBarStateController, activityStarter, qsLogger);
+ mQSSettingsPackageRepository = qsSettingsPackageRepository;
mSetting = new UserSettingObserver(secureSettings, mHandler,
Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, userTracker.getUserId()) {
@Override
@@ -106,7 +110,8 @@
@Override
public Intent getLongClickIntent() {
- return new Intent(Settings.ACTION_COLOR_CORRECTION_SETTINGS);
+ return new Intent(Settings.ACTION_COLOR_CORRECTION_SETTINGS)
+ .setPackage(mQSSettingsPackageRepository.getSettingsPackageName());
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index ce80133..38e9a20 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -39,6 +39,7 @@
import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.UserSettingObserver;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.qs.shared.QSSettingsPackageRepository;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
@@ -51,6 +52,7 @@
public static final String TILE_SPEC = "inversion";
private final UserSettingObserver mSetting;
+ private final QSSettingsPackageRepository mQSSettingsPackageRepository;
@Inject
public ColorInversionTile(
@@ -64,11 +66,13 @@
ActivityStarter activityStarter,
QSLogger qsLogger,
UserTracker userTracker,
- SecureSettings secureSettings
+ SecureSettings secureSettings,
+ QSSettingsPackageRepository qsSettingsPackageRepository
) {
super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
statusBarStateController, activityStarter, qsLogger);
+ mQSSettingsPackageRepository = qsSettingsPackageRepository;
mSetting = new UserSettingObserver(secureSettings, mHandler,
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, userTracker.getUserId()) {
@Override
@@ -104,7 +108,8 @@
@Override
public Intent getLongClickIntent() {
- return new Intent(Settings.ACTION_COLOR_INVERSION_SETTINGS);
+ return new Intent(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ .setPackage(mQSSettingsPackageRepository.getSettingsPackageName());
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt
index 43e84a0..4050f2a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt
@@ -34,6 +34,7 @@
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.logging.QSLogger
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.SystemUIDialog
@@ -56,6 +57,7 @@
private val keyguardStateController: KeyguardStateController,
private val dialogTransitionAnimator: DialogTransitionAnimator,
private val fontScalingDialogDelegateProvider: Provider<FontScalingDialogDelegate>,
+ private val settingsPackageRepository: QSSettingsPackageRepository,
) :
QSTileImpl<QSTile.State?>(
host,
@@ -118,6 +120,7 @@
override fun getLongClickIntent(): Intent? {
return Intent(Settings.ACTION_TEXT_READING_SETTINGS)
+ .setPackage(settingsPackageRepository.getSettingsPackageName())
}
override fun getTileLabel(): CharSequence {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
index 7516ca0..b21c3e4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
@@ -54,20 +54,21 @@
private static final String TAG = "InternetAdapter";
- private final InternetDialogController mInternetDialogController;
+ private final InternetDetailsContentController mInternetDetailsContentController;
private final CoroutineScope mCoroutineScope;
@Nullable
private List<WifiEntry> mWifiEntries;
@VisibleForTesting
protected int mWifiEntriesCount;
@VisibleForTesting
- protected int mMaxEntriesCount = InternetDialogController.MAX_WIFI_ENTRY_COUNT;
+ protected int mMaxEntriesCount = InternetDetailsContentController.MAX_WIFI_ENTRY_COUNT;
protected View mHolderView;
protected Context mContext;
- public InternetAdapter(InternetDialogController controller, CoroutineScope coroutineScope) {
- mInternetDialogController = controller;
+ public InternetAdapter(InternetDetailsContentController controller,
+ CoroutineScope coroutineScope) {
+ mInternetDetailsContentController = controller;
mCoroutineScope = coroutineScope;
}
@@ -77,7 +78,8 @@
mContext = viewGroup.getContext();
mHolderView = LayoutInflater.from(mContext).inflate(R.layout.internet_list_item,
viewGroup, false);
- return new InternetViewHolder(mHolderView, mInternetDialogController, mCoroutineScope);
+ return new InternetViewHolder(mHolderView, mInternetDetailsContentController,
+ mCoroutineScope);
}
@Override
@@ -137,16 +139,17 @@
final TextView mWifiSummaryText;
final ImageView mWifiEndIcon;
final Context mContext;
- final InternetDialogController mInternetDialogController;
+ final InternetDetailsContentController mInternetDetailsContentController;
final CoroutineScope mCoroutineScope;
@Nullable
private Job mJob;
- InternetViewHolder(View view, InternetDialogController internetDialogController,
+ InternetViewHolder(View view,
+ InternetDetailsContentController internetDetailsContentController,
CoroutineScope coroutineScope) {
super(view);
mContext = view.getContext();
- mInternetDialogController = internetDialogController;
+ mInternetDetailsContentController = internetDetailsContentController;
mCoroutineScope = coroutineScope;
mContainerLayout = view.requireViewById(R.id.internet_container);
mWifiListLayout = view.requireViewById(R.id.wifi_list);
@@ -169,7 +172,7 @@
mWifiListLayout.setEnabled(shouldEnabled(wifiEntry));
if (connectedState != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
mWifiListLayout.setOnClickListener(
- v -> mInternetDialogController.launchWifiDetailsSetting(
+ v -> mInternetDetailsContentController.launchWifiDetailsSetting(
wifiEntry.getKey(), v));
return;
}
@@ -193,7 +196,7 @@
if (mJob == null) {
mJob = WifiUtils.checkWepAllowed(mContext, mCoroutineScope, wifiEntry.getSsid(),
WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, intent -> {
- mInternetDialogController.startActivityForDialog(intent);
+ mInternetDetailsContentController.startActivityForDialog(intent);
return null;
}, () -> {
wifiConnect(wifiEntry, view);
@@ -211,19 +214,20 @@
true /* connectForCaller */);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
- mInternetDialogController.startActivityForDialog(intent);
+ mInternetDetailsContentController.startActivityForDialog(intent);
return;
}
if (wifiEntry.canConnect()) {
- mInternetDialogController.connect(wifiEntry);
+ mInternetDetailsContentController.connect(wifiEntry);
return;
}
if (wifiEntry.isSaved()) {
Log.w(TAG, "The saved Wi-Fi network does not allow to connect. SSID:"
+ wifiEntry.getSsid());
- mInternetDialogController.launchWifiDetailsSetting(wifiEntry.getKey(), view);
+ mInternetDetailsContentController.launchWifiDetailsSetting(wifiEntry.getKey(),
+ view);
}
}
@@ -239,7 +243,7 @@
@Nullable
Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) {
- Drawable drawable = mInternetDialogController.getWifiDrawable(wifiEntry);
+ Drawable drawable = mInternetDetailsContentController.getWifiDrawable(wifiEntry);
if (drawable == null) {
return null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentController.java
similarity index 98%
rename from packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
rename to packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentController.java
index 7036ef91..23210ef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentController.java
@@ -117,9 +117,9 @@
/**
* Controller for Internet Dialog.
*/
-public class InternetDialogController implements AccessPointController.AccessPointCallback {
+public class InternetDetailsContentController implements AccessPointController.AccessPointCallback {
- private static final String TAG = "InternetDialogController";
+ private static final String TAG = "InternetDetailsContentController";
private static final String ACTION_WIFI_SCANNING_SETTINGS =
"android.settings.WIFI_SCANNING_SETTINGS";
/**
@@ -244,7 +244,8 @@
}
@Inject
- public InternetDialogController(@ShadeDisplayAware Context context, UiEventLogger uiEventLogger,
+ public InternetDetailsContentController(@ShadeDisplayAware Context context,
+ UiEventLogger uiEventLogger,
ActivityStarter starter, AccessPointController accessPointController,
SubscriptionManager subscriptionManager, TelephonyManager telephonyManager,
@Nullable WifiManager wifiManager, ConnectivityManager connectivityManager,
@@ -260,7 +261,7 @@
FeatureFlags featureFlags
) {
if (DEBUG) {
- Log.d(TAG, "Init InternetDialogController");
+ Log.d(TAG, "Init InternetDetailsContentController");
}
mHandler = handler;
mWorkerHandler = workerHandler;
@@ -1108,13 +1109,13 @@
static class WifiEntryConnectCallback implements WifiEntry.ConnectCallback {
final ActivityStarter mActivityStarter;
final WifiEntry mWifiEntry;
- final InternetDialogController mInternetDialogController;
+ final InternetDetailsContentController mInternetDetailsContentController;
WifiEntryConnectCallback(ActivityStarter activityStarter, WifiEntry connectWifiEntry,
- InternetDialogController internetDialogController) {
+ InternetDetailsContentController internetDetailsContentController) {
mActivityStarter = activityStarter;
mWifiEntry = connectWifiEntry;
- mInternetDialogController = internetDialogController;
+ mInternetDetailsContentController = internetDetailsContentController;
}
@Override
@@ -1129,7 +1130,8 @@
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mActivityStarter.startActivity(intent, false /* dismissShade */);
} else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) {
- mInternetDialogController.makeOverlayToast(R.string.wifi_failed_connect_message);
+ mInternetDetailsContentController.makeOverlayToast(
+ R.string.wifi_failed_connect_message);
} else {
if (DEBUG) {
Log.d(TAG, "connect failure reason=" + status);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
similarity index 90%
rename from packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java
rename to packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
index 5e9deec..82367eb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
@@ -17,7 +17,7 @@
import static com.android.settingslib.satellite.SatelliteDialogUtils.TYPE_IS_WIFI;
import static com.android.systemui.Prefs.Key.QS_HAS_TURNED_OFF_MOBILE_DATA;
-import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT;
+import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.MAX_WIFI_ENTRY_COUNT;
import android.app.AlertDialog;
import android.content.Context;
@@ -90,9 +90,9 @@
/**
* Dialog for showing mobile network, connected Wi-Fi network and Wi-Fi networks.
*/
-public class InternetDialogDelegate implements
+public class InternetDialogDelegateLegacy implements
SystemUIDialog.Delegate,
- InternetDialogController.InternetDialogCallback {
+ InternetDetailsContentController.InternetDialogCallback {
private static final String TAG = "InternetDialog";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -120,7 +120,7 @@
@Nullable
private AlertDialog mAlertDialog;
private final UiEventLogger mUiEventLogger;
- private final InternetDialogController mInternetDialogController;
+ private final InternetDetailsContentController mInternetDetailsContentController;
private TextView mInternetDialogTitle;
private TextView mInternetDialogSubTitle;
private View mDivider;
@@ -184,7 +184,7 @@
@AssistedFactory
public interface Factory {
- InternetDialogDelegate create(
+ InternetDialogDelegateLegacy create(
@Assisted(ABOVE_STATUS_BAR) boolean aboveStatusBar,
@Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigMobileData,
@Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi,
@@ -192,10 +192,10 @@
}
@AssistedInject
- public InternetDialogDelegate(
+ public InternetDialogDelegateLegacy(
@ShadeDisplayAware Context context,
InternetDialogManager internetDialogManager,
- InternetDialogController internetDialogController,
+ InternetDetailsContentController internetDetailsContentController,
@Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigMobileData,
@Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi,
@Assisted(ABOVE_STATUS_BAR) boolean aboveStatusBar,
@@ -207,6 +207,8 @@
KeyguardStateController keyguardStateController,
SystemUIDialog.Factory systemUIDialogFactory,
ShadeDialogContextInteractor shadeDialogContextInteractor) {
+ // TODO: b/377388104 QsDetailedView.assertInLegacyMode();
+
mAboveStatusBar = aboveStatusBar;
mSystemUIDialogFactory = systemUIDialogFactory;
mShadeDialogContextInteractor = shadeDialogContextInteractor;
@@ -218,8 +220,8 @@
mHandler = handler;
mBackgroundExecutor = executor;
mInternetDialogManager = internetDialogManager;
- mInternetDialogController = internetDialogController;
- mDefaultDataSubId = mInternetDialogController.getDefaultDataSubscriptionId();
+ mInternetDetailsContentController = internetDetailsContentController;
+ mDefaultDataSubId = mInternetDetailsContentController.getDefaultDataSubscriptionId();
mCanConfigMobileData = canConfigMobileData;
mCanConfigWifi = canConfigWifi;
mCanChangeWifiState = WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
@@ -227,7 +229,7 @@
mCoroutineScope = coroutineScope;
mUiEventLogger = uiEventLogger;
mDialogTransitionAnimator = dialogTransitionAnimator;
- mAdapter = new InternetAdapter(mInternetDialogController, coroutineScope);
+ mAdapter = new InternetAdapter(mInternetDetailsContentController, coroutineScope);
}
@Override
@@ -309,7 +311,8 @@
setOnClickListener(dialog);
mTurnWifiOnLayout.setBackground(null);
mAirplaneModeButton.setVisibility(
- mInternetDialogController.isAirplaneModeEnabled() ? View.VISIBLE : View.GONE);
+ mInternetDetailsContentController.isAirplaneModeEnabled() ? View.VISIBLE
+ : View.GONE);
mWifiRecyclerView.setLayoutManager(new LinearLayoutManager(context));
mWifiRecyclerView.setAdapter(mAdapter);
@@ -324,7 +327,7 @@
mLifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED);
- mInternetDialogController.onStart(this, mCanConfigWifi);
+ mInternetDetailsContentController.onStart(this, mCanConfigWifi);
if (!mCanConfigWifi) {
hideWifiViews();
}
@@ -356,7 +359,7 @@
mDoneButton.setOnClickListener(null);
mShareWifiButton.setOnClickListener(null);
mAirplaneModeButton.setOnClickListener(null);
- mInternetDialogController.onStop();
+ mInternetDetailsContentController.onStop();
mInternetDialogManager.destroyDialog();
}
@@ -413,18 +416,20 @@
internetContent.mInternetDialogSubTitle = getSubtitleText();
if (shouldUpdateMobileNetwork) {
internetContent.mActiveNetworkIsCellular =
- mInternetDialogController.activeNetworkIsCellular();
+ mInternetDetailsContentController.activeNetworkIsCellular();
internetContent.mIsCarrierNetworkActive =
- mInternetDialogController.isCarrierNetworkActive();
+ mInternetDetailsContentController.isCarrierNetworkActive();
}
- internetContent.mIsAirplaneModeEnabled = mInternetDialogController.isAirplaneModeEnabled();
- internetContent.mHasEthernet = mInternetDialogController.hasEthernet();
- internetContent.mIsWifiEnabled = mInternetDialogController.isWifiEnabled();
- internetContent.mHasActiveSubIdOnDds = mInternetDialogController.hasActiveSubIdOnDds();
- internetContent.mIsDeviceLocked = mInternetDialogController.isDeviceLocked();
- internetContent.mIsWifiScanEnabled = mInternetDialogController.isWifiScanEnabled();
+ internetContent.mIsAirplaneModeEnabled =
+ mInternetDetailsContentController.isAirplaneModeEnabled();
+ internetContent.mHasEthernet = mInternetDetailsContentController.hasEthernet();
+ internetContent.mIsWifiEnabled = mInternetDetailsContentController.isWifiEnabled();
+ internetContent.mHasActiveSubIdOnDds =
+ mInternetDetailsContentController.hasActiveSubIdOnDds();
+ internetContent.mIsDeviceLocked = mInternetDetailsContentController.isDeviceLocked();
+ internetContent.mIsWifiScanEnabled = mInternetDetailsContentController.isWifiScanEnabled();
internetContent.mActiveAutoSwitchNonDdsSubId =
- mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
return internetContent;
}
@@ -432,8 +437,8 @@
InternetContent internetContent = new InternetContent();
internetContent.mInternetDialogTitleString = getDialogTitleText();
internetContent.mInternetDialogSubTitle = getSubtitleText();
- internetContent.mIsWifiEnabled = mInternetDialogController.isWifiEnabled();
- internetContent.mIsDeviceLocked = mInternetDialogController.isDeviceLocked();
+ internetContent.mIsWifiEnabled = mInternetDetailsContentController.isWifiEnabled();
+ internetContent.mIsDeviceLocked = mInternetDetailsContentController.isDeviceLocked();
return internetContent;
}
@@ -447,15 +452,15 @@
if (autoSwitchNonDdsSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
showTurnOffAutoDataSwitchDialog(dialog, autoSwitchNonDdsSubId);
}
- mInternetDialogController.connectCarrierNetwork();
+ mInternetDetailsContentController.connectCarrierNetwork();
});
mMobileDataToggle.setOnClickListener(v -> {
boolean isChecked = mMobileDataToggle.isChecked();
if (!isChecked && shouldShowMobileDialog()) {
mMobileDataToggle.setChecked(true);
showTurnOffMobileDialog(dialog);
- } else if (mInternetDialogController.isMobileDataEnabled() != isChecked) {
- mInternetDialogController.setMobileDataEnabled(
+ } else if (mInternetDetailsContentController.isMobileDataEnabled() != isChecked) {
+ mInternetDetailsContentController.setMobileDataEnabled(
dialog.getContext(), mDefaultDataSubId, isChecked, false);
}
});
@@ -466,12 +471,13 @@
});
mDoneButton.setOnClickListener(v -> dialog.dismiss());
mShareWifiButton.setOnClickListener(v -> {
- if (mInternetDialogController.mayLaunchShareWifiSettings(mConnectedWifiEntry, v)) {
+ if (mInternetDetailsContentController.mayLaunchShareWifiSettings(mConnectedWifiEntry,
+ v)) {
mUiEventLogger.log(InternetDialogEvent.SHARE_WIFI_QS_BUTTON_CLICKED);
}
});
mAirplaneModeButton.setOnClickListener(v -> {
- mInternetDialogController.setAirplaneModeDisabled();
+ mInternetDetailsContentController.setAirplaneModeDisabled();
});
}
@@ -495,10 +501,10 @@
}
private void setWifiEnable(boolean isChecked) {
- if (mInternetDialogController.isWifiEnabled() == isChecked) {
+ if (mInternetDetailsContentController.isWifiEnabled() == isChecked) {
return;
}
- mInternetDialogController.setWifiEnabled(isChecked);
+ mInternetDetailsContentController.setWifiEnabled(isChecked);
}
@MainThread
@@ -534,7 +540,7 @@
}
} else {
mMobileNetworkLayout.setVisibility(View.VISIBLE);
- mMobileDataToggle.setChecked(mInternetDialogController.isMobileDataEnabled());
+ mMobileDataToggle.setChecked(mInternetDetailsContentController.isMobileDataEnabled());
mMobileTitleText.setText(getMobileNetworkTitle(mDefaultDataSubId));
String summary = getMobileNetworkSummary(mDefaultDataSubId);
if (!TextUtils.isEmpty(summary)) {
@@ -679,10 +685,10 @@
mConnectedWifiTitleText.setText(mConnectedWifiEntry.getTitle());
mConnectedWifiSummaryText.setText(mConnectedWifiEntry.getSummary(false));
mConnectedWifiIcon.setImageDrawable(
- mInternetDialogController.getInternetWifiDrawable(mConnectedWifiEntry));
+ mInternetDetailsContentController.getInternetWifiDrawable(mConnectedWifiEntry));
mWifiSettingsIcon.setColorFilter(
mDialog.getContext().getColor(R.color.connected_network_primary_color));
- if (mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(
+ if (mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(
mConnectedWifiEntry) != null) {
mShareWifiButton.setVisibility(View.VISIBLE);
} else {
@@ -748,7 +754,7 @@
if (TextUtils.isEmpty(mWifiScanNotifyText.getText())) {
final AnnotationLinkSpan.LinkInfo linkInfo = new AnnotationLinkSpan.LinkInfo(
AnnotationLinkSpan.LinkInfo.DEFAULT_ANNOTATION,
- mInternetDialogController::launchWifiScanningSetting);
+ mInternetDetailsContentController::launchWifiScanningSetting);
mWifiScanNotifyText.setText(AnnotationLinkSpan.linkify(
mDialog.getContext().getText(R.string.wifi_scan_notify_message), linkInfo));
mWifiScanNotifyText.setMovementMethod(LinkMovementMethod.getInstance());
@@ -760,37 +766,38 @@
if (mConnectedWifiEntry == null) {
return;
}
- mInternetDialogController.launchWifiDetailsSetting(mConnectedWifiEntry.getKey(), view);
+ mInternetDetailsContentController.launchWifiDetailsSetting(mConnectedWifiEntry.getKey(),
+ view);
}
/** For DSDS auto data switch **/
void onClickConnectedSecondarySub(View view) {
- mInternetDialogController.launchMobileNetworkSettings(view);
+ mInternetDetailsContentController.launchMobileNetworkSettings(view);
}
void onClickSeeMoreButton(View view) {
- mInternetDialogController.launchNetworkSetting(view);
+ mInternetDetailsContentController.launchNetworkSetting(view);
}
CharSequence getDialogTitleText() {
- return mInternetDialogController.getDialogTitleText();
+ return mInternetDetailsContentController.getDialogTitleText();
}
@Nullable
CharSequence getSubtitleText() {
- return mInternetDialogController.getSubtitleText(mIsProgressBarVisible);
+ return mInternetDetailsContentController.getSubtitleText(mIsProgressBarVisible);
}
private Drawable getSignalStrengthDrawable(int subId) {
- return mInternetDialogController.getSignalStrengthDrawable(subId);
+ return mInternetDetailsContentController.getSignalStrengthDrawable(subId);
}
CharSequence getMobileNetworkTitle(int subId) {
- return mInternetDialogController.getMobileNetworkTitle(subId);
+ return mInternetDetailsContentController.getMobileNetworkTitle(subId);
}
String getMobileNetworkSummary(int subId) {
- return mInternetDialogController.getMobileNetworkSummary(subId);
+ return mInternetDetailsContentController.getMobileNetworkSummary(subId);
}
private void setProgressBarVisible(boolean visible) {
@@ -810,7 +817,7 @@
}
boolean flag = Prefs.getBoolean(mDialog.getContext(), QS_HAS_TURNED_OFF_MOBILE_DATA,
false);
- if (mInternetDialogController.isMobileDataEnabled() && !flag) {
+ if (mInternetDetailsContentController.isMobileDataEnabled() && !flag) {
return true;
}
return false;
@@ -819,7 +826,8 @@
private void showTurnOffMobileDialog(SystemUIDialog dialog) {
Context context = dialog.getContext();
CharSequence carrierName = getMobileNetworkTitle(mDefaultDataSubId);
- boolean isInService = mInternetDialogController.isVoiceStateInService(mDefaultDataSubId);
+ boolean isInService = mInternetDetailsContentController.isVoiceStateInService(
+ mDefaultDataSubId);
if (TextUtils.isEmpty(carrierName) || !isInService) {
carrierName = context.getString(R.string.mobile_data_disable_message_default_carrier);
}
@@ -831,7 +839,7 @@
.setPositiveButton(
com.android.internal.R.string.alert_windows_notification_turn_off_action,
(d, w) -> {
- mInternetDialogController.setMobileDataEnabled(context,
+ mInternetDetailsContentController.setMobileDataEnabled(context,
mDefaultDataSubId, false, false);
mMobileDataToggle.setChecked(false);
Prefs.putBoolean(context, QS_HAS_TURNED_OFF_MOBILE_DATA, true);
@@ -858,7 +866,7 @@
})
.setPositiveButton(R.string.auto_data_switch_dialog_positive_button,
(d, w) -> {
- mInternetDialogController
+ mInternetDetailsContentController
.setAutoDataSwitchMobileDataPolicy(subId, false);
if (mSecondaryMobileNetworkLayout != null) {
mSecondaryMobileNetworkLayout.setVisibility(View.GONE);
@@ -938,7 +946,7 @@
@Nullable WifiEntry connectedEntry, boolean hasMoreWifiEntries) {
// Should update the carrier network layout when it is connected under airplane mode ON.
boolean shouldUpdateCarrierNetwork = mMobileNetworkLayout.getVisibility() == View.VISIBLE
- && mInternetDialogController.isAirplaneModeEnabled();
+ && mInternetDetailsContentController.isAirplaneModeEnabled();
mHandler.post(() -> {
mConnectedWifiEntry = connectedEntry;
mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
index f674971..8a54648 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
@@ -32,13 +32,13 @@
private const val TAG = "InternetDialogFactory"
private val DEBUG = Log.isLoggable(TAG, Log.DEBUG)
-/** Factory to create [InternetDialogDelegate] objects. */
+/** Factory to create [InternetDialogDelegateLegacy] objects. */
@SysUISingleton
class InternetDialogManager
@Inject
constructor(
private val dialogTransitionAnimator: DialogTransitionAnimator,
- private val dialogFactory: InternetDialogDelegate.Factory,
+ private val dialogFactory: InternetDialogDelegateLegacy.Factory,
@Background private val bgDispatcher: CoroutineDispatcher,
) {
private lateinit var coroutineScope: CoroutineScope
@@ -48,8 +48,8 @@
}
/**
- * Creates a [InternetDialogDelegate]. The dialog will be animated from [expandable] if it is
- * not null.
+ * Creates a [InternetDialogDelegateLegacy]. The dialog will be animated from [expandable] if
+ * it is not null.
*/
fun create(
aboveStatusBar: Boolean,
@@ -64,6 +64,7 @@
return
} else {
coroutineScope = CoroutineScope(bgDispatcher + newTracingContext("InternetDialogScope"))
+ // TODO: b/377388104 check the QsDetailedView flag to use the correct dialogFactory
dialog =
dialogFactory
.create(aboveStatusBar, canConfigMobileData, canConfigWifi, coroutineScope)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionUserActionInteractor.kt
index dfdec3b..b774643 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionUserActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionUserActionInteractor.kt
@@ -19,6 +19,7 @@
import android.content.Intent
import android.provider.Settings
import com.android.systemui.accessibility.data.repository.ColorCorrectionRepository
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
@@ -32,21 +33,20 @@
constructor(
private val colorCorrectionRepository: ColorCorrectionRepository,
private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler,
+ private val settingsPackageRepository: QSSettingsPackageRepository,
) : QSTileUserActionInteractor<ColorCorrectionTileModel> {
override suspend fun handleInput(input: QSTileInput<ColorCorrectionTileModel>): Unit =
with(input) {
when (action) {
is QSTileUserAction.Click -> {
- colorCorrectionRepository.setIsEnabled(
- !data.isEnabled,
- user,
- )
+ colorCorrectionRepository.setIsEnabled(!data.isEnabled, user)
}
is QSTileUserAction.LongClick -> {
qsTileIntentUserActionHandler.handle(
action.expandable,
Intent(Settings.ACTION_COLOR_CORRECTION_SETTINGS)
+ .setPackage(settingsPackageRepository.getSettingsPackageName()),
)
}
is QSTileUserAction.ToggleClick -> {}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileUserActionInteractor.kt
index 6ab5796..0ebb51e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileUserActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileUserActionInteractor.kt
@@ -24,6 +24,7 @@
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
@@ -46,6 +47,7 @@
private val keyguardStateController: KeyguardStateController,
private val dialogTransitionAnimator: DialogTransitionAnimator,
private val activityStarter: ActivityStarter,
+ private val settingsPackageRepository: QSSettingsPackageRepository,
) : QSTileUserActionInteractor<FontScalingTileModel> {
override suspend fun handleInput(input: QSTileInput<FontScalingTileModel>): Unit =
@@ -63,7 +65,7 @@
?.dialogTransitionController(
DialogCuj(
InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
- INTERACTION_JANK_TAG
+ INTERACTION_JANK_TAG,
)
)
?.let { dialogTransitionAnimator.show(dialog, it) } ?: dialog.show()
@@ -78,7 +80,7 @@
/* cancelAction= */ null,
/* dismissShade= */ true,
/* afterKeyguardGone= */ true,
- /* deferred= */ false
+ /* deferred= */ false,
)
}
}
@@ -86,6 +88,7 @@
qsTileIntentUserActionHandler.handle(
action.expandable,
Intent(Settings.ACTION_TEXT_READING_SETTINGS)
+ .setPackage(settingsPackageRepository.getSettingsPackageName()),
)
}
is QSTileUserAction.ToggleClick -> {}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt
index aa83877..f783497 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt
@@ -19,6 +19,7 @@
import android.content.Intent
import android.provider.Settings
import com.android.systemui.accessibility.data.repository.ColorInversionRepository
+import com.android.systemui.qs.shared.QSSettingsPackageRepository
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
@@ -32,21 +33,20 @@
constructor(
private val colorInversionRepository: ColorInversionRepository,
private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler,
+ private val settingsPackageRepository: QSSettingsPackageRepository,
) : QSTileUserActionInteractor<ColorInversionTileModel> {
override suspend fun handleInput(input: QSTileInput<ColorInversionTileModel>): Unit =
with(input) {
when (action) {
is QSTileUserAction.Click -> {
- colorInversionRepository.setIsEnabled(
- !data.isEnabled,
- user,
- )
+ colorInversionRepository.setIsEnabled(!data.isEnabled, user)
}
is QSTileUserAction.LongClick -> {
qsTileIntentUserActionHandler.handle(
action.expandable,
Intent(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ .setPackage(settingsPackageRepository.getSettingsPackageName()),
)
}
is QSTileUserAction.ToggleClick -> {}
diff --git a/packages/SystemUI/src/com/android/systemui/scrim/ScrimDrawable.java b/packages/SystemUI/src/com/android/systemui/scrim/ScrimDrawable.java
index 10ac2cf..0650f86 100644
--- a/packages/SystemUI/src/com/android/systemui/scrim/ScrimDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/scrim/ScrimDrawable.java
@@ -16,8 +16,6 @@
package com.android.systemui.scrim;
-import static com.android.systemui.Flags.notificationShadeBlur;
-
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
@@ -216,7 +214,7 @@
public void draw(@NonNull Canvas canvas) {
mPaint.setColor(mMainColor);
mPaint.setAlpha(mAlpha);
- if (notificationShadeBlur() || WindowBlurFlag.isEnabled()) {
+ if (WindowBlurFlag.isEnabled()) {
// TODO (b/381263600), wire this at ScrimController, move it to PrimaryBouncerTransition
mPaint.setAlpha((int) (0.5f * mAlpha));
}
diff --git a/packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java b/packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java
index 0f80e74..03a8d17 100644
--- a/packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java
+++ b/packages/SystemUI/src/com/android/systemui/scrim/ScrimView.java
@@ -16,8 +16,6 @@
package com.android.systemui.scrim;
-import static com.android.systemui.Flags.notificationShadeBlur;
-
import static java.lang.Float.isNaN;
import android.annotation.NonNull;
@@ -44,6 +42,7 @@
import com.android.systemui.res.R;
import com.android.systemui.shade.TouchLogger;
import com.android.systemui.util.LargeScreenUtils;
+import com.android.systemui.window.flag.WindowBlurFlag;
import java.util.concurrent.Executor;
@@ -253,7 +252,7 @@
if (mBlendWithMainColor) {
mainTinted = ColorUtils.blendARGB(mColors.getMainColor(), mTintColor, tintAmount);
}
- if (notificationShadeBlur()) {
+ if (WindowBlurFlag.isEnabled()) {
int layerAbove = ColorUtils.setAlphaComponent(
getResources().getColor(R.color.shade_panel, null),
(int) (0.4f * 255));
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDialogContextInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDialogContextInteractor.kt
index 201dc03..4edba27 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDialogContextInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDialogContextInteractor.kt
@@ -77,7 +77,17 @@
private fun getContextOrDefault(displayId: Int): Context {
return try {
traceSection({ "Getting dialog context for displayId=$displayId" }) {
- displayWindowPropertyRepository.get().get(displayId, DIALOG_WINDOW_TYPE).context
+ val displayWindowProperties =
+ displayWindowPropertyRepository.get().get(displayId, DIALOG_WINDOW_TYPE)
+ if (displayWindowProperties == null) {
+ Log.e(
+ TAG,
+ "DisplayWindowPropertiesRepository returned null for display $displayId. Returning default one",
+ )
+ defaultContext
+ } else {
+ displayWindowProperties.context
+ }
}
} catch (e: Exception) {
// This can happen if the display was disconnected in the meantime.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerText.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerText.kt
new file mode 100644
index 0000000..a747abb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChronometerText.kt
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.chips.ui.compose
+
+import android.os.SystemClock
+import android.text.format.DateUtils.formatElapsedTime
+import androidx.compose.material3.LocalTextStyle
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.derivedStateOf
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableLongStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.Measurable
+import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
+import androidx.compose.ui.node.LayoutModifierNode
+import androidx.compose.ui.node.ModifierNodeElement
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.constrain
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.compose.LocalLifecycleOwner
+import androidx.lifecycle.repeatOnLifecycle
+import kotlinx.coroutines.delay
+
+/** Platform-optimized interface for getting current time */
+fun interface TimeSource {
+ fun getCurrentTime(): Long
+}
+
+/** Holds and manages the state for a Chronometer */
+class ChronometerState(private val timeSource: TimeSource, private val startTimeMillis: Long) {
+ private var currentTimeMillis by mutableLongStateOf(0L)
+ private val elapsedTimeMillis: Long
+ get() = maxOf(0L, currentTimeMillis - startTimeMillis)
+
+ val currentTimeText: String by derivedStateOf { formatElapsedTime(elapsedTimeMillis / 1000) }
+
+ suspend fun run() {
+ while (true) {
+ currentTimeMillis = timeSource.getCurrentTime()
+ val delaySkewMillis = (currentTimeMillis - startTimeMillis) % 1000L
+ delay(1000L - delaySkewMillis)
+ }
+ }
+}
+
+/** Remember and manage the ChronometerState */
+@Composable
+fun rememberChronometerState(timeSource: TimeSource, startTimeMillis: Long): ChronometerState {
+ val state =
+ remember(timeSource, startTimeMillis) { ChronometerState(timeSource, startTimeMillis) }
+ val lifecycleOwner = LocalLifecycleOwner.current
+ LaunchedEffect(lifecycleOwner, timeSource, startTimeMillis) {
+ lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { state.run() }
+ }
+
+ return state
+}
+
+/**
+ * A composable chronometer that displays elapsed time with constrained width. The width of the text
+ * is only allowed to increase. This ensures there is no visual jitter when individual digits in the
+ * text change due to the timer ticking.
+ */
+@Composable
+fun ChronometerText(
+ startTimeMillis: Long,
+ modifier: Modifier = Modifier,
+ color: Color = Color.Unspecified,
+ style: TextStyle = LocalTextStyle.current,
+ timeSource: TimeSource = remember { TimeSource { SystemClock.elapsedRealtime() } },
+) {
+ val state = rememberChronometerState(timeSource, startTimeMillis)
+ Text(
+ text = state.currentTimeText,
+ style = style,
+ color = color,
+ modifier = modifier.neverDecreaseWidth(),
+ )
+}
+
+/** A modifier that ensures the width of the content only increases and never decreases. */
+private fun Modifier.neverDecreaseWidth(): Modifier {
+ return this.then(neverDecreaseWidthElement)
+}
+
+private data object neverDecreaseWidthElement : ModifierNodeElement<NeverDecreaseWidthNode>() {
+ override fun create(): NeverDecreaseWidthNode {
+ return NeverDecreaseWidthNode()
+ }
+
+ override fun update(node: NeverDecreaseWidthNode) {
+ error("This should never be called")
+ }
+}
+
+private class NeverDecreaseWidthNode : Modifier.Node(), LayoutModifierNode {
+ private var minWidth = 0
+
+ override fun MeasureScope.measure(
+ measurable: Measurable,
+ constraints: Constraints,
+ ): MeasureResult {
+ val placeable = measurable.measure(Constraints(minWidth = minWidth).constrain(constraints))
+ val width = placeable.width
+ val height = placeable.height
+
+ minWidth = maxOf(minWidth, width)
+
+ return layout(width, height) { placeable.place(0, 0) }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/CommandQueueInitializer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/CommandQueueInitializer.kt
index d24edda..d25ca28 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/core/CommandQueueInitializer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/CommandQueueInitializer.kt
@@ -72,7 +72,7 @@
private fun initializeStatusBarForDisplay(displayId: Int, result: RegisterStatusBarResult) {
if ((result.mTransientBarTypes and WindowInsets.Type.statusBars()) != 0) {
- statusBarModeRepository.forDisplay(displayId).showTransient()
+ statusBarModeRepository.forDisplay(displayId)?.showTransient()
}
val commandQueueCallbacks = commandQueueCallbacksLazy.get()
commandQueueCallbacks.onSystemBarAttributesChanged(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
index 9e9a38e..b057fb0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
@@ -89,21 +89,26 @@
}
private fun createAndStartOrchestratorForDisplay(displayId: Int) {
+ val statusBarModeRepository = statusBarModeRepositoryStore.forDisplay(displayId) ?: return
+ val statusBarInitializer = initializerStore.forDisplay(displayId) ?: return
+ val statusBarWindowController =
+ statusBarWindowControllerStore.forDisplay(displayId) ?: return
+ val autoHideController = autoHideControllerStore.forDisplay(displayId) ?: return
statusBarOrchestratorFactory
.create(
displayId,
displayScopeRepository.scopeForDisplay(displayId),
statusBarWindowStateRepositoryStore.forDisplay(displayId),
- statusBarModeRepositoryStore.forDisplay(displayId),
- initializerStore.forDisplay(displayId),
- statusBarWindowControllerStore.forDisplay(displayId),
- autoHideControllerStore.forDisplay(displayId),
+ statusBarModeRepository,
+ statusBarInitializer,
+ statusBarWindowController,
+ autoHideController,
)
.start()
}
private fun createAndStartInitializerForDisplay(displayId: Int) {
- statusBarInitializerStore.forDisplay(displayId).start()
+ statusBarInitializerStore.forDisplay(displayId)?.start()
}
private fun startPrivacyDotForDisplay(displayId: Int) {
@@ -111,6 +116,6 @@
// For the default display, privacy dot is started via ScreenDecorations
return
}
- privacyDotWindowControllerStore.forDisplay(displayId).start()
+ privacyDotWindowControllerStore.forDisplay(displayId)?.start()
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt
index 4c54fc4..1e127ee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt
@@ -20,9 +20,11 @@
import androidx.annotation.VisibleForTesting
import com.android.systemui.CoreStartable
import com.android.systemui.fragments.FragmentHostManager
+import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.res.R
import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewInitializedListener
import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewUpdatedListener
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController
import com.android.systemui.statusbar.data.repository.StatusBarModePerDisplayRepository
import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions
import com.android.systemui.statusbar.phone.PhoneStatusBarView
@@ -34,7 +36,6 @@
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
-import java.lang.IllegalStateException
import javax.inject.Provider
/**
@@ -75,6 +76,8 @@
fun create(
statusBarWindowController: StatusBarWindowController,
statusBarModePerDisplayRepository: StatusBarModePerDisplayRepository,
+ statusBarConfigurationController: StatusBarConfigurationController,
+ darkIconDispatcher: DarkIconDispatcher,
): StatusBarInitializer
}
}
@@ -84,6 +87,8 @@
constructor(
@Assisted private val statusBarWindowController: StatusBarWindowController,
@Assisted private val statusBarModePerDisplayRepository: StatusBarModePerDisplayRepository,
+ @Assisted private val statusBarConfigurationController: StatusBarConfigurationController,
+ @Assisted private val darkIconDispatcher: DarkIconDispatcher,
private val collapsedStatusBarFragmentProvider: Provider<CollapsedStatusBarFragment>,
private val statusBarRootFactory: StatusBarRootFactory,
private val componentFactory: HomeStatusBarComponent.Factory,
@@ -131,23 +136,32 @@
->
val phoneStatusBarView = cv.findViewById<PhoneStatusBarView>(R.id.status_bar)
component =
- componentFactory.create(phoneStatusBarView).also { component ->
- // CollapsedStatusBarFragment used to be responsible initializing
- component.init()
-
- statusBarViewUpdatedListener?.onStatusBarViewUpdated(
- component.phoneStatusBarViewController,
- component.phoneStatusBarTransitions,
+ componentFactory
+ .create(
+ phoneStatusBarView,
+ statusBarConfigurationController,
+ statusBarWindowController,
+ darkIconDispatcher,
)
+ .also { component ->
+ // CollapsedStatusBarFragment used to be responsible initializing
+ component.init()
- if (StatusBarConnectedDisplays.isEnabled) {
- statusBarModePerDisplayRepository.onStatusBarViewInitialized(component)
- } else {
- creationListeners.forEach { listener ->
- listener.onStatusBarViewInitialized(component)
+ statusBarViewUpdatedListener?.onStatusBarViewUpdated(
+ component.phoneStatusBarViewController,
+ component.phoneStatusBarTransitions,
+ )
+
+ if (StatusBarConnectedDisplays.isEnabled) {
+ statusBarModePerDisplayRepository.onStatusBarViewInitialized(
+ component
+ )
+ } else {
+ creationListeners.forEach { listener ->
+ listener.onStatusBarViewInitialized(component)
+ }
}
}
- }
}
// Add the new compose view to the hierarchy because we don't use fragment transactions
@@ -163,9 +177,11 @@
CollapsedStatusBarFragment.TAG,
object : FragmentHostManager.FragmentListener {
override fun onFragmentViewCreated(tag: String, fragment: Fragment) {
- component =
- (fragment as CollapsedStatusBarFragment).homeStatusBarComponent
- ?: throw IllegalStateException()
+ val statusBarFragment = fragment as CollapsedStatusBarFragment
+ if (statusBarFragment.homeStatusBarComponent == null) {
+ return
+ }
+ component = fragment.homeStatusBarComponent
statusBarViewUpdatedListener?.onStatusBarViewUpdated(
component!!.phoneStatusBarViewController,
component!!.phoneStatusBarTransitions,
@@ -195,6 +211,8 @@
override fun create(
statusBarWindowController: StatusBarWindowController,
statusBarModePerDisplayRepository: StatusBarModePerDisplayRepository,
+ statusBarConfigurationController: StatusBarConfigurationController,
+ darkIconDispatcher: DarkIconDispatcher,
): StatusBarInitializerImpl
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializerStore.kt
index 4f815c1..de6cd07 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializerStore.kt
@@ -22,6 +22,8 @@
import com.android.systemui.display.data.repository.PerDisplayStore
import com.android.systemui.display.data.repository.PerDisplayStoreImpl
import com.android.systemui.display.data.repository.SingleDisplayStore
+import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore
import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
import javax.inject.Inject
@@ -39,6 +41,8 @@
private val factory: StatusBarInitializer.Factory,
private val statusBarWindowControllerStore: StatusBarWindowControllerStore,
private val statusBarModeRepositoryStore: StatusBarModeRepositoryStore,
+ private val statusBarConfigurationControllerStore: StatusBarConfigurationControllerStore,
+ private val darkIconDispatcherStore: DarkIconDispatcherStore,
) :
StatusBarInitializerStore,
PerDisplayStoreImpl<StatusBarInitializer>(backgroundApplicationScope, displayRepository) {
@@ -47,10 +51,19 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): StatusBarInitializer {
+ override fun createInstanceForDisplay(displayId: Int): StatusBarInitializer? {
+ val statusBarWindowController =
+ statusBarWindowControllerStore.forDisplay(displayId) ?: return null
+ val statusBarModePerDisplayRepository =
+ statusBarModeRepositoryStore.forDisplay(displayId) ?: return null
+ val statusBarConfigurationController =
+ statusBarConfigurationControllerStore.forDisplay(displayId) ?: return null
+ val darkIconDispatcher = darkIconDispatcherStore.forDisplay(displayId) ?: return null
return factory.create(
- statusBarWindowController = statusBarWindowControllerStore.forDisplay(displayId),
- statusBarModePerDisplayRepository = statusBarModeRepositoryStore.forDisplay(displayId),
+ statusBarWindowController,
+ statusBarModePerDisplayRepository,
+ statusBarConfigurationController,
+ darkIconDispatcher,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/DarkIconDispatcherStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/DarkIconDispatcherStore.kt
index 8183a48..041f3c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/DarkIconDispatcherStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/DarkIconDispatcherStore.kt
@@ -65,8 +65,9 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): SysuiDarkIconDispatcher {
- val properties = displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR)
+ override fun createInstanceForDisplay(displayId: Int): SysuiDarkIconDispatcher? {
+ val properties =
+ displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR) ?: return null
return factory.create(displayId, properties.context)
}
@@ -103,7 +104,7 @@
override val defaultDisplay: DarkIconDispatcher
get() = store.defaultDisplay
- override fun forDisplay(displayId: Int): DarkIconDispatcher = store.forDisplay(displayId)
+ override fun forDisplay(displayId: Int): DarkIconDispatcher? = store.forDisplay(displayId)
}
@Module
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/LightBarControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/LightBarControllerStore.kt
index e498755..c629d10 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/LightBarControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/LightBarControllerStore.kt
@@ -49,13 +49,16 @@
LightBarControllerStore,
PerDisplayStoreImpl<LightBarController>(backgroundApplicationScope, displayRepository) {
- override fun createInstanceForDisplay(displayId: Int): LightBarController {
+ override fun createInstanceForDisplay(displayId: Int): LightBarController? {
+ val darkIconDispatcher = darkIconDispatcherStore.forDisplay(displayId) ?: return null
+ val statusBarModePerDisplayRepository =
+ statusBarModeRepositoryStore.forDisplay(displayId) ?: return null
return factory
.create(
displayId,
displayScopeRepository.scopeForDisplay(displayId),
- darkIconDispatcherStore.forDisplay(displayId),
- statusBarModeRepositoryStore.forDisplay(displayId),
+ darkIconDispatcher,
+ statusBarModePerDisplayRepository,
)
.also { it.start() }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotViewControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotViewControllerStore.kt
index bd61c44..d48c94b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotViewControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotViewControllerStore.kt
@@ -52,11 +52,14 @@
PrivacyDotViewControllerStore,
PerDisplayStoreImpl<PrivacyDotViewController>(backgroundApplicationScope, displayRepository) {
- override fun createInstanceForDisplay(displayId: Int): PrivacyDotViewController {
+ override fun createInstanceForDisplay(displayId: Int): PrivacyDotViewController? {
+ val configurationController =
+ statusBarConfigurationControllerStore.forDisplay(displayId) ?: return null
+ val contentInsetsProvider = contentInsetsProviderStore.forDisplay(displayId) ?: return null
return factory.create(
displayScopeRepository.scopeForDisplay(displayId),
- statusBarConfigurationControllerStore.forDisplay(displayId),
- contentInsetsProviderStore.forDisplay(displayId),
+ configurationController,
+ contentInsetsProvider,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt
index a1f5655..086cc99 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt
@@ -58,15 +58,18 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): PrivacyDotWindowController {
+ override fun createInstanceForDisplay(displayId: Int): PrivacyDotWindowController? {
if (displayId == Display.DEFAULT_DISPLAY) {
throw IllegalArgumentException("This class should only be used for connected displays")
}
val displayWindowProperties =
displayWindowPropertiesRepository.get(displayId, TYPE_NAVIGATION_BAR_PANEL)
+ ?: return null
+ val privacyDotViewController =
+ privacyDotViewControllerStore.forDisplay(displayId) ?: return null
return windowControllerFactory.create(
displayId = displayId,
- privacyDotViewController = privacyDotViewControllerStore.forDisplay(displayId),
+ privacyDotViewController = privacyDotViewController,
viewCaptureAwareWindowManager =
viewCaptureAwareWindowManagerFactory.create(displayWindowProperties.windowManager),
inflater = displayWindowProperties.layoutInflater,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarConfigurationControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarConfigurationControllerStore.kt
index 6cf2c73..38cea83 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarConfigurationControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarConfigurationControllerStore.kt
@@ -62,9 +62,9 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): StatusBarConfigurationController {
+ override fun createInstanceForDisplay(displayId: Int): StatusBarConfigurationController? {
val displayWindowProperties =
- displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR)
+ displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR) ?: return null
return configurationControllerFactory.create(displayWindowProperties.context)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarContentInsetsProviderStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarContentInsetsProviderStore.kt
index e471b12..554c46f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarContentInsetsProviderStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/StatusBarContentInsetsProviderStore.kt
@@ -59,13 +59,17 @@
displayRepository,
) {
- override fun createInstanceForDisplay(displayId: Int): StatusBarContentInsetsProvider {
- val context = displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR).context
+ override fun createInstanceForDisplay(displayId: Int): StatusBarContentInsetsProvider? {
+ val displayWindowProperties =
+ displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR) ?: return null
+ val context = displayWindowProperties.context
+ val configurationController =
+ statusBarConfigurationControllerStore.forDisplay(displayId) ?: return null
val cameraProtectionLoader = cameraProtectionLoaderFactory.create(context)
return factory
.create(
context,
- statusBarConfigurationControllerStore.forDisplay(displayId),
+ configurationController,
sysUICutoutProviderFactory.create(context, cameraProtectionLoader),
)
.also { it.start() }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStore.kt
index 7760f58..ffc1255 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/SystemEventChipAnimationControllerStore.kt
@@ -62,11 +62,17 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): SystemEventChipAnimationController {
+ override fun createInstanceForDisplay(displayId: Int): SystemEventChipAnimationController? {
+ val displayWindowProperties =
+ displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR) ?: return null
+ val statusBarWindowController =
+ statusBarWindowControllerStore.forDisplay(displayId) ?: return null
+ val contentInsetsProvider =
+ statusBarContentInsetsProviderStore.forDisplay(displayId) ?: return null
return factory.create(
- displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR).context,
- statusBarWindowControllerStore.forDisplay(displayId),
- statusBarContentInsetsProviderStore.forDisplay(displayId),
+ displayWindowProperties.context,
+ statusBarWindowController,
+ contentInsetsProvider,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/MultiDisplaySystemEventChipAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/MultiDisplaySystemEventChipAnimationController.kt
index f2bb7b1..4b9721e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/events/MultiDisplaySystemEventChipAnimationController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/MultiDisplaySystemEventChipAnimationController.kt
@@ -72,5 +72,5 @@
}
private fun controllersForAllDisplays() =
- displayRepository.displays.value.map { controllerStore.forDisplay(it.displayId) }
+ displayRepository.displays.value.mapNotNull { controllerStore.forDisplay(it.displayId) }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt
index 9928ac6..f7799bb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.events
+import android.util.Log
import android.view.Display
import android.view.DisplayCutout.BOUNDS_POSITION_BOTTOM
import android.view.DisplayCutout.BOUNDS_POSITION_LEFT
@@ -23,6 +24,7 @@
import android.view.DisplayCutout.BOUNDS_POSITION_TOP
import android.view.LayoutInflater
import android.view.View
+import android.view.WindowManager.InvalidDisplayException
import android.view.WindowManager.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout
import com.android.app.viewcapture.ViewCaptureAwareWindowManager
@@ -97,7 +99,17 @@
// PrivacyDotViewController expects the dot view to have a FrameLayout parent.
val rootView = FrameLayout(context)
rootView.addView(this)
- viewCaptureAwareWindowManager.addView(rootView, params)
+ try {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ viewCaptureAwareWindowManager.addView(rootView, params)
+ } catch (e: InvalidDisplayException) {
+ Log.e(
+ TAG,
+ "Unable to add view to WM. Display with id $displayId does not exist anymore",
+ e,
+ )
+ }
}
@AssistedFactory
@@ -109,4 +121,8 @@
inflater: LayoutInflater,
): PrivacyDotWindowController
}
+
+ private companion object {
+ const val TAG = "PrivacyDotWindowController"
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt
index 227a1fe..eb55856 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt
@@ -62,8 +62,10 @@
override fun iconView(key: String): StatusBarIconView? {
val entry = notifCollection.getEntry(key) ?: return null
+ val displayWindowProperties =
+ displayWindowPropertiesInteractor.getForStatusBar(displayId) ?: return null
return cachedIcons.computeIfAbsent(key) {
- val context = displayWindowPropertiesInteractor.getForStatusBar(displayId).context
+ val context = displayWindowProperties.context
iconManager.createSbIconView(context, entry)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModel.kt
index 2ba28a6..e103282 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerStatusBarViewModel.kt
@@ -68,13 +68,14 @@
.distinctUntilChanged()
/** The colors with which to display the notification icons. */
- fun iconColors(displayId: Int): Flow<NotificationIconColors> =
- darkIconInteractor
+ fun iconColors(displayId: Int): Flow<NotificationIconColors> {
+ return darkIconInteractor
.darkState(displayId)
.map { (areas: Collection<Rect>, tint: Int) -> IconColorsImpl(tint, areas) }
.flowOn(bgContext)
.conflate()
.distinctUntilChanged()
+ }
/** [NotificationIconsViewData] indicating which icons to display in the view. */
val icons: Flow<NotificationIconsViewData> =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/shelf/NotificationShelfIconContainer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/shelf/NotificationShelfIconContainer.kt
index 64d1654..5106ccc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/shelf/NotificationShelfIconContainer.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/shelf/NotificationShelfIconContainer.kt
@@ -19,6 +19,7 @@
import android.content.Context
import android.util.AttributeSet
import android.view.View
+import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.statusbar.notification.shared.NotificationMinimalism
import com.android.systemui.statusbar.phone.NotificationIconContainer
import kotlin.math.max
@@ -35,7 +36,8 @@
/**
* @return The left boundary (not the RTL compatible start) of the area that icons can be added.
*/
- override fun getLeftBound(): Float {
+ @VisibleForTesting
+ public override fun getLeftBound(): Float {
if (!NotificationMinimalism.isEnabled) {
return super.getLeftBound()
}
@@ -49,7 +51,8 @@
/**
* @return The right boundary (not the RTL compatible end) of the area that icons can be added.
*/
- override fun getRightBound(): Float {
+ @VisibleForTesting
+ public override fun getRightBound(): Float {
if (!NotificationMinimalism.isEnabled) {
return super.getRightBound()
}
@@ -80,7 +83,8 @@
return actualWidth - iconState.xTranslation - iconView.width
}
- private val isAlignedToRight: Boolean
+ @VisibleForTesting
+ val isAlignedToRight: Boolean
get() {
if (!NotificationMinimalism.isEnabled) {
return isLayoutRtl
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideControllerStore.kt
index 744f969..2ae38dd4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideControllerStore.kt
@@ -47,9 +47,9 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): AutoHideController {
+ override fun createInstanceForDisplay(displayId: Int): AutoHideController? {
val displayWindowProperties =
- displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR)
+ displayWindowPropertiesRepository.get(displayId, TYPE_STATUS_BAR) ?: return null
return autoHideControllerFactory.create(displayWindowProperties.context)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarControllerImpl.java
index ea67f1c..ca0c1ac9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarControllerImpl.java
@@ -499,9 +499,9 @@
/** Creates a {@link LightBarControllerImpl}. */
LightBarControllerImpl create(
int displayId,
- CoroutineScope coroutineScope,
- DarkIconDispatcher darkIconDispatcher,
- StatusBarModePerDisplayRepository statusBarModePerDisplayRepository);
+ @NonNull CoroutineScope coroutineScope,
+ @NonNull DarkIconDispatcher darkIconDispatcher,
+ @NonNull StatusBarModePerDisplayRepository statusBarModePerDisplayRepository);
}
public static class LegacyFactory implements LightBarController.Factory {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListener.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListener.kt
index 394502b..031754d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListener.kt
@@ -33,6 +33,7 @@
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.res.R
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController
import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore
import com.android.systemui.statusbar.data.repository.SysuiDarkIconDispatcherStore
import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher.DarkChange
@@ -54,7 +55,7 @@
) {
/** Creates listener always using the same light color for overlay */
- fun createListener(view: View) =
+ fun createListener(view: View): StatusOverlayHoverListener =
StatusOverlayHoverListener(
view,
configurationController,
@@ -65,8 +66,10 @@
/**
* Creates listener using [DarkIconDispatcher] to determine light or dark color of the overlay
*/
- fun createDarkAwareListener(view: View) =
- createDarkAwareListener(view, view.darkIconDispatcher.darkChangeFlow())
+ fun createDarkAwareListener(view: View): StatusOverlayHoverListener? {
+ val darkIconDispatcher = view.darkIconDispatcher ?: return null
+ return createDarkAwareListener(view, darkIconDispatcher.darkChangeFlow())
+ }
/**
* Creates listener using [DarkIconDispatcher] to determine light or dark color of the overlay
@@ -78,27 +81,34 @@
rightHoverMargin: Int = 0,
topHoverMargin: Int = 0,
bottomHoverMargin: Int = 0,
- ) =
- createDarkAwareListener(
+ ): StatusOverlayHoverListener? {
+ val darkIconDispatcher = view.darkIconDispatcher ?: return null
+ return createDarkAwareListener(
view,
- view.darkIconDispatcher.darkChangeFlow(),
+ darkIconDispatcher.darkChangeFlow(),
leftHoverMargin,
rightHoverMargin,
topHoverMargin,
bottomHoverMargin,
)
+ }
/**
* Creates listener using provided [DarkChange] producer to determine light or dark color of the
* overlay
*/
- fun createDarkAwareListener(view: View, darkFlow: StateFlow<DarkChange>) =
- StatusOverlayHoverListener(
+ fun createDarkAwareListener(
+ view: View,
+ darkFlow: StateFlow<DarkChange>,
+ ): StatusOverlayHoverListener? {
+ val configurationController = view.statusBarConfigurationController ?: return null
+ return StatusOverlayHoverListener(
view,
- view.statusBarConfigurationController,
+ configurationController,
view.resources,
darkFlow.map { toHoverTheme(view, it) },
)
+ }
private fun createDarkAwareListener(
view: View,
@@ -107,10 +117,11 @@
rightHoverMargin: Int = 0,
topHoverMargin: Int = 0,
bottomHoverMargin: Int = 0,
- ) =
- StatusOverlayHoverListener(
+ ): StatusOverlayHoverListener? {
+ val configurationController = view.statusBarConfigurationController ?: return null
+ return StatusOverlayHoverListener(
view,
- view.statusBarConfigurationController,
+ configurationController,
view.resources,
darkFlow.map { toHoverTheme(view, it) },
leftHoverMargin,
@@ -118,11 +129,12 @@
topHoverMargin,
bottomHoverMargin,
)
+ }
- private val View.statusBarConfigurationController
+ private val View.statusBarConfigurationController: StatusBarConfigurationController?
get() = statusBarConfigurationControllerStore.forDisplay(context.displayId)
- private val View.darkIconDispatcher
+ private val View.darkIconDispatcher: SysuiDarkIconDispatcher?
get() = darkIconDispatcherStore.forDisplay(context.displayId)
private fun toHoverTheme(view: View, darkChange: DarkChange): HoverTheme {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt
index 4f32aaa26..037dda9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt
@@ -31,8 +31,10 @@
import com.android.systemui.statusbar.core.StatusBarInitializerStore
import com.android.systemui.statusbar.core.StatusBarOrchestrator
import com.android.systemui.statusbar.core.StatusBarRootModernization
+import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore
import com.android.systemui.statusbar.data.repository.PrivacyDotViewControllerStoreModule
import com.android.systemui.statusbar.data.repository.PrivacyDotWindowControllerStoreModule
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore
import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore
import com.android.systemui.statusbar.events.PrivacyDotViewControllerModule
import com.android.systemui.statusbar.phone.AutoHideControllerStore
@@ -107,10 +109,14 @@
implFactory: StatusBarInitializerImpl.Factory,
statusBarWindowControllerStore: StatusBarWindowControllerStore,
statusBarModeRepositoryStore: StatusBarModeRepositoryStore,
+ statusBarConfigurationControllerStore: StatusBarConfigurationControllerStore,
+ darkIconDispatcherStore: DarkIconDispatcherStore,
): StatusBarInitializerImpl {
return implFactory.create(
statusBarWindowControllerStore.defaultDisplay,
statusBarModeRepositoryStore.defaultDisplay,
+ statusBarConfigurationControllerStore.defaultDisplay,
+ darkIconDispatcherStore.defaultDisplay,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/data/repository/DarkIconRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/data/repository/DarkIconRepository.kt
index 49356eb..0464654 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/data/repository/DarkIconRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/data/repository/DarkIconRepository.kt
@@ -15,12 +15,14 @@
*/
package com.android.systemui.statusbar.phone.data.repository
+import android.util.Log
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.data.repository.SysuiDarkIconDispatcherStore
import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher.DarkChange
import dagger.Binds
import dagger.Module
import javax.inject.Inject
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
/** Dark-mode state for tinting icons. */
@@ -33,8 +35,22 @@
@Inject
constructor(private val darkIconDispatcherStore: SysuiDarkIconDispatcherStore) :
DarkIconRepository {
- override fun darkState(displayId: Int): StateFlow<DarkChange> =
- darkIconDispatcherStore.forDisplay(displayId).darkChangeFlow()
+ override fun darkState(displayId: Int): StateFlow<DarkChange> {
+ val perDisplayDakIconDispatcher = darkIconDispatcherStore.forDisplay(displayId)
+ if (perDisplayDakIconDispatcher == null) {
+ Log.e(
+ TAG,
+ "DarkIconDispatcher for display $displayId is null. Returning flow of " +
+ "DarkChange.EMPTY",
+ )
+ return MutableStateFlow(DarkChange.EMPTY)
+ }
+ return perDisplayDakIconDispatcher.darkChangeFlow()
+ }
+
+ private companion object {
+ const val TAG = "DarkIconRepositoryImpl"
+ }
}
@Module
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractor.kt
index ed8b3e8..b15fffb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractor.kt
@@ -34,8 +34,8 @@
@Inject
constructor(private val repository: StatusBarModeRepositoryStore) {
- fun isLowProfile(displayId: Int): Flow<Boolean> =
- repository.forDisplay(displayId).statusBarMode.map {
+ fun isLowProfile(displayId: Int): Flow<Boolean>? =
+ repository.forDisplay(displayId)?.statusBarMode?.map {
when (it) {
StatusBarMode.LIGHTS_OUT,
StatusBarMode.LIGHTS_OUT_TRANSPARENT -> true
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
index d257288..c31e34c5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
@@ -47,6 +47,7 @@
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.dump.DumpManager;
+import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.res.R;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
@@ -59,6 +60,9 @@
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips;
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays;
import com.android.systemui.statusbar.core.StatusBarRootModernization;
+import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore;
import com.android.systemui.statusbar.disableflags.DisableFlagsLogger;
import com.android.systemui.statusbar.events.SystemStatusAnimationCallback;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
@@ -78,6 +82,8 @@
import com.android.systemui.statusbar.pipeline.shared.ui.binder.StatusBarVisibilityChangeListener;
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.statusbar.window.StatusBarWindowController;
+import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.statusbar.window.StatusBarWindowStateListener;
import com.android.systemui.util.CarrierConfigTracker;
@@ -156,6 +162,9 @@
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final NotificationIconContainerStatusBarViewBinder mNicViewBinder;
private final DemoModeController mDemoModeController;
+ private final StatusBarWindowControllerStore mStatusBarWindowControllerStore;
+ private final StatusBarConfigurationControllerStore mStatusBarConfigurationControllerStore;
+ private final DarkIconDispatcherStore mDarkIconDispatcherStore;
private List<String> mBlockedIcons = new ArrayList<>();
private Map<Startable, Startable.State> mStartableStates = new ArrayMap<>();
@@ -263,7 +272,10 @@
DumpManager dumpManager,
StatusBarWindowStateController statusBarWindowStateController,
KeyguardUpdateMonitor keyguardUpdateMonitor,
- DemoModeController demoModeController) {
+ DemoModeController demoModeController,
+ StatusBarWindowControllerStore statusBarWindowControllerStore,
+ StatusBarConfigurationControllerStore statusBarConfigurationControllerStore,
+ DarkIconDispatcherStore darkIconDispatcherStore) {
mHomeStatusBarComponentFactory = homeStatusBarComponentFactory;
mOngoingCallController = ongoingCallController;
mAnimationScheduler = animationScheduler;
@@ -287,6 +299,9 @@
mStatusBarWindowStateController = statusBarWindowStateController;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mDemoModeController = demoModeController;
+ mStatusBarWindowControllerStore = statusBarWindowControllerStore;
+ mStatusBarConfigurationControllerStore = statusBarConfigurationControllerStore;
+ mDarkIconDispatcherStore = darkIconDispatcherStore;
}
private final DemoMode mDemoModeCallback = new DemoMode() {
@@ -337,8 +352,27 @@
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mDumpManager.registerDumpable(getDumpableName(), this);
- mHomeStatusBarComponent = mHomeStatusBarComponentFactory.create(
- (PhoneStatusBarView) getView());
+ int displayId = view.getContext().getDisplayId();
+ StatusBarConfigurationController configurationController =
+ mStatusBarConfigurationControllerStore.forDisplay(displayId);
+ if (configurationController == null) {
+ return;
+ }
+ StatusBarWindowController statusBarWindowController =
+ mStatusBarWindowControllerStore.forDisplay(displayId);
+ if (statusBarWindowController == null) {
+ return;
+ }
+ DarkIconDispatcher darkIconDispatcher = mDarkIconDispatcherStore.forDisplay(displayId);
+ if (darkIconDispatcher == null) {
+ return;
+ }
+ mHomeStatusBarComponent =
+ mHomeStatusBarComponentFactory.create(
+ (PhoneStatusBarView) getView(),
+ configurationController,
+ statusBarWindowController,
+ darkIconDispatcher);
mHomeStatusBarComponent.init();
mStartableStates.clear();
for (Startable startable : mHomeStatusBarComponent.getStartables()) {
@@ -453,6 +487,9 @@
@Override
public void onResume() {
super.onResume();
+ if (mHomeStatusBarComponent == null) {
+ return;
+ }
mCommandQueue.addCallback(this);
mStatusBarStateController.addCallback(this);
initOngoingCallChip();
@@ -468,6 +505,9 @@
@Override
public void onPause() {
super.onPause();
+ if (mHomeStatusBarComponent == null) {
+ return;
+ }
mCommandQueue.removeCallback(this);
mStatusBarStateController.removeCallback(this);
if (!StatusBarRootModernization.isEnabled()) {
@@ -480,6 +520,9 @@
@Override
public void onDestroyView() {
super.onDestroyView();
+ if (mHomeStatusBarComponent == null) {
+ return;
+ }
mStatusBarIconController.removeIconGroup(mDarkIconManager);
mCarrierConfigTracker.removeCallback(mCarrierConfigCallback);
mCarrierConfigTracker.removeDataSubscriptionChangedListener(mDefaultDataListener);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarComponent.java
index f8ad0f2..5837752 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarComponent.java
@@ -20,6 +20,7 @@
import com.android.systemui.dagger.qualifiers.DisplaySpecific;
import com.android.systemui.dagger.qualifiers.RootView;
import com.android.systemui.plugins.DarkIconDispatcher;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
import com.android.systemui.statusbar.notification.shared.NotificationsLiveDataStoreRefactor;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.LegacyLightsOutNotifController;
@@ -29,6 +30,7 @@
import com.android.systemui.statusbar.phone.StatusBarBoundsProvider;
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
+import com.android.systemui.statusbar.window.StatusBarWindowController;
import dagger.BindsInstance;
import dagger.Subcomponent;
@@ -57,7 +59,10 @@
interface Factory {
/** */
HomeStatusBarComponent create(
- @BindsInstance @RootView PhoneStatusBarView phoneStatusBarView);
+ @BindsInstance @RootView PhoneStatusBarView phoneStatusBarView,
+ @BindsInstance StatusBarConfigurationController configurationController,
+ @BindsInstance StatusBarWindowController statusBarWindowController,
+ @BindsInstance @DisplaySpecific DarkIconDispatcher darkIconDispatcher);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarModule.java
index 182f8d7..6a331b9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/HomeStatusBarModule.java
@@ -22,19 +22,14 @@
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.dagger.qualifiers.DisplaySpecific;
import com.android.systemui.dagger.qualifiers.RootView;
-import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.HeadsUpStatusBarView;
-import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore;
-import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
-import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore;
import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
import com.android.systemui.statusbar.phone.StatusBarLocation;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.window.StatusBarWindowController;
-import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
import dagger.Module;
import dagger.Provides;
@@ -149,29 +144,4 @@
static int displayId(@RootView PhoneStatusBarView view) {
return view.getContext().getDisplayId();
}
-
- /** */
- @Provides
- @HomeStatusBarScope
- static StatusBarConfigurationController configurationController(
- @DisplaySpecific int displayId, StatusBarConfigurationControllerStore store) {
- return store.forDisplay(displayId);
- }
-
- /** */
- @Provides
- @HomeStatusBarScope
- static StatusBarWindowController provideWindowController(
- @DisplaySpecific int displayId, StatusBarWindowControllerStore store) {
- return store.forDisplay(displayId);
- }
-
- /** */
- @Provides
- @HomeStatusBarScope
- @DisplaySpecific
- static DarkIconDispatcher darkIconDispatcher(
- @DisplaySpecific int displayId, DarkIconDispatcherStore store) {
- return store.forDisplay(displayId);
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
index c3299bb..7243ba7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
@@ -70,6 +70,8 @@
) {
fun create(root: ViewGroup, andThen: (ViewGroup) -> Unit): ComposeView {
val composeView = ComposeView(root.context)
+ val darkIconDispatcher =
+ darkIconDispatcherStore.forDisplay(root.context.displayId) ?: return composeView
composeView.apply {
setContent {
StatusBarRoot(
@@ -80,7 +82,7 @@
darkIconManagerFactory = darkIconManagerFactory,
iconController = iconController,
ongoingCallController = ongoingCallController,
- darkIconDispatcher = darkIconDispatcherStore.forDisplay(root.context.displayId),
+ darkIconDispatcher = darkIconDispatcher,
eventAnimationInteractor = eventAnimationInteractor,
onViewCreated = andThen,
)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
index dcfbc5d..c9cc173 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
@@ -63,6 +63,7 @@
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
@@ -216,7 +217,7 @@
} else {
combine(
notificationsInteractor.areAnyNotificationsPresent,
- lightsOutInteractor.isLowProfile(displayId),
+ lightsOutInteractor.isLowProfile(displayId) ?: flowOf(false),
) { hasNotifications, isLowProfile ->
hasNotifications && isLowProfile
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerImpl.java
index 811a2ec..848e91d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerImpl.java
@@ -163,7 +163,18 @@
mLp = getBarLayoutParams(mContext.getDisplay().getRotation());
Trace.endSection();
- mWindowManager.addView(mStatusBarWindowView, mLp);
+ try {
+ mWindowManager.addView(mStatusBarWindowView, mLp);
+ } catch (WindowManager.InvalidDisplayException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ Log.e(
+ TAG,
+ "Unable to add view to WindowManager. Display with id "
+ + mContext.getDisplayId()
+ + " doesn't exist anymore.",
+ e);
+ }
mLpChanged.copyFrom(mLp);
mContentInsetsProvider.addCallback(this::calculateStatusBarLocationsForAllRotations);
@@ -176,7 +187,15 @@
public void stop() {
StatusBarConnectedDisplays.assertInNewMode();
- mWindowManager.removeView(mStatusBarWindowView);
+ try {
+ mWindowManager.removeView(mStatusBarWindowView);
+ } catch (IllegalArgumentException e) {
+ // Wrapping this in a try/catch to avoid crashes when a display is instantly removed
+ // after being added, and initialization hasn't finished yet.
+ // When that happens, adding the View to WindowManager fails, and therefore removing
+ // it here will fail too, since it wasn't added in the first place.
+ Log.e(TAG, "Failed to remove View from WindowManager. View was not attached", e);
+ }
if (StatusBarRootModernization.isEnabled()) {
return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerStore.kt
index 7403161..f7688d2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerStore.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowControllerStore.kt
@@ -54,19 +54,23 @@
StatusBarConnectedDisplays.assertInNewMode()
}
- override fun createInstanceForDisplay(displayId: Int): StatusBarWindowController {
+ override fun createInstanceForDisplay(displayId: Int): StatusBarWindowController? {
val statusBarDisplayContext =
displayWindowPropertiesRepository.get(
displayId = displayId,
windowType = WindowManager.LayoutParams.TYPE_STATUS_BAR,
- )
+ ) ?: return null
+ val statusBarConfigurationController =
+ statusBarConfigurationControllerStore.forDisplay(displayId) ?: return null
+ val contentInsetsProvider =
+ statusBarContentInsetsProviderStore.forDisplay(displayId) ?: return null
val viewCaptureAwareWindowManager =
viewCaptureAwareWindowManagerFactory.create(statusBarDisplayContext.windowManager)
return controllerFactory.create(
statusBarDisplayContext.context,
viewCaptureAwareWindowManager,
- statusBarConfigurationControllerStore.forDisplay(displayId),
- statusBarContentInsetsProviderStore.forDisplay(displayId),
+ statusBarConfigurationController,
+ contentInsetsProvider,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
index 8bb0279..8733eeb 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
@@ -71,6 +71,8 @@
fun CoroutineScope.bind(view: View) {
val volumeDialogBackgroundView = view.requireViewById<View>(R.id.volume_dialog_background)
+ val ringerHBackgroundView =
+ view.requireViewById<View>(R.id.volume_ringer_horizontal_background)
val drawerContainer = view.requireViewById<MotionLayout>(R.id.volume_ringer_drawer)
val unselectedButtonUiModel = RingerButtonUiModel.getUnselectedButton(view.context)
val selectedButtonUiModel = RingerButtonUiModel.getSelectedButton(view.context)
@@ -84,6 +86,11 @@
)
var backgroundAnimationProgress: Float by
Delegates.observable(0F) { _, _, progress ->
+ ringerHBackgroundView.applyCorners(
+ fullRadius = volumeDialogBgFullRadius,
+ diff = volumeDialogBgFullRadius - volumeDialogBgSmallRadius,
+ progress,
+ )
volumeDialogBackgroundView.applyCorners(
fullRadius = volumeDialogBgFullRadius,
diff = volumeDialogBgFullRadius - volumeDialogBgSmallRadius,
@@ -95,6 +102,7 @@
}
drawerContainer.setTransitionListener(ringerDrawerTransitionListener)
volumeDialogBackgroundView.background = volumeDialogBackgroundView.background.mutate()
+ ringerHBackgroundView.background = ringerHBackgroundView.background.mutate()
viewModel.ringerViewModel
.mapLatest { ringerState ->
@@ -184,6 +192,8 @@
)
volumeDialogBackgroundView.background =
volumeDialogBackgroundView.background.mutate()
+ ringerHBackgroundView.background =
+ ringerHBackgroundView.background.mutate()
}
}
}
@@ -193,6 +203,9 @@
volumeDialogBackgroundView.setBackgroundResource(
R.drawable.volume_dialog_background
)
+ ringerHBackgroundView.setBackgroundResource(
+ R.drawable.volume_dialog_background
+ )
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/util/RingerDrawerConstraintsUtils.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/util/RingerDrawerConstraintsUtils.kt
index 25ba1bd..69ffa38 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/util/RingerDrawerConstraintsUtils.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/util/RingerDrawerConstraintsUtils.kt
@@ -119,6 +119,15 @@
)
when (lastOrientation) {
ORIENTATION_LANDSCAPE -> {
+ if (index == 0) {
+ setMargin(
+ button.id,
+ ConstraintSet.LEFT,
+ motionLayout.context.resources.getDimensionPixelSize(
+ R.dimen.volume_dialog_ringer_drawer_left_margin
+ ),
+ )
+ }
setButtonPositionLandscapeConstraints(motionLayout, index, button)
if (index != motionLayout.childCount - 1) {
setMargin(
@@ -134,6 +143,9 @@
setMargin(button.id, ConstraintSet.BOTTOM, 0)
}
ORIENTATION_PORTRAIT -> {
+ if (index == 0) {
+ setMargin(button.id, ConstraintSet.LEFT, 0)
+ }
setButtonPositionPortraitConstraints(motionLayout, index, button)
if (index != motionLayout.childCount - 1) {
setMargin(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
index 51a7b5f..bc9d4c7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java
@@ -42,6 +42,7 @@
import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Dependency;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.AccessibilityButtonModeObserver;
@@ -95,6 +96,8 @@
private Lazy<ViewCapture> mLazyViewCapture;
@Mock
private NavigationModeController mNavigationModeController;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
@Before
public void setUp() throws Exception {
@@ -170,7 +173,7 @@
mController = setUpController();
mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
- mNavigationModeController);
+ mNavigationModeController, mHearingAidDeviceManager);
captureKeyguardUpdateMonitorCallback();
mKeyguardCallback.onUserUnlocked();
@@ -198,7 +201,7 @@
mController = setUpController();
mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
- mNavigationModeController);
+ mNavigationModeController, mHearingAidDeviceManager);
captureKeyguardUpdateMonitorCallback();
mKeyguardCallback.onUserSwitching(fakeUserId);
@@ -213,7 +216,7 @@
mController = setUpController();
mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
- mNavigationModeController);
+ mNavigationModeController, mHearingAidDeviceManager);
captureKeyguardUpdateMonitorCallback();
mKeyguardCallback.onUserUnlocked();
mKeyguardCallback.onKeyguardVisibilityChanged(true);
@@ -368,9 +371,9 @@
final AccessibilityFloatingMenuController controller =
new AccessibilityFloatingMenuController(mContextWrapper, windowManager,
viewCaptureAwareWindowManager, displayManager, mAccessibilityManager,
- mTargetsObserver, mModeObserver, mKeyguardUpdateMonitor, mSecureSettings,
- displayTracker, mNavigationModeController, new Handler(
- mTestableLooper.getLooper()));
+ mTargetsObserver, mModeObserver, mHearingAidDeviceManager,
+ mKeyguardUpdateMonitor, mSecureSettings, displayTracker,
+ mNavigationModeController, new Handler(mTestableLooper.getLooper()));
controller.init();
return controller;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
index dddaabb..856c379 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
@@ -26,7 +26,6 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.graphics.PointF;
-
import android.testing.TestableLooper;
import android.view.View;
import android.view.ViewPropertyAnimator;
@@ -40,6 +39,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Prefs;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.utils.TestUtils;
@@ -74,6 +74,8 @@
@Mock
private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
@Before
public void setUp() throws Exception {
@@ -82,7 +84,7 @@
stubWindowManager);
final SecureSettings secureSettings = TestUtils.mockSecureSettings();
final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager,
- secureSettings);
+ secureSettings, mHearingAidDeviceManager);
mMenuView = spy(new MenuView(mContext, stubMenuViewModel, stubMenuViewAppearance,
secureSettings));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
index 400b3b3..33cfb38 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
@@ -77,6 +77,7 @@
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.dialog.AccessibilityTarget;
import com.android.internal.messages.nano.SystemMessageProto;
+import com.android.settingslib.bluetooth.HearingAidDeviceManager;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestableContext;
@@ -140,6 +141,8 @@
@Mock
private AccessibilityManager mStubAccessibilityManager;
@Mock
+ private HearingAidDeviceManager mHearingAidDeviceManager;
+ @Mock
private PackageManager mMockPackageManager;
private final SecureSettings mSecureSettings = TestUtils.mockSecureSettings();
@@ -160,7 +163,7 @@
doReturn(mWindowMetrics).when(mStubWindowManager).getCurrentWindowMetrics();
mMenuViewModel = new MenuViewModel(
- mSpyContext, mStubAccessibilityManager, mSecureSettings);
+ mSpyContext, mStubAccessibilityManager, mSecureSettings, mHearingAidDeviceManager);
MenuViewAppearance menuViewAppearance = new MenuViewAppearance(
mSpyContext, mStubWindowManager);
mMenuView = spy(
@@ -419,9 +422,10 @@
@Test
@EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
public void onDismissAction_incrementsTexMetricDismiss() {
- mMenuViewModel.onTargetFeaturesChanged(
- List.of(new TestAccessibilityTarget(mSpyContext, 1234),
- new TestAccessibilityTarget(mSpyContext, 5678)));
+ List<AccessibilityTarget> testTargets = new ArrayList<>();
+ testTargets.add(new TestAccessibilityTarget(mSpyContext, 1234));
+ testTargets.add(new TestAccessibilityTarget(mSpyContext, 5678));
+ mMenuViewModel.onTargetFeaturesChanged(testTargets);
mMenuViewLayer.dispatchAccessibilityAction(R.id.action_remove_menu);
@@ -431,9 +435,10 @@
@Test
@EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
public void onEditAction_incrementsTexMetricEdit() {
- mMenuViewModel.onTargetFeaturesChanged(
- List.of(new TestAccessibilityTarget(mSpyContext, 1234),
- new TestAccessibilityTarget(mSpyContext, 5678)));
+ List<AccessibilityTarget> testTargets = new ArrayList<>();
+ testTargets.add(new TestAccessibilityTarget(mSpyContext, 1234));
+ testTargets.add(new TestAccessibilityTarget(mSpyContext, 5678));
+ mMenuViewModel.onTargetFeaturesChanged(testTargets);
mMenuViewLayer.dispatchAccessibilityAction(R.id.action_edit);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentControllerTest.java
similarity index 79%
rename from packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
rename to packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentControllerTest.java
index 782b248..e4a49530 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentControllerTest.java
@@ -9,8 +9,8 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
-import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_HORIZONTAL_WEIGHT;
-import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_VERTICAL_WEIGHT;
+import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.TOAST_PARAMS_HORIZONTAL_WEIGHT;
+import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.TOAST_PARAMS_VERTICAL_WEIGHT;
import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MAX;
import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MIN;
import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_UNREACHABLE;
@@ -105,7 +105,7 @@
@SmallTest
@RunWith(AndroidJUnit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-public class InternetDialogDelegateControllerTest extends SysuiTestCase {
+public class InternetDetailsContentControllerTest extends SysuiTestCase {
private static final int SUB_ID = 1;
private static final int SUB_ID2 = 2;
@@ -160,7 +160,7 @@
@Mock
private WifiUtils.InternetIconInjector mWifiIconInjector;
@Mock
- InternetDialogController.InternetDialogCallback mInternetDialogCallback;
+ InternetDetailsContentController.InternetDialogCallback mInternetDialogCallback;
@Mock
private ViewCaptureAwareWindowManager mWindowManager;
@Mock
@@ -189,7 +189,7 @@
private FakeFeatureFlags mFlags = new FakeFeatureFlags();
private TestableResources mTestableResources;
- private InternetDialogController mInternetDialogController;
+ private InternetDetailsContentController mInternetDetailsContentController;
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
private List<WifiEntry> mAccessPoints = new ArrayList<>();
private List<WifiEntry> mWifiEntries = new ArrayList<>();
@@ -229,7 +229,7 @@
when(mSystemUIToast.getInAnimation()).thenReturn(mAnimator);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
- mInternetDialogController = new InternetDialogController(mContext,
+ mInternetDetailsContentController = new InternetDetailsContentController(mContext,
mock(UiEventLogger.class), mock(ActivityStarter.class), mAccessPointController,
mSubscriptionManager, mTelephonyManager, mWifiManager,
mConnectivityManager, mHandler, mExecutor, mBroadcastDispatcher,
@@ -238,11 +238,11 @@
mCarrierConfigTracker, mLocationController, mDialogTransitionAnimator,
mWifiStateWorker, mFlags);
mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
- mInternetDialogController.mOnSubscriptionsChangedListener);
- mInternetDialogController.onStart(mInternetDialogCallback, true);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
- mInternetDialogController.mActivityStarter = mActivityStarter;
- mInternetDialogController.mWifiIconInjector = mWifiIconInjector;
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener);
+ mInternetDetailsContentController.onStart(mInternetDialogCallback, true);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.mActivityStarter = mActivityStarter;
+ mInternetDetailsContentController.mWifiIconInjector = mWifiIconInjector;
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, false);
mFlags.set(Flags.SHARE_WIFI_QS_BUTTON, false);
@@ -260,7 +260,7 @@
@Test
public void connectCarrierNetwork_mergedCarrierEntryCanConnect_connectAndCreateSysUiToast() {
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
when(spyController.isMobileDataEnabled()).thenReturn(true);
when(mKeyguardStateController.isUnlocked()).thenReturn(true);
when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork);
@@ -282,7 +282,7 @@
@Test
public void connectCarrierNetwork_mergedCarrierEntryCanConnect_doNothingWhenSettingsOff() {
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
when(spyController.isMobileDataEnabled()).thenReturn(false);
mTestableResources.addOverride(R.string.wifi_wont_autoconnect_for_now,
TOAST_MESSAGE_STRING);
@@ -296,7 +296,7 @@
@Test
public void connectCarrierNetwork_mergedCarrierEntryCanConnect_doNothingWhenKeyguardLocked() {
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
when(spyController.isMobileDataEnabled()).thenReturn(true);
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
@@ -311,8 +311,6 @@
@Test
public void connectCarrierNetwork_mergedCarrierEntryCanConnect_doNothingWhenMobileIsPrimary() {
- InternetDialogController spyController = spy(mInternetDialogController);
- when(spyController.isMobileDataEnabled()).thenReturn(true);
when(mKeyguardStateController.isUnlocked()).thenReturn(true);
when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork);
when(mConnectivityManager.getNetworkCapabilities(mNetwork))
@@ -322,7 +320,7 @@
mTestableResources.addOverride(R.string.wifi_wont_autoconnect_for_now,
TOAST_MESSAGE_STRING);
- mInternetDialogController.connectCarrierNetwork();
+ mInternetDetailsContentController.connectCarrierNetwork();
verify(mMergedCarrierEntry, never()).connect(null /* callback */, false /* showToast */);
verify(mToastFactory, never()).createToast(any(), any(), anyString(), anyString(), anyInt(),
@@ -333,7 +331,7 @@
public void makeOverlayToast_withGravityFlags_addViewWithLayoutParams() {
mTestableResources.addOverride(TOAST_MESSAGE_STRING_ID, TOAST_MESSAGE_STRING);
- mInternetDialogController.makeOverlayToast(TOAST_MESSAGE_STRING_ID);
+ mInternetDetailsContentController.makeOverlayToast(TOAST_MESSAGE_STRING_ID);
ArgumentCaptor<WindowManager.LayoutParams> paramsCaptor = ArgumentCaptor.forClass(
WindowManager.LayoutParams.class);
@@ -349,7 +347,7 @@
public void makeOverlayToast_withAnimation_verifyAnimatorStart() {
mTestableResources.addOverride(TOAST_MESSAGE_STRING_ID, TOAST_MESSAGE_STRING);
- mInternetDialogController.makeOverlayToast(TOAST_MESSAGE_STRING_ID);
+ mInternetDetailsContentController.makeOverlayToast(TOAST_MESSAGE_STRING_ID);
verify(mAnimator).start();
}
@@ -358,7 +356,7 @@
public void getDialogTitleText_withAirplaneModeOn_returnAirplaneMode() {
fakeAirplaneModeEnabled(true);
- assertTrue(TextUtils.equals(mInternetDialogController.getDialogTitleText(),
+ assertTrue(TextUtils.equals(mInternetDetailsContentController.getDialogTitleText(),
getResourcesString("airplane_mode")));
}
@@ -366,7 +364,7 @@
public void getDialogTitleText_withAirplaneModeOff_returnInternet() {
fakeAirplaneModeEnabled(false);
- assertTrue(TextUtils.equals(mInternetDialogController.getDialogTitleText(),
+ assertTrue(TextUtils.equals(mInternetDetailsContentController.getDialogTitleText(),
getResourcesString("quick_settings_internet_label")));
}
@@ -375,13 +373,13 @@
fakeAirplaneModeEnabled(true);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(false);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isEqualTo(getResourcesString("wifi_is_off"));
// if the Wi-Fi disallow config, then don't return Wi-Fi related string.
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isNotEqualTo(getResourcesString("wifi_is_off"));
}
@@ -390,13 +388,13 @@
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(false);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isEqualTo(getResourcesString("wifi_is_off"));
// if the Wi-Fi disallow config, then don't return Wi-Fi related string.
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isNotEqualTo(getResourcesString("wifi_is_off"));
}
@@ -404,15 +402,15 @@
public void getSubtitleText_withNoWifiEntry_returnSearchWifi() {
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
- mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
+ mInternetDetailsContentController.onAccessPointsChanged(null /* accessPoints */);
- assertThat(mInternetDialogController.getSubtitleText(true))
+ assertThat(mInternetDetailsContentController.getSubtitleText(true))
.isEqualTo(getResourcesString("wifi_empty_list_wifi_on"));
// if the Wi-Fi disallow config, then don't return Wi-Fi related string.
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
- assertThat(mInternetDialogController.getSubtitleText(true))
+ assertThat(mInternetDetailsContentController.getSubtitleText(true))
.isNotEqualTo(getResourcesString("wifi_empty_list_wifi_on"));
}
@@ -422,13 +420,13 @@
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isEqualTo(getResourcesString("tap_a_network_to_connect"));
// if the Wi-Fi disallow config, then don't return Wi-Fi related string.
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isNotEqualTo(getResourcesString("tap_a_network_to_connect"));
}
@@ -438,14 +436,14 @@
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
- assertTrue(TextUtils.equals(mInternetDialogController.getSubtitleText(false),
+ assertTrue(TextUtils.equals(mInternetDetailsContentController.getSubtitleText(false),
getResourcesString("unlock_to_view_networks")));
}
@Test
public void getSubtitleText_withNoService_returnNoNetworksAvailable() {
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, true);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
spyController.onAccessPointsChanged(null /* accessPoints */);
@@ -466,7 +464,7 @@
@Test
public void getSubtitleText_withNoService_returnNoNetworksAvailable_flagOff() {
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
spyController.onAccessPointsChanged(null /* accessPoints */);
@@ -488,22 +486,22 @@
public void getSubtitleText_withMobileDataDisabled_returnNoOtherAvailable() {
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
- mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
- InternetDialogController spyController = spy(mInternetDialogController);
+ mInternetDetailsContentController.onAccessPointsChanged(null /* accessPoints */);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState();
spyController.mSubIdServiceState.put(SUB_ID, mServiceState);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isEqualTo(getResourcesString("non_carrier_network_unavailable"));
// if the Wi-Fi disallow config, then don't return Wi-Fi related string.
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
when(spyController.isMobileDataEnabled()).thenReturn(false);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isNotEqualTo(getResourcesString("non_carrier_network_unavailable"));
}
@@ -511,21 +509,22 @@
public void getSubtitleText_withCarrierNetworkActiveOnly_returnNoOtherAvailable() {
fakeAirplaneModeEnabled(false);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(true);
- mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
+ mInternetDetailsContentController.onAccessPointsChanged(null /* accessPoints */);
when(mMergedCarrierEntry.isDefaultNetwork()).thenReturn(true);
- assertThat(mInternetDialogController.getSubtitleText(false))
+ assertThat(mInternetDetailsContentController.getSubtitleText(false))
.isEqualTo(getResourcesString("non_carrier_network_unavailable"));
}
@Test
public void getWifiDetailsSettingsIntent_withNoKey_returnNull() {
- assertThat(mInternetDialogController.getWifiDetailsSettingsIntent(null)).isNull();
+ assertThat(mInternetDetailsContentController.getWifiDetailsSettingsIntent(null)).isNull();
}
@Test
public void getWifiDetailsSettingsIntent_withKey_returnIntent() {
- assertThat(mInternetDialogController.getWifiDetailsSettingsIntent("test_key")).isNotNull();
+ assertThat(mInternetDetailsContentController.getWifiDetailsSettingsIntent(
+ "test_key")).isNotNull();
}
@Test
@@ -533,7 +532,7 @@
final Drawable drawable = mock(Drawable.class);
when(mWifiIconInjector.getIcon(anyBoolean(), anyInt())).thenReturn(drawable);
- mInternetDialogController.getInternetWifiDrawable(mConnectedEntry);
+ mInternetDetailsContentController.getInternetWifiDrawable(mConnectedEntry);
verify(mWifiIconInjector).getIcon(eq(false), anyInt());
verify(drawable).setTint(mContext.getColor(R.color.connected_network_primary_color));
@@ -543,7 +542,7 @@
public void getWifiDrawable_withWifiLevelUnreachable_returnNull() {
when(mConnectedEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE);
- assertThat(mInternetDialogController.getWifiDrawable(mConnectedEntry)).isNull();
+ assertThat(mInternetDetailsContentController.getWifiDrawable(mConnectedEntry)).isNull();
}
@Test
@@ -553,19 +552,21 @@
Drawable hotspotDrawable = mock(Drawable.class);
mTestableResources.addOverride(getHotspotIconResource(DEVICE_TYPE_PHONE), hotspotDrawable);
- assertThat(mInternetDialogController.getWifiDrawable(entry)).isEqualTo(hotspotDrawable);
+ assertThat(mInternetDetailsContentController.getWifiDrawable(entry)).isEqualTo(
+ hotspotDrawable);
}
@Test
public void startActivityForDialog_always_startActivityWithoutDismissShade() {
- mInternetDialogController.startActivityForDialog(mock(Intent.class));
+ mInternetDetailsContentController.startActivityForDialog(mock(Intent.class));
verify(mActivityStarter).startActivity(any(Intent.class), eq(false) /* dismissShade */);
}
@Test
public void launchWifiDetailsSetting_withNoWifiEntryKey_doNothing() {
- mInternetDialogController.launchWifiDetailsSetting(null /* key */, mDialogLaunchView);
+ mInternetDetailsContentController.launchWifiDetailsSetting(null /* key */,
+ mDialogLaunchView);
verify(mActivityStarter, never())
.postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
@@ -573,7 +574,8 @@
@Test
public void launchWifiDetailsSetting_withWifiEntryKey_startActivity() {
- mInternetDialogController.launchWifiDetailsSetting("wifi_entry_key", mDialogLaunchView);
+ mInternetDetailsContentController.launchWifiDetailsSetting("wifi_entry_key",
+ mDialogLaunchView);
verify(mActivityStarter).postStartActivityDismissingKeyguard(any(Intent.class), anyInt(),
any());
@@ -583,22 +585,22 @@
public void isDeviceLocked_keyguardIsUnlocked_returnFalse() {
when(mKeyguardStateController.isUnlocked()).thenReturn(true);
- assertThat(mInternetDialogController.isDeviceLocked()).isFalse();
+ assertThat(mInternetDetailsContentController.isDeviceLocked()).isFalse();
}
@Test
public void isDeviceLocked_keyguardIsLocked_returnTrue() {
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
- assertThat(mInternetDialogController.isDeviceLocked()).isTrue();
+ assertThat(mInternetDetailsContentController.isDeviceLocked()).isTrue();
}
@Test
public void onAccessPointsChanged_canNotConfigWifi_doNothing() {
reset(mInternetDialogCallback);
- mInternetDialogController.mCanConfigWifi = false;
+ mInternetDetailsContentController.mCanConfigWifi = false;
- mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
+ mInternetDetailsContentController.onAccessPointsChanged(null /* accessPoints */);
verify(mInternetDialogCallback, never()).onAccessPointsChanged(any(), any(), anyBoolean());
}
@@ -607,7 +609,7 @@
public void onAccessPointsChanged_nullAccessPoints_callbackBothNull() {
reset(mInternetDialogCallback);
- mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
+ mInternetDetailsContentController.onAccessPointsChanged(null /* accessPoints */);
verify(mInternetDialogCallback).onAccessPointsChanged(null /* wifiEntries */,
null /* connectedEntry */, false /* hasMoreEntry */);
@@ -619,7 +621,7 @@
mAccessPoints.clear();
mAccessPoints.add(mConnectedEntry);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
@@ -632,7 +634,7 @@
mAccessPoints.clear();
mAccessPoints.add(mWifiEntry1);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -647,7 +649,7 @@
mAccessPoints.add(mConnectedEntry);
mAccessPoints.add(mWifiEntry1);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -663,7 +665,7 @@
mAccessPoints.add(mWifiEntry1);
mAccessPoints.add(mWifiEntry2);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -681,7 +683,7 @@
mAccessPoints.add(mWifiEntry2);
mAccessPoints.add(mWifiEntry3);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -699,7 +701,7 @@
mAccessPoints.add(mWifiEntry3);
mAccessPoints.add(mWifiEntry4);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -718,7 +720,7 @@
when(mWifiEntry1.hasInternetAccess()).thenReturn(false);
mAccessPoints.add(mWifiEntry1);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
@@ -735,9 +737,10 @@
when(mWifiEntry1.hasInternetAccess()).thenReturn(false);
mAccessPoints.add(mWifiEntry1);
- mInternetDialogController.onAccessPointsChanged(mAccessPoints);
+ mInternetDetailsContentController.onAccessPointsChanged(mAccessPoints);
- verify(mWifiEntry1).setListener(mInternetDialogController.mConnectedWifiInternetMonitor);
+ verify(mWifiEntry1).setListener(
+ mInternetDetailsContentController.mConnectedWifiInternetMonitor);
}
@Test
@@ -746,8 +749,9 @@
when(mWifiEntry1.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
when(mWifiEntry1.isDefaultNetwork()).thenReturn(true);
when(mWifiEntry1.hasInternetAccess()).thenReturn(false);
- InternetDialogController.ConnectedWifiInternetMonitor mConnectedWifiInternetMonitor =
- mInternetDialogController.mConnectedWifiInternetMonitor;
+ InternetDetailsContentController.ConnectedWifiInternetMonitor
+ mConnectedWifiInternetMonitor =
+ mInternetDetailsContentController.mConnectedWifiInternetMonitor;
mConnectedWifiInternetMonitor.registerCallbackIfNeed(mWifiEntry1);
// When the hasInternetAccess() changed to true, and call back the onUpdated() function.
@@ -762,7 +766,7 @@
reset(mInternetDialogCallback);
when(mWifiStateWorker.isWifiEnabled()).thenReturn(false);
- mInternetDialogController.onWifiScan(true);
+ mInternetDetailsContentController.onWifiScan(true);
verify(mInternetDialogCallback).onWifiScan(false);
}
@@ -772,7 +776,7 @@
reset(mInternetDialogCallback);
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
- mInternetDialogController.onWifiScan(true);
+ mInternetDetailsContentController.onWifiScan(true);
verify(mInternetDialogCallback).onWifiScan(false);
}
@@ -781,7 +785,7 @@
public void onWifiScan_onWifiScanFalse_callbackOnWifiScanFalse() {
reset(mInternetDialogCallback);
- mInternetDialogController.onWifiScan(false);
+ mInternetDetailsContentController.onWifiScan(false);
verify(mInternetDialogCallback).onWifiScan(false);
}
@@ -790,7 +794,7 @@
public void onWifiScan_onWifiScanTrue_callbackOnWifiScanTrue() {
reset(mInternetDialogCallback);
- mInternetDialogController.onWifiScan(true);
+ mInternetDetailsContentController.onWifiScan(true);
verify(mInternetDialogCallback).onWifiScan(true);
}
@@ -800,7 +804,7 @@
when(mCarrierConfigTracker.getCarrierProvisionsWifiMergedNetworksBool(SUB_ID))
.thenReturn(true);
- mInternetDialogController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
+ mInternetDetailsContentController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
verify(mMergedCarrierEntry, never()).setEnabled(anyBoolean());
}
@@ -811,7 +815,7 @@
.thenReturn(false);
when(mAccessPointController.getMergedCarrierEntry()).thenReturn(null);
- mInternetDialogController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
+ mInternetDetailsContentController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
}
@Test
@@ -819,11 +823,11 @@
when(mCarrierConfigTracker.getCarrierProvisionsWifiMergedNetworksBool(SUB_ID))
.thenReturn(false);
- mInternetDialogController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
+ mInternetDetailsContentController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, true);
verify(mMergedCarrierEntry).setEnabled(true);
- mInternetDialogController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, false);
+ mInternetDetailsContentController.setMergedCarrierWifiEnabledIfNeed(SUB_ID, false);
verify(mMergedCarrierEntry).setEnabled(false);
}
@@ -833,11 +837,11 @@
when(mLocationController.isLocationEnabled()).thenReturn(false);
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
- assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();
+ assertThat(mInternetDetailsContentController.isWifiScanEnabled()).isFalse();
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
- assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();
+ assertThat(mInternetDetailsContentController.isWifiScanEnabled()).isFalse();
}
@Test
@@ -845,17 +849,17 @@
when(mLocationController.isLocationEnabled()).thenReturn(true);
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
- assertThat(mInternetDialogController.isWifiScanEnabled()).isFalse();
+ assertThat(mInternetDetailsContentController.isWifiScanEnabled()).isFalse();
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
- assertThat(mInternetDialogController.isWifiScanEnabled()).isTrue();
+ assertThat(mInternetDetailsContentController.isWifiScanEnabled()).isTrue();
}
@Test
public void getSignalStrengthIcon_differentSubId() {
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, true);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
Drawable icons = spyController.getSignalStrengthIcon(SUB_ID, mContext, 1, 1, 0, false);
Drawable icons2 = spyController.getSignalStrengthIcon(SUB_ID2, mContext, 1, 1, 0, false);
@@ -870,12 +874,12 @@
doReturn(SUB_ID2).when(info).getSubscriptionId();
when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(info);
- int subId = mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ int subId = mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
assertThat(subId).isEqualTo(SUB_ID2);
// active on CBRS
doReturn(true).when(info).isOpportunistic();
- subId = mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ subId = mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
assertThat(subId).isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
// active on DDS
@@ -883,7 +887,7 @@
doReturn(SUB_ID).when(info).getSubscriptionId();
when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(info);
- subId = mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ subId = mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
assertThat(subId).isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
}
@@ -894,7 +898,7 @@
doReturn(SUB_ID2).when(info).getSubscriptionId();
when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(info);
- int subId = mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ int subId = mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
assertThat(subId).isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
}
@@ -908,22 +912,24 @@
doReturn(false).when(info).isOpportunistic();
when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(info);
- mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
// 1st time is onStart(), 2nd time is getActiveAutoSwitchNonDdsSubId()
verify(mTelephonyManager, times(2)).registerTelephonyCallback(any(), any());
- assertThat(mInternetDialogController.mSubIdTelephonyCallbackMap.size()).isEqualTo(2);
+ assertThat(mInternetDetailsContentController.mSubIdTelephonyCallbackMap.size()).isEqualTo(
+ 2);
// Adds non DDS subId again
doReturn(SUB_ID2).when(info).getSubscriptionId();
doReturn(false).when(info).isOpportunistic();
when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(info);
- mInternetDialogController.getActiveAutoSwitchNonDdsSubId();
+ mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId();
// Does not add due to cached subInfo in mSubIdTelephonyCallbackMap.
verify(mTelephonyManager, times(2)).registerTelephonyCallback(any(), any());
- assertThat(mInternetDialogController.mSubIdTelephonyCallbackMap.size()).isEqualTo(2);
+ assertThat(mInternetDetailsContentController.mSubIdTelephonyCallbackMap.size()).isEqualTo(
+ 2);
}
@Test
@@ -936,7 +942,7 @@
when(SubscriptionManager.getResourcesForSubId(any(), eq(SUB_ID))).thenReturn(res1);
when(SubscriptionManager.getResourcesForSubId(any(), eq(SUB_ID2))).thenReturn(res2);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
Map<Integer, TelephonyDisplayInfo> mSubIdTelephonyDisplayInfoMap =
spyController.mSubIdTelephonyDisplayInfoMap;
TelephonyDisplayInfo info1 = new TelephonyDisplayInfo(TelephonyManager.NETWORK_TYPE_EDGE,
@@ -961,7 +967,7 @@
@Test
public void getMobileNetworkSummary_flagOff() {
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
doReturn(true).when(spyController).isMobileDataEnabled();
doReturn(true).when(spyController).activeNetworkIsCellular();
String dds = spyController.getMobileNetworkSummary(SUB_ID);
@@ -972,7 +978,7 @@
@Test
public void launchMobileNetworkSettings_validSubId() {
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, true);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
doReturn(SUB_ID2).when(spyController).getActiveAutoSwitchNonDdsSubId();
spyController.launchMobileNetworkSettings(mDialogLaunchView);
@@ -983,7 +989,7 @@
@Test
public void launchMobileNetworkSettings_invalidSubId() {
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, true);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
doReturn(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
.when(spyController).getActiveAutoSwitchNonDdsSubId();
spyController.launchMobileNetworkSettings(mDialogLaunchView);
@@ -995,7 +1001,7 @@
@Test
public void setAutoDataSwitchMobileDataPolicy() {
mFlags.set(Flags.QS_SECONDARY_DATA_SUB_INFO, true);
- mInternetDialogController.setAutoDataSwitchMobileDataPolicy(SUB_ID, true);
+ mInternetDetailsContentController.setAutoDataSwitchMobileDataPolicy(SUB_ID, true);
verify(mTelephonyManager).setMobileDataPolicyEnabled(eq(
TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH), eq(true));
@@ -1006,9 +1012,9 @@
// Fake mobile data level as SIGNAL_STRENGTH_POOR(1)
when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR);
// Fake carrier network level as WIFI_LEVEL_MAX(4)
- when(mInternetDialogController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);
+ when(mInternetDetailsContentController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
spyController.getSignalStrengthDrawableWithLevel(false /* isCarrierNetworkActive */, 0);
verify(spyController).getSignalStrengthIcon(eq(0), any(), eq(SIGNAL_STRENGTH_POOR),
@@ -1020,9 +1026,9 @@
// Fake mobile data level as SIGNAL_STRENGTH_POOR(1)
when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR);
// Fake carrier network level as WIFI_LEVEL_MAX(4)
- when(mInternetDialogController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);
+ when(mInternetDetailsContentController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
spyController.getSignalStrengthDrawableWithLevel(true /* isCarrierNetworkActive */, 0);
verify(spyController).getSignalStrengthIcon(eq(0), any(), eq(WIFI_LEVEL_MAX),
@@ -1033,14 +1039,16 @@
public void getCarrierNetworkLevel_mergedCarrierEntryIsNull_returnMinLevel() {
when(mAccessPointController.getMergedCarrierEntry()).thenReturn(null);
- assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN);
+ assertThat(mInternetDetailsContentController.getCarrierNetworkLevel()).isEqualTo(
+ WIFI_LEVEL_MIN);
}
@Test
public void getCarrierNetworkLevel_getUnreachableLevel_returnMinLevel() {
when(mMergedCarrierEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE);
- assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN);
+ assertThat(mInternetDetailsContentController.getCarrierNetworkLevel()).isEqualTo(
+ WIFI_LEVEL_MIN);
}
@Test
@@ -1048,7 +1056,7 @@
for (int level = WIFI_LEVEL_MIN; level <= WIFI_LEVEL_MAX; level++) {
when(mMergedCarrierEntry.getLevel()).thenReturn(level);
- assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(level);
+ assertThat(mInternetDetailsContentController.getCarrierNetworkLevel()).isEqualTo(level);
}
}
@@ -1057,7 +1065,7 @@
Resources res = mock(Resources.class);
doReturn("Carrier network changing").when(res).getString(anyInt());
when(SubscriptionManager.getResourcesForSubId(any(), eq(SUB_ID))).thenReturn(res);
- InternetDialogController spyController = spy(mInternetDialogController);
+ InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
Map<Integer, TelephonyDisplayInfo> mSubIdTelephonyDisplayInfoMap =
spyController.mSubIdTelephonyDisplayInfoMap;
TelephonyDisplayInfo info = new TelephonyDisplayInfo(TelephonyManager.NETWORK_TYPE_LTE,
@@ -1076,14 +1084,14 @@
public void getConfiguratorQrCodeGeneratorIntentOrNull_wifiNotShareable_returnNull() {
mFlags.set(Flags.SHARE_WIFI_QS_BUTTON, true);
when(mConnectedEntry.canShare()).thenReturn(false);
- assertThat(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(
+ assertThat(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(
mConnectedEntry)).isNull();
}
@Test
public void getConfiguratorQrCodeGeneratorIntentOrNull_flagOff_returnNull() {
mFlags.set(Flags.SHARE_WIFI_QS_BUTTON, false);
when(mConnectedEntry.canShare()).thenReturn(true);
- assertThat(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(
+ assertThat(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(
mConnectedEntry)).isNull();
}
@@ -1092,7 +1100,7 @@
mFlags.set(Flags.SHARE_WIFI_QS_BUTTON, true);
when(mConnectedEntry.canShare()).thenReturn(true);
when(mConnectedEntry.getWifiConfiguration()).thenReturn(null);
- assertThat(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(
+ assertThat(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(
mConnectedEntry)).isNull();
}
@@ -1101,30 +1109,34 @@
mFlags.set(Flags.SHARE_WIFI_QS_BUTTON, true);
when(mConnectedEntry.canShare()).thenReturn(true);
when(mConnectedEntry.getWifiConfiguration()).thenReturn(mWifiConfiguration);
- assertThat(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(
+ assertThat(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(
mConnectedEntry)).isNotNull();
}
@Test
public void onStop_cleanUp() {
doReturn(SUB_ID).when(mTelephonyManager).getSubscriptionId();
- assertThat(mInternetDialogController.mSubIdTelephonyManagerMap.get(SUB_ID)).isEqualTo(
+ assertThat(
+ mInternetDetailsContentController.mSubIdTelephonyManagerMap.get(SUB_ID)).isEqualTo(
mTelephonyManager);
- assertThat(mInternetDialogController.mSubIdTelephonyCallbackMap.get(SUB_ID)).isNotNull();
- assertThat(mInternetDialogController.mCallback).isNotNull();
+ assertThat(mInternetDetailsContentController.mSubIdTelephonyCallbackMap.get(
+ SUB_ID)).isNotNull();
+ assertThat(mInternetDetailsContentController.mCallback).isNotNull();
- mInternetDialogController.onStop();
+ mInternetDetailsContentController.onStop();
verify(mTelephonyManager).unregisterTelephonyCallback(any(TelephonyCallback.class));
- assertThat(mInternetDialogController.mSubIdTelephonyDisplayInfoMap.isEmpty()).isTrue();
- assertThat(mInternetDialogController.mSubIdTelephonyManagerMap.isEmpty()).isTrue();
- assertThat(mInternetDialogController.mSubIdTelephonyCallbackMap.isEmpty()).isTrue();
- verify(mSubscriptionManager).removeOnSubscriptionsChangedListener(mInternetDialogController
- .mOnSubscriptionsChangedListener);
- verify(mAccessPointController).removeAccessPointCallback(mInternetDialogController);
+ assertThat(
+ mInternetDetailsContentController.mSubIdTelephonyDisplayInfoMap.isEmpty()).isTrue();
+ assertThat(mInternetDetailsContentController.mSubIdTelephonyManagerMap.isEmpty()).isTrue();
+ assertThat(mInternetDetailsContentController.mSubIdTelephonyCallbackMap.isEmpty()).isTrue();
+ verify(mSubscriptionManager).removeOnSubscriptionsChangedListener(
+ mInternetDetailsContentController
+ .mOnSubscriptionsChangedListener);
+ verify(mAccessPointController).removeAccessPointCallback(mInternetDetailsContentController);
verify(mConnectivityManager).unregisterNetworkCallback(
any(ConnectivityManager.NetworkCallback.class));
- assertThat(mInternetDialogController.mCallback).isNull();
+ assertThat(mInternetDetailsContentController.mCallback).isNull();
}
@Test
@@ -1132,16 +1144,16 @@
when(SubscriptionManager.getDefaultDataSubscriptionId())
.thenReturn(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- mInternetDialogController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
- assertThat(mInternetDialogController.hasActiveSubIdOnDds()).isFalse();
+ assertThat(mInternetDetailsContentController.hasActiveSubIdOnDds()).isFalse();
}
@Test
public void hasActiveSubIdOnDds_activeDds_returnTrue() {
- mInternetDialogController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
- assertThat(mInternetDialogController.hasActiveSubIdOnDds()).isTrue();
+ assertThat(mInternetDetailsContentController.hasActiveSubIdOnDds()).isTrue();
}
@Test
@@ -1153,9 +1165,9 @@
when(info.getProfileClass()).thenReturn(PROFILE_CLASS_PROVISIONING);
when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(info);
- mInternetDialogController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
- assertThat(mInternetDialogController.hasActiveSubIdOnDds()).isFalse();
+ assertThat(mInternetDetailsContentController.hasActiveSubIdOnDds()).isFalse();
}
@Test
@@ -1167,9 +1179,9 @@
when(info.isOnlyNonTerrestrialNetwork()).thenReturn(true);
when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(info);
- mInternetDialogController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
- assertFalse(mInternetDialogController.hasActiveSubIdOnDds());
+ assertFalse(mInternetDetailsContentController.hasActiveSubIdOnDds());
}
@Test
@@ -1181,9 +1193,9 @@
when(info.isOnlyNonTerrestrialNetwork()).thenReturn(false);
when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(info);
- mInternetDialogController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+ mInternetDetailsContentController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
- assertTrue(mInternetDialogController.hasActiveSubIdOnDds());
+ assertTrue(mInternetDetailsContentController.hasActiveSubIdOnDds());
}
private String getResourcesString(String name) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java
new file mode 100644
index 0000000..2385515
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java
@@ -0,0 +1,841 @@
+package com.android.systemui.qs.tiles.dialog;
+
+import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.MAX_WIFI_ENTRY_COUNT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Intent;
+import android.os.Handler;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.testing.TestableLooper;
+import android.view.View;
+import android.view.Window;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.internal.logging.UiEventLogger;
+import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.animation.DialogTransitionAnimator;
+import com.android.systemui.res.R;
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
+import com.android.systemui.statusbar.phone.SystemUIDialog;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
+import com.android.wifitrackerlib.WifiEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+
+import java.util.List;
+
+import kotlinx.coroutines.CoroutineScope;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+@UiThreadTest
+public class InternetDialogDelegateLegacyTest extends SysuiTestCase {
+
+ private static final String MOBILE_NETWORK_TITLE = "Mobile Title";
+ private static final String MOBILE_NETWORK_SUMMARY = "Mobile Summary";
+ private static final String WIFI_TITLE = "Connected Wi-Fi Title";
+ private static final String WIFI_SUMMARY = "Connected Wi-Fi Summary";
+
+ @Mock
+ private Handler mHandler;
+ @Mock
+ CoroutineScope mScope;
+ @Mock
+ private TelephonyManager mTelephonyManager;
+ @Mock
+ private WifiEntry mInternetWifiEntry;
+ @Mock
+ private List<WifiEntry> mWifiEntries;
+ @Mock
+ private InternetAdapter mInternetAdapter;
+ @Mock
+ private InternetDetailsContentController mInternetDetailsContentController;
+ @Mock
+ private KeyguardStateController mKeyguard;
+ @Mock
+ private DialogTransitionAnimator mDialogTransitionAnimator;
+ @Mock
+ private SystemUIDialog.Factory mSystemUIDialogFactory;
+ @Mock
+ private SystemUIDialog mSystemUIDialog;
+ @Mock
+ private Window mWindow;
+
+ private FakeExecutor mBgExecutor = new FakeExecutor(new FakeSystemClock());
+ private InternetDialogDelegateLegacy mInternetDialogDelegateLegacy;
+ private View mDialogView;
+ private View mSubTitle;
+ private LinearLayout mEthernet;
+ private LinearLayout mMobileDataLayout;
+ private Switch mMobileToggleSwitch;
+ private LinearLayout mWifiToggle;
+ private Switch mWifiToggleSwitch;
+ private TextView mWifiToggleSummary;
+ private LinearLayout mConnectedWifi;
+ private RecyclerView mWifiList;
+ private LinearLayout mSeeAll;
+ private LinearLayout mWifiScanNotify;
+ private TextView mAirplaneModeSummaryText;
+
+ private MockitoSession mMockitoSession;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
+ when(mInternetWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
+ when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
+ when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
+ when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
+ when(mWifiEntries.size()).thenReturn(1);
+
+ when(mInternetDetailsContentController.getMobileNetworkTitle(anyInt()))
+ .thenReturn(MOBILE_NETWORK_TITLE);
+ when(mInternetDetailsContentController.getMobileNetworkSummary(anyInt()))
+ .thenReturn(MOBILE_NETWORK_SUMMARY);
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId()).thenReturn(
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ mMockitoSession = ExtendedMockito.mockitoSession()
+ .spyStatic(WifiEnterpriseRestrictionUtils.class)
+ .startMocking();
+ when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
+ when(mSystemUIDialogFactory.create(any(SystemUIDialog.Delegate.class), eq(mContext)))
+ .thenReturn(mSystemUIDialog);
+ when(mSystemUIDialog.getContext()).thenReturn(mContext);
+ when(mSystemUIDialog.getWindow()).thenReturn(mWindow);
+ createInternetDialog();
+ }
+
+ private void createInternetDialog() {
+ mInternetDialogDelegateLegacy = new InternetDialogDelegateLegacy(
+ mContext,
+ mock(InternetDialogManager.class),
+ mInternetDetailsContentController,
+ true,
+ true,
+ true,
+ mScope,
+ mock(UiEventLogger.class),
+ mDialogTransitionAnimator,
+ mHandler,
+ mBgExecutor,
+ mKeyguard,
+ mSystemUIDialogFactory,
+ new FakeShadeDialogContextInteractor(mContext));
+ mInternetDialogDelegateLegacy.createDialog();
+ mInternetDialogDelegateLegacy.onCreate(mSystemUIDialog, null);
+ mInternetDialogDelegateLegacy.mAdapter = mInternetAdapter;
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = mInternetWifiEntry;
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = mWifiEntries.size();
+
+ mDialogView = mInternetDialogDelegateLegacy.mDialogView;
+ mSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle);
+ mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
+ mMobileDataLayout = mDialogView.requireViewById(R.id.mobile_network_layout);
+ mMobileToggleSwitch = mDialogView.requireViewById(R.id.mobile_toggle);
+ mWifiToggle = mDialogView.requireViewById(R.id.turn_on_wifi_layout);
+ mWifiToggleSwitch = mDialogView.requireViewById(R.id.wifi_toggle);
+ mWifiToggleSummary = mDialogView.requireViewById(R.id.wifi_toggle_summary);
+ mConnectedWifi = mDialogView.requireViewById(R.id.wifi_connected_layout);
+ mWifiList = mDialogView.requireViewById(R.id.wifi_list_layout);
+ mSeeAll = mDialogView.requireViewById(R.id.see_all_layout);
+ mWifiScanNotify = mDialogView.requireViewById(R.id.wifi_scan_notify_layout);
+ mAirplaneModeSummaryText = mDialogView.requireViewById(R.id.airplane_mode_summary);
+ mInternetDialogDelegateLegacy.onStart(mSystemUIDialog);
+ }
+
+ @After
+ public void tearDown() {
+ mInternetDialogDelegateLegacy.onStop(mSystemUIDialog);
+ mInternetDialogDelegateLegacy.dismissDialog();
+ mMockitoSession.finishMocking();
+ }
+
+ @Test
+ public void createInternetDialog_setAccessibilityPaneTitleToQuickSettings() {
+ assertThat(mDialogView.getAccessibilityPaneTitle())
+ .isEqualTo(mContext.getText(R.string.accessibility_desc_quick_settings));
+ }
+
+ @Test
+ public void hideWifiViews_WifiViewsGone() {
+ mInternetDialogDelegateLegacy.hideWifiViews();
+
+ assertThat(mInternetDialogDelegateLegacy.mIsProgressBarVisible).isFalse();
+ assertThat(mWifiToggle.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void updateDialog_withApmOn_internetDialogSubTitleGone() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mSubTitle.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_withApmOff_internetDialogSubTitleVisible() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mSubTitle.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOffAndHasEthernet_showEthernet() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.hasEthernet()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOffAndNoEthernet_hideEthernet() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.hasEthernet()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnAndHasEthernet_showEthernet() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.hasEthernet()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnAndNoEthernet_hideEthernet() {
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.hasEthernet()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOffAndNotCarrierNetwork_mobileDataLayoutGone() {
+ // Mobile network should be gone if the list of active subscriptionId is null.
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(false);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.hasActiveSubIdOnDds()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnWithCarrierNetworkAndWifiStatus_mobileDataLayoutVisible() {
+ // Carrier network should be visible if airplane mode ON and Wi-Fi is ON.
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnWithCarrierNetworkAndWifiStatus_mobileDataLayoutGone() {
+ // Carrier network should be gone if airplane mode ON and Wi-Fi is off.
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnAndNoCarrierNetwork_mobileDataLayoutGone() {
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(false);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnAndWifiOnHasCarrierNetwork_showAirplaneSummary() {
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ doReturn(false).when(mInternetDetailsContentController).activeNetworkIsCellular();
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOffAndWifiOnHasCarrierNetwork_notShowApmSummary() {
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ doReturn(false).when(mInternetDetailsContentController).activeNetworkIsCellular();
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOffAndHasCarrierNetwork_notShowApmSummary() {
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_apmOnAndNoCarrierNetwork_notShowApmSummary() {
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(false);
+ when(mInternetDetailsContentController.isAirplaneModeEnabled()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_mobileDataIsEnabled_checkMobileDataSwitch() {
+ doReturn(true).when(mInternetDetailsContentController).hasActiveSubIdOnDds();
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isMobileDataEnabled()).thenReturn(true);
+ mMobileToggleSwitch.setChecked(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileToggleSwitch.isChecked()).isTrue();
+ });
+ }
+
+ @Test
+ public void updateDialog_mobileDataIsNotChanged_checkMobileDataSwitch() {
+ doReturn(true).when(mInternetDetailsContentController).hasActiveSubIdOnDds();
+ when(mInternetDetailsContentController.isCarrierNetworkActive()).thenReturn(true);
+ when(mInternetDetailsContentController.isMobileDataEnabled()).thenReturn(false);
+ mMobileToggleSwitch.setChecked(false);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mMobileToggleSwitch.isChecked()).isFalse();
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndHasInternetWifi_showConnectedWifi() {
+ when(mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId()).thenReturn(1);
+ doReturn(true).when(mInternetDetailsContentController).hasActiveSubIdOnDds();
+ // The preconditions WiFi ON and Internet WiFi are already in setUp()
+ doReturn(false).when(mInternetDetailsContentController).activeNetworkIsCellular();
+
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
+ LinearLayout secondaryLayout = mDialogView.requireViewById(
+ R.id.secondary_mobile_network_layout);
+ assertThat(secondaryLayout.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndNoConnectedWifi_hideConnectedWifi() {
+ // The precondition WiFi ON is already in setUp()
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ doReturn(false).when(mInternetDetailsContentController).activeNetworkIsCellular();
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndNoWifiEntry_showWifiListAndSeeAllArea() {
+ // The precondition WiFi ON is already in setUp()
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = 0;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ // Show a blank block to fix the dialog height even if there is no WiFi list
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
+ verify(mInternetAdapter).setMaxEntriesCount(3);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndOneWifiEntry_showWifiListAndSeeAllArea() {
+ // The precondition WiFi ON is already in setUp()
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = 1;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ // Show a blank block to fix the dialog height even if there is no WiFi list
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
+ verify(mInternetAdapter).setMaxEntriesCount(3);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndHasConnectedWifi_showAllWifiAndSeeAllArea() {
+ // The preconditions WiFi ON and WiFi entries are already in setUp()
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = 0;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
+ // Show a blank block to fix the dialog height even if there is no WiFi list
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
+ verify(mInternetAdapter).setMaxEntriesCount(2);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndHasMaxWifiList_showWifiListAndSeeAll() {
+ // The preconditions WiFi ON and WiFi entries are already in setUp()
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT;
+ mInternetDialogDelegateLegacy.mHasMoreWifiEntries = true;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
+ verify(mInternetAdapter).setMaxEntriesCount(3);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOnAndHasBothWifiEntry_showBothWifiEntryAndSeeAll() {
+ // The preconditions WiFi ON and WiFi entries are already in setUp()
+ mInternetDialogDelegateLegacy.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT - 1;
+ mInternetDialogDelegateLegacy.mHasMoreWifiEntries = true;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
+ verify(mInternetAdapter).setMaxEntriesCount(2);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
+ });
+ }
+
+ @Test
+ public void updateDialog_deviceLockedAndNoConnectedWifi_showWifiToggle() {
+ // The preconditions WiFi entries are already in setUp()
+ when(mInternetDetailsContentController.isDeviceLocked()).thenReturn(true);
+ mInternetDialogDelegateLegacy.mConnectedWifiEntry = null;
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ // Show WiFi Toggle without background
+ assertThat(mWifiToggle.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mWifiToggle.getBackground()).isNull();
+ // Hide Wi-Fi networks and See all
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_deviceLockedAndHasConnectedWifi_showWifiToggleWithBackground() {
+ // The preconditions WiFi ON and WiFi entries are already in setUp()
+ when(mInternetDetailsContentController.isDeviceLocked()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ // Show WiFi Toggle with highlight background
+ assertThat(mWifiToggle.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mWifiToggle.getBackground()).isNotNull();
+ // Hide Wi-Fi networks and See all
+ assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_disallowChangeWifiState_disableWifiSwitch() {
+ mInternetDialogDelegateLegacy.dismissDialog();
+ when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(false);
+ createInternetDialog();
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ // Disable Wi-Fi switch and show restriction message in summary.
+ assertThat(mWifiToggleSwitch.isEnabled()).isFalse();
+ assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mWifiToggleSummary.getText().length()).isNotEqualTo(0);
+ });
+ }
+
+ @Test
+ public void updateDialog_allowChangeWifiState_enableWifiSwitch() {
+ mInternetDialogDelegateLegacy.dismissDialog();
+ when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
+ createInternetDialog();
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ // Enable Wi-Fi switch and hide restriction message in summary.
+ assertThat(mWifiToggleSwitch.isEnabled()).isTrue();
+ assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_showSecondaryDataSub() {
+ when(mInternetDetailsContentController.getActiveAutoSwitchNonDdsSubId()).thenReturn(1);
+ doReturn(1).when(mInternetDetailsContentController).getActiveAutoSwitchNonDdsSubId();
+ doReturn(true).when(mInternetDetailsContentController).hasActiveSubIdOnDds();
+ doReturn(false).when(mInternetDetailsContentController).isAirplaneModeEnabled();
+ clearInvocations(mInternetDetailsContentController);
+ mInternetDialogDelegateLegacy.updateDialog(true);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ LinearLayout primaryLayout = mDialogView.requireViewById(
+ R.id.mobile_network_layout);
+ LinearLayout secondaryLayout = mDialogView.requireViewById(
+ R.id.secondary_mobile_network_layout);
+
+ verify(mInternetDetailsContentController).getMobileNetworkSummary(1);
+ assertThat(primaryLayout.getBackground()).isNotEqualTo(
+ secondaryLayout.getBackground());
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiOn_hideWifiScanNotify() {
+ // The preconditions WiFi ON and WiFi entries are already in setUp()
+
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ });
+
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void updateDialog_wifiOffAndWifiScanOff_hideWifiScanNotify() {
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.isWifiScanEnabled()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ });
+
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void updateDialog_wifiOffAndWifiScanOnAndDeviceLocked_hideWifiScanNotify() {
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.isWifiScanEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.isDeviceLocked()).thenReturn(true);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ });
+
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void updateDialog_wifiOffAndWifiScanOnAndDeviceUnlocked_showWifiScanNotify() {
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false);
+ when(mInternetDetailsContentController.isWifiScanEnabled()).thenReturn(true);
+ when(mInternetDetailsContentController.isDeviceLocked()).thenReturn(false);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.VISIBLE);
+ TextView wifiScanNotifyText = mDialogView.requireViewById(
+ R.id.wifi_scan_notify_text);
+ assertThat(wifiScanNotifyText.getText().length()).isNotEqualTo(0);
+ assertThat(wifiScanNotifyText.getMovementMethod()).isNotNull();
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiIsDisabled_uncheckWifiSwitch() {
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false);
+ mWifiToggleSwitch.setChecked(true);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiToggleSwitch.isChecked()).isFalse();
+ });
+ }
+
+ @Test
+ public void updateDialog_wifiIsEnabled_checkWifiSwitch() throws Exception {
+ when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(true);
+ mWifiToggleSwitch.setChecked(false);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mWifiToggleSwitch.isChecked()).isTrue();
+ });
+ }
+
+ @Test
+ public void onClickSeeMoreButton_clickSeeAll_verifyLaunchNetworkSetting() {
+ mSeeAll.performClick();
+
+ verify(mInternetDetailsContentController).launchNetworkSetting(
+ mDialogView.requireViewById(R.id.see_all_layout));
+ }
+
+ @Test
+ public void onWifiScan_isScanTrue_setProgressBarVisibleTrue() {
+ mInternetDialogDelegateLegacy.mIsProgressBarVisible = false;
+
+ mInternetDialogDelegateLegacy.onWifiScan(true);
+
+ assertThat(mInternetDialogDelegateLegacy.mIsProgressBarVisible).isTrue();
+ }
+
+ @Test
+ public void onWifiScan_isScanFalse_setProgressBarVisibleFalse() {
+ mInternetDialogDelegateLegacy.mIsProgressBarVisible = true;
+
+ mInternetDialogDelegateLegacy.onWifiScan(false);
+
+ assertThat(mInternetDialogDelegateLegacy.mIsProgressBarVisible).isFalse();
+ }
+
+ @Test
+ public void getWifiListMaxCount_returnCountCorrectly() {
+ // Both of the Ethernet, MobileData is hidden.
+ // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
+ setNetworkVisible(false, false, false);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount()).isEqualTo(
+ MAX_WIFI_ENTRY_COUNT);
+
+ // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
+ setNetworkVisible(false, false, true);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount())
+ .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
+
+ // Only one of Ethernet, MobileData is displayed.
+ // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
+ setNetworkVisible(true, false, false);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount()).isEqualTo(
+ MAX_WIFI_ENTRY_COUNT);
+
+ setNetworkVisible(false, true, false);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount()).isEqualTo(
+ MAX_WIFI_ENTRY_COUNT);
+
+ // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
+ setNetworkVisible(true, false, true);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount())
+ .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
+
+ setNetworkVisible(false, true, true);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount())
+ .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
+
+ // Both of Ethernet, MobileData, ConnectedWiFi is displayed.
+ // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 1.
+ setNetworkVisible(true, true, false);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount())
+ .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
+
+ // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
+ setNetworkVisible(true, true, true);
+
+ assertThat(mInternetDialogDelegateLegacy.getWifiListMaxCount())
+ .isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
+ }
+
+ @Test
+ public void updateDialog_shareWifiIntentNull_hideButton() {
+ when(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(any()))
+ .thenReturn(null);
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(
+ mInternetDialogDelegateLegacy.mShareWifiButton.getVisibility())
+ .isEqualTo(View.GONE);
+ });
+ }
+
+ @Test
+ public void updateDialog_shareWifiShareable_showButton() {
+ when(mInternetDetailsContentController.getConfiguratorQrCodeGeneratorIntentOrNull(any()))
+ .thenReturn(new Intent());
+ mInternetDialogDelegateLegacy.updateDialog(false);
+ mBgExecutor.runAllReady();
+
+ mInternetDialogDelegateLegacy.mDataInternetContent.observe(
+ mInternetDialogDelegateLegacy.mLifecycleOwner, i -> {
+ assertThat(mInternetDialogDelegateLegacy.mShareWifiButton.getVisibility())
+ .isEqualTo(View.VISIBLE);
+ });
+ }
+
+ private void setNetworkVisible(boolean ethernetVisible, boolean mobileDataVisible,
+ boolean connectedWifiVisible) {
+ mEthernet.setVisibility(ethernetVisible ? View.VISIBLE : View.GONE);
+ mMobileDataLayout.setVisibility(mobileDataVisible ? View.VISIBLE : View.GONE);
+ mConnectedWifi.setVisibility(connectedWifiVisible ? View.VISIBLE : View.GONE);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java
deleted file mode 100644
index 8560b67..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java
+++ /dev/null
@@ -1,837 +0,0 @@
-package com.android.systemui.qs.tiles.dialog;
-
-import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_WIFI_ENTRY_COUNT;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.clearInvocations;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Intent;
-import android.os.Handler;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.testing.TestableLooper;
-import android.view.View;
-import android.view.Window;
-import android.widget.LinearLayout;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.annotation.UiThreadTest;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.dx.mockito.inline.extended.ExtendedMockito;
-import com.android.internal.logging.UiEventLogger;
-import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
-import com.android.systemui.SysuiTestCase;
-import com.android.systemui.animation.DialogTransitionAnimator;
-import com.android.systemui.res.R;
-import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
-import com.android.systemui.statusbar.phone.SystemUIDialog;
-import com.android.systemui.statusbar.policy.KeyguardStateController;
-import com.android.systemui.util.concurrency.FakeExecutor;
-import com.android.systemui.util.time.FakeSystemClock;
-import com.android.wifitrackerlib.WifiEntry;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.MockitoSession;
-
-import java.util.List;
-
-import kotlinx.coroutines.CoroutineScope;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@UiThreadTest
-public class InternetDialogDelegateTest extends SysuiTestCase {
-
- private static final String MOBILE_NETWORK_TITLE = "Mobile Title";
- private static final String MOBILE_NETWORK_SUMMARY = "Mobile Summary";
- private static final String WIFI_TITLE = "Connected Wi-Fi Title";
- private static final String WIFI_SUMMARY = "Connected Wi-Fi Summary";
-
- @Mock
- private Handler mHandler;
- @Mock
- CoroutineScope mScope;
- @Mock
- private TelephonyManager mTelephonyManager;
- @Mock
- private WifiEntry mInternetWifiEntry;
- @Mock
- private List<WifiEntry> mWifiEntries;
- @Mock
- private InternetAdapter mInternetAdapter;
- @Mock
- private InternetDialogController mInternetDialogController;
- @Mock
- private KeyguardStateController mKeyguard;
- @Mock
- private DialogTransitionAnimator mDialogTransitionAnimator;
- @Mock
- private SystemUIDialog.Factory mSystemUIDialogFactory;
- @Mock
- private SystemUIDialog mSystemUIDialog;
- @Mock
- private Window mWindow;
-
- private FakeExecutor mBgExecutor = new FakeExecutor(new FakeSystemClock());
- private InternetDialogDelegate mInternetDialogDelegate;
- private View mDialogView;
- private View mSubTitle;
- private LinearLayout mEthernet;
- private LinearLayout mMobileDataLayout;
- private Switch mMobileToggleSwitch;
- private LinearLayout mWifiToggle;
- private Switch mWifiToggleSwitch;
- private TextView mWifiToggleSummary;
- private LinearLayout mConnectedWifi;
- private RecyclerView mWifiList;
- private LinearLayout mSeeAll;
- private LinearLayout mWifiScanNotify;
- private TextView mAirplaneModeSummaryText;
-
- private MockitoSession mMockitoSession;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
- when(mInternetWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
- when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
- when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
- when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
- when(mWifiEntries.size()).thenReturn(1);
-
- when(mInternetDialogController.getMobileNetworkTitle(anyInt()))
- .thenReturn(MOBILE_NETWORK_TITLE);
- when(mInternetDialogController.getMobileNetworkSummary(anyInt()))
- .thenReturn(MOBILE_NETWORK_SUMMARY);
- when(mInternetDialogController.isWifiEnabled()).thenReturn(true);
- when(mInternetDialogController.getActiveAutoSwitchNonDdsSubId()).thenReturn(
- SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- mMockitoSession = ExtendedMockito.mockitoSession()
- .spyStatic(WifiEnterpriseRestrictionUtils.class)
- .startMocking();
- when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
- when(mSystemUIDialogFactory.create(any(SystemUIDialog.Delegate.class), eq(mContext)))
- .thenReturn(mSystemUIDialog);
- when(mSystemUIDialog.getContext()).thenReturn(mContext);
- when(mSystemUIDialog.getWindow()).thenReturn(mWindow);
- createInternetDialog();
- }
-
- private void createInternetDialog() {
- mInternetDialogDelegate = new InternetDialogDelegate(
- mContext,
- mock(InternetDialogManager.class),
- mInternetDialogController,
- true,
- true,
- true,
- mScope,
- mock(UiEventLogger.class),
- mDialogTransitionAnimator,
- mHandler,
- mBgExecutor,
- mKeyguard,
- mSystemUIDialogFactory,
- new FakeShadeDialogContextInteractor(mContext));
- mInternetDialogDelegate.createDialog();
- mInternetDialogDelegate.onCreate(mSystemUIDialog, null);
- mInternetDialogDelegate.mAdapter = mInternetAdapter;
- mInternetDialogDelegate.mConnectedWifiEntry = mInternetWifiEntry;
- mInternetDialogDelegate.mWifiEntriesCount = mWifiEntries.size();
-
- mDialogView = mInternetDialogDelegate.mDialogView;
- mSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle);
- mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
- mMobileDataLayout = mDialogView.requireViewById(R.id.mobile_network_layout);
- mMobileToggleSwitch = mDialogView.requireViewById(R.id.mobile_toggle);
- mWifiToggle = mDialogView.requireViewById(R.id.turn_on_wifi_layout);
- mWifiToggleSwitch = mDialogView.requireViewById(R.id.wifi_toggle);
- mWifiToggleSummary = mDialogView.requireViewById(R.id.wifi_toggle_summary);
- mConnectedWifi = mDialogView.requireViewById(R.id.wifi_connected_layout);
- mWifiList = mDialogView.requireViewById(R.id.wifi_list_layout);
- mSeeAll = mDialogView.requireViewById(R.id.see_all_layout);
- mWifiScanNotify = mDialogView.requireViewById(R.id.wifi_scan_notify_layout);
- mAirplaneModeSummaryText = mDialogView.requireViewById(R.id.airplane_mode_summary);
- mInternetDialogDelegate.onStart(mSystemUIDialog);
- }
-
- @After
- public void tearDown() {
- mInternetDialogDelegate.onStop(mSystemUIDialog);
- mInternetDialogDelegate.dismissDialog();
- mMockitoSession.finishMocking();
- }
-
- @Test
- public void createInternetDialog_setAccessibilityPaneTitleToQuickSettings() {
- assertThat(mDialogView.getAccessibilityPaneTitle())
- .isEqualTo(mContext.getText(R.string.accessibility_desc_quick_settings));
- }
-
- @Test
- public void hideWifiViews_WifiViewsGone() {
- mInternetDialogDelegate.hideWifiViews();
-
- assertThat(mInternetDialogDelegate.mIsProgressBarVisible).isFalse();
- assertThat(mWifiToggle.getVisibility()).isEqualTo(View.GONE);
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
- }
-
- @Test
- public void updateDialog_withApmOn_internetDialogSubTitleGone() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mSubTitle.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_withApmOff_internetDialogSubTitleVisible() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mSubTitle.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_apmOffAndHasEthernet_showEthernet() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- when(mInternetDialogController.hasEthernet()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_apmOffAndNoEthernet_hideEthernet() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- when(mInternetDialogController.hasEthernet()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOnAndHasEthernet_showEthernet() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- when(mInternetDialogController.hasEthernet()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mEthernet.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_apmOnAndNoEthernet_hideEthernet() {
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- when(mInternetDialogController.hasEthernet()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mEthernet.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOffAndNotCarrierNetwork_mobileDataLayoutGone() {
- // Mobile network should be gone if the list of active subscriptionId is null.
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(false);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- when(mInternetDialogController.hasActiveSubIdOnDds()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOnWithCarrierNetworkAndWifiStatus_mobileDataLayoutVisible() {
- // Carrier network should be visible if airplane mode ON and Wi-Fi is ON.
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- when(mInternetDialogController.isWifiEnabled()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_apmOnWithCarrierNetworkAndWifiStatus_mobileDataLayoutGone() {
- // Carrier network should be gone if airplane mode ON and Wi-Fi is off.
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- when(mInternetDialogController.isWifiEnabled()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOnAndNoCarrierNetwork_mobileDataLayoutGone() {
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(false);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOnAndWifiOnHasCarrierNetwork_showAirplaneSummary() {
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- doReturn(false).when(mInternetDialogController).activeNetworkIsCellular();
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileDataLayout.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_apmOffAndWifiOnHasCarrierNetwork_notShowApmSummary() {
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- doReturn(false).when(mInternetDialogController).activeNetworkIsCellular();
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOffAndHasCarrierNetwork_notShowApmSummary() {
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_apmOnAndNoCarrierNetwork_notShowApmSummary() {
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(false);
- when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mAirplaneModeSummaryText.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_mobileDataIsEnabled_checkMobileDataSwitch() {
- doReturn(true).when(mInternetDialogController).hasActiveSubIdOnDds();
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isMobileDataEnabled()).thenReturn(true);
- mMobileToggleSwitch.setChecked(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileToggleSwitch.isChecked()).isTrue();
- });
- }
-
- @Test
- public void updateDialog_mobileDataIsNotChanged_checkMobileDataSwitch() {
- doReturn(true).when(mInternetDialogController).hasActiveSubIdOnDds();
- when(mInternetDialogController.isCarrierNetworkActive()).thenReturn(true);
- when(mInternetDialogController.isMobileDataEnabled()).thenReturn(false);
- mMobileToggleSwitch.setChecked(false);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mMobileToggleSwitch.isChecked()).isFalse();
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndHasInternetWifi_showConnectedWifi() {
- when(mInternetDialogController.getActiveAutoSwitchNonDdsSubId()).thenReturn(1);
- doReturn(true).when(mInternetDialogController).hasActiveSubIdOnDds();
- // The preconditions WiFi ON and Internet WiFi are already in setUp()
- doReturn(false).when(mInternetDialogController).activeNetworkIsCellular();
-
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
- LinearLayout secondaryLayout = mDialogView.requireViewById(
- R.id.secondary_mobile_network_layout);
- assertThat(secondaryLayout.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndNoConnectedWifi_hideConnectedWifi() {
- // The precondition WiFi ON is already in setUp()
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- doReturn(false).when(mInternetDialogController).activeNetworkIsCellular();
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndNoWifiEntry_showWifiListAndSeeAllArea() {
- // The precondition WiFi ON is already in setUp()
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- mInternetDialogDelegate.mWifiEntriesCount = 0;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- // Show a blank block to fix the dialog height even if there is no WiFi list
- assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
- verify(mInternetAdapter).setMaxEntriesCount(3);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndOneWifiEntry_showWifiListAndSeeAllArea() {
- // The precondition WiFi ON is already in setUp()
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- mInternetDialogDelegate.mWifiEntriesCount = 1;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- // Show a blank block to fix the dialog height even if there is no WiFi list
- assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
- verify(mInternetAdapter).setMaxEntriesCount(3);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndHasConnectedWifi_showAllWifiAndSeeAllArea() {
- // The preconditions WiFi ON and WiFi entries are already in setUp()
- mInternetDialogDelegate.mWifiEntriesCount = 0;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
- // Show a blank block to fix the dialog height even if there is no WiFi list
- assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
- verify(mInternetAdapter).setMaxEntriesCount(2);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndHasMaxWifiList_showWifiListAndSeeAll() {
- // The preconditions WiFi ON and WiFi entries are already in setUp()
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- mInternetDialogDelegate.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT;
- mInternetDialogDelegate.mHasMoreWifiEntries = true;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
- verify(mInternetAdapter).setMaxEntriesCount(3);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_wifiOnAndHasBothWifiEntry_showBothWifiEntryAndSeeAll() {
- // The preconditions WiFi ON and WiFi entries are already in setUp()
- mInternetDialogDelegate.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT - 1;
- mInternetDialogDelegate.mHasMoreWifiEntries = true;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
- verify(mInternetAdapter).setMaxEntriesCount(2);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
- });
- }
-
- @Test
- public void updateDialog_deviceLockedAndNoConnectedWifi_showWifiToggle() {
- // The preconditions WiFi entries are already in setUp()
- when(mInternetDialogController.isDeviceLocked()).thenReturn(true);
- mInternetDialogDelegate.mConnectedWifiEntry = null;
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- // Show WiFi Toggle without background
- assertThat(mWifiToggle.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mWifiToggle.getBackground()).isNull();
- // Hide Wi-Fi networks and See all
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_deviceLockedAndHasConnectedWifi_showWifiToggleWithBackground() {
- // The preconditions WiFi ON and WiFi entries are already in setUp()
- when(mInternetDialogController.isDeviceLocked()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- // Show WiFi Toggle with highlight background
- assertThat(mWifiToggle.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mWifiToggle.getBackground()).isNotNull();
- // Hide Wi-Fi networks and See all
- assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
- assertThat(mWifiList.getVisibility()).isEqualTo(View.GONE);
- assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_disallowChangeWifiState_disableWifiSwitch() {
- mInternetDialogDelegate.dismissDialog();
- when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(false);
- createInternetDialog();
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- // Disable Wi-Fi switch and show restriction message in summary.
- assertThat(mWifiToggleSwitch.isEnabled()).isFalse();
- assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mWifiToggleSummary.getText().length()).isNotEqualTo(0);
- });
- }
-
- @Test
- public void updateDialog_allowChangeWifiState_enableWifiSwitch() {
- mInternetDialogDelegate.dismissDialog();
- when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
- createInternetDialog();
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- // Enable Wi-Fi switch and hide restriction message in summary.
- assertThat(mWifiToggleSwitch.isEnabled()).isTrue();
- assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.GONE);
- });
- }
-
- @Test
- public void updateDialog_showSecondaryDataSub() {
- when(mInternetDialogController.getActiveAutoSwitchNonDdsSubId()).thenReturn(1);
- doReturn(1).when(mInternetDialogController).getActiveAutoSwitchNonDdsSubId();
- doReturn(true).when(mInternetDialogController).hasActiveSubIdOnDds();
- doReturn(false).when(mInternetDialogController).isAirplaneModeEnabled();
- clearInvocations(mInternetDialogController);
- mInternetDialogDelegate.updateDialog(true);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- LinearLayout primaryLayout = mDialogView.requireViewById(
- R.id.mobile_network_layout);
- LinearLayout secondaryLayout = mDialogView.requireViewById(
- R.id.secondary_mobile_network_layout);
-
- verify(mInternetDialogController).getMobileNetworkSummary(1);
- assertThat(primaryLayout.getBackground()).isNotEqualTo(
- secondaryLayout.getBackground());
- });
- }
-
- @Test
- public void updateDialog_wifiOn_hideWifiScanNotify() {
- // The preconditions WiFi ON and WiFi entries are already in setUp()
-
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- });
-
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- }
-
- @Test
- public void updateDialog_wifiOffAndWifiScanOff_hideWifiScanNotify() {
- when(mInternetDialogController.isWifiEnabled()).thenReturn(false);
- when(mInternetDialogController.isWifiScanEnabled()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- });
-
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- }
-
- @Test
- public void updateDialog_wifiOffAndWifiScanOnAndDeviceLocked_hideWifiScanNotify() {
- when(mInternetDialogController.isWifiEnabled()).thenReturn(false);
- when(mInternetDialogController.isWifiScanEnabled()).thenReturn(true);
- when(mInternetDialogController.isDeviceLocked()).thenReturn(true);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- });
-
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.GONE);
- }
-
- @Test
- public void updateDialog_wifiOffAndWifiScanOnAndDeviceUnlocked_showWifiScanNotify() {
- when(mInternetDialogController.isWifiEnabled()).thenReturn(false);
- when(mInternetDialogController.isWifiScanEnabled()).thenReturn(true);
- when(mInternetDialogController.isDeviceLocked()).thenReturn(false);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiScanNotify.getVisibility()).isEqualTo(View.VISIBLE);
- TextView wifiScanNotifyText = mDialogView.requireViewById(
- R.id.wifi_scan_notify_text);
- assertThat(wifiScanNotifyText.getText().length()).isNotEqualTo(0);
- assertThat(wifiScanNotifyText.getMovementMethod()).isNotNull();
- });
- }
-
- @Test
- public void updateDialog_wifiIsDisabled_uncheckWifiSwitch() {
- when(mInternetDialogController.isWifiEnabled()).thenReturn(false);
- mWifiToggleSwitch.setChecked(true);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiToggleSwitch.isChecked()).isFalse();
- });
- }
-
- @Test
- public void updateDialog_wifiIsEnabled_checkWifiSwitch() throws Exception {
- when(mInternetDialogController.isWifiEnabled()).thenReturn(true);
- mWifiToggleSwitch.setChecked(false);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mWifiToggleSwitch.isChecked()).isTrue();
- });
- }
-
- @Test
- public void onClickSeeMoreButton_clickSeeAll_verifyLaunchNetworkSetting() {
- mSeeAll.performClick();
-
- verify(mInternetDialogController).launchNetworkSetting(
- mDialogView.requireViewById(R.id.see_all_layout));
- }
-
- @Test
- public void onWifiScan_isScanTrue_setProgressBarVisibleTrue() {
- mInternetDialogDelegate.mIsProgressBarVisible = false;
-
- mInternetDialogDelegate.onWifiScan(true);
-
- assertThat(mInternetDialogDelegate.mIsProgressBarVisible).isTrue();
- }
-
- @Test
- public void onWifiScan_isScanFalse_setProgressBarVisibleFalse() {
- mInternetDialogDelegate.mIsProgressBarVisible = true;
-
- mInternetDialogDelegate.onWifiScan(false);
-
- assertThat(mInternetDialogDelegate.mIsProgressBarVisible).isFalse();
- }
-
- @Test
- public void getWifiListMaxCount_returnCountCorrectly() {
- // Both of the Ethernet, MobileData is hidden.
- // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
- setNetworkVisible(false, false, false);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
-
- // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
- setNetworkVisible(false, false, true);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount())
- .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
-
- // Only one of Ethernet, MobileData is displayed.
- // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT.
- setNetworkVisible(true, false, false);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
-
- setNetworkVisible(false, true, false);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
-
- // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
- setNetworkVisible(true, false, true);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount())
- .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
-
- setNetworkVisible(false, true, true);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount())
- .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
-
- // Both of Ethernet, MobileData, ConnectedWiFi is displayed.
- // Then the maximum count is equal to MAX_WIFI_ENTRY_COUNT - 1.
- setNetworkVisible(true, true, false);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount())
- .isEqualTo(MAX_WIFI_ENTRY_COUNT - 1);
-
- // If the Connected Wi-Fi is displayed then reduce one of the Wi-Fi list max count.
- setNetworkVisible(true, true, true);
-
- assertThat(mInternetDialogDelegate.getWifiListMaxCount())
- .isEqualTo(MAX_WIFI_ENTRY_COUNT - 2);
- }
-
- @Test
- public void updateDialog_shareWifiIntentNull_hideButton() {
- when(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(any()))
- .thenReturn(null);
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mInternetDialogDelegate.mShareWifiButton.getVisibility()).isEqualTo(
- View.GONE);
- });
- }
-
- @Test
- public void updateDialog_shareWifiShareable_showButton() {
- when(mInternetDialogController.getConfiguratorQrCodeGeneratorIntentOrNull(any()))
- .thenReturn(new Intent());
- mInternetDialogDelegate.updateDialog(false);
- mBgExecutor.runAllReady();
-
- mInternetDialogDelegate.mDataInternetContent.observe(
- mInternetDialogDelegate.mLifecycleOwner, i -> {
- assertThat(mInternetDialogDelegate.mShareWifiButton.getVisibility())
- .isEqualTo(View.VISIBLE);
- });
- }
-
- private void setNetworkVisible(boolean ethernetVisible, boolean mobileDataVisible,
- boolean connectedWifiVisible) {
- mEthernet.setVisibility(ethernetVisible ? View.VISIBLE : View.GONE);
- mMobileDataLayout.setVisibility(mobileDataVisible ? View.VISIBLE : View.GONE);
- mConnectedWifi.setVisibility(connectedWifiVisible ? View.VISIBLE : View.GONE);
- }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
index 2d35ea5..61943f2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
@@ -65,7 +65,7 @@
import com.android.systemui.statusbar.notification.NotificationActivityStarter
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
import com.android.systemui.statusbar.notification.stack.NotificationListContainer
import com.android.systemui.statusbar.notificationLockscreenUserManager
@@ -128,7 +128,7 @@
private val shadeController = kosmos.shadeControllerSceneImpl
private val notificationLockscreenUserManager = kosmos.notificationLockscreenUserManager
private val statusBarStateController = kosmos.statusBarStateController
- private val headsUpManager = kosmos.headsUpManager
+ private val headsUpManager = kosmos.mockHeadsUpManager
private val activityStarter = kosmos.activityStarter
private val userManager = kosmos.userManager
private val activeNotificationsInteractor = kosmos.activeNotificationsInteractor
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
index 411c81d13..1fcf02d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java
@@ -36,6 +36,8 @@
import static com.google.common.truth.Truth.assertThat;
+import static kotlinx.coroutines.flow.FlowKt.flowOf;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -54,8 +56,6 @@
import static java.util.Collections.emptySet;
-import static kotlinx.coroutines.flow.FlowKt.flowOf;
-
import android.app.ActivityManager;
import android.app.IWallpaperManager;
import android.app.NotificationManager;
@@ -132,6 +132,7 @@
import com.android.systemui.notetask.NoteTaskController;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
+import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.PluginDependencyProvider;
import com.android.systemui.plugins.PluginManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -175,6 +176,7 @@
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays;
import com.android.systemui.statusbar.core.StatusBarInitializerImpl;
import com.android.systemui.statusbar.data.repository.FakeStatusBarModeRepository;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
import com.android.systemui.statusbar.data.repository.StatusBarModePerDisplayRepository;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
@@ -216,6 +218,10 @@
import com.android.wm.shell.bubbles.Bubbles;
import com.android.wm.shell.startingsurface.StartingSurface;
+import dagger.Lazy;
+
+import kotlinx.coroutines.test.TestScope;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -232,9 +238,6 @@
import javax.inject.Provider;
-import dagger.Lazy;
-import kotlinx.coroutines.test.TestScope;
-
@SmallTest
@RunWith(AndroidJUnit4.class)
@RunWithLooper(setAsMainLooper = true)
@@ -536,6 +539,8 @@
new StatusBarInitializerImpl(
mStatusBarWindowController,
mStatusBarModePerDisplayRepository,
+ mock(StatusBarConfigurationController.class),
+ mock(DarkIconDispatcher.class),
mCollapsedStatusBarFragmentProvider,
mock(StatusBarRootFactory.class),
mock(HomeStatusBarComponent.Factory.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
index 0b443675..3a99328 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
@@ -25,6 +25,7 @@
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -61,6 +62,9 @@
import com.android.systemui.statusbar.OperatorNameViewController;
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips;
import com.android.systemui.statusbar.core.StatusBarRootModernization;
+import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationControllerStore;
import com.android.systemui.statusbar.disableflags.DisableFlagsLogger;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder;
@@ -75,6 +79,8 @@
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.FakeHomeStatusBarViewModel;
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.StatusBarOperatorNameViewModel;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.statusbar.window.StatusBarWindowController;
+import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.statusbar.window.StatusBarWindowStateListener;
import com.android.systemui.util.CarrierConfigTracker;
@@ -134,6 +140,12 @@
private StatusBarWindowStateController mStatusBarWindowStateController;
@Mock
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+ @Mock private StatusBarWindowControllerStore mStatusBarWindowControllerStore;
+ @Mock private StatusBarWindowController mStatusBarWindowController;
+ @Mock private StatusBarConfigurationControllerStore mStatusBarConfigurationControllerStore;
+ @Mock private StatusBarConfigurationController mStatusBarConfigurationController;
+ @Mock private DarkIconDispatcherStore mDarkIconDispatcherStore;
+ @Mock private DarkIconDispatcher mDarkIconDispatcher;
@Rule
public final AnimatorTestRule mAnimatorTestRule = new AnimatorTestRule(this);
@@ -145,6 +157,12 @@
@Before
public void setup() {
+ when(mStatusBarWindowControllerStore.forDisplay(anyInt()))
+ .thenReturn(mStatusBarWindowController);
+ when(mStatusBarConfigurationControllerStore.forDisplay(anyInt()))
+ .thenReturn(mStatusBarConfigurationController);
+ when(mDarkIconDispatcherStore.forDisplay(anyInt())).thenReturn(mDarkIconDispatcher);
+
injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
mDependency.injectMockDependency(DarkIconDispatcher.class);
@@ -1276,11 +1294,14 @@
mDumpManager,
mStatusBarWindowStateController,
mKeyguardUpdateMonitor,
- mock(DemoModeController.class));
+ mock(DemoModeController.class),
+ mStatusBarWindowControllerStore,
+ mStatusBarConfigurationControllerStore,
+ mDarkIconDispatcherStore);
}
private void setUpDaggerComponent() {
- when(mStatusBarFragmentComponentFactory.create(any()))
+ when(mStatusBarFragmentComponentFactory.create(any(), any(), any(), any()))
.thenReturn(mHomeStatusBarComponent);
when(mHomeStatusBarComponent.getHeadsUpAppearanceController())
.thenReturn(mHeadsUpAppearanceController);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestableContext.java b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestableContext.java
index b8be6aa..64d89c5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestableContext.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestableContext.java
@@ -81,6 +81,14 @@
return super.getDisplay();
}
+ @Override
+ public int getDisplayId() {
+ if (mCustomDisplay != null) {
+ return mCustomDisplay.getDisplayId();
+ }
+ return super.getDisplayId();
+ }
+
public SysuiTestableContext createDefaultDisplayContext() {
Display display = getBaseContext().getSystemService(DisplayManager.class).getDisplays()[0];
return (SysuiTestableContext) createDisplayContext(display);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
index 6df2318c..d59b5d5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
@@ -63,7 +63,6 @@
defaultNotificationStackScrollLayoutSection = mock(),
aodNotificationIconsSection = mock(),
aodBurnInSection = mock(),
- communalTutorialIndicatorSection = mock(),
clockSection = keyguardClockSection,
smartspaceSection = keyguardSmartspaceSection,
keyguardSliceViewSection = mock(),
@@ -85,7 +84,6 @@
splitShadeGuidelines = mock(),
aodNotificationIconsSection = mock(),
aodBurnInSection = mock(),
- communalTutorialIndicatorSection = mock(),
clockSection = keyguardClockSection,
smartspaceSection = keyguardSmartspaceSection,
mediaSection = mock(),
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..c1c0807
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.glanceableHubToPrimaryBouncerTransitionViewModel by Fixture {
+ GlanceableHubToPrimaryBouncerTransitionViewModel(
+ animationFlow = keyguardTransitionAnimationFlow,
+ blurConfig = blurConfig,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..004f97d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.occludedToPrimaryBouncerTransitionViewModel by Fixture {
+ OccludedToPrimaryBouncerTransitionViewModel(
+ animationFlow = keyguardTransitionAnimationFlow,
+ blurConfig = blurConfig,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..2256c10
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.blurConfig
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.primaryBouncerToOccludedTransitionViewModel by Fixture {
+ PrimaryBouncerToOccludedTransitionViewModel(
+ animationFlow = keyguardTransitionAnimationFlow,
+ blurConfig = blurConfig,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/FakeStatusBarInitializerFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/FakeStatusBarInitializerFactory.kt
index 50a19a9..fb2e2a3 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/FakeStatusBarInitializerFactory.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/FakeStatusBarInitializerFactory.kt
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.core
+import com.android.systemui.plugins.DarkIconDispatcher
+import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController
import com.android.systemui.statusbar.data.repository.StatusBarModePerDisplayRepository
import com.android.systemui.statusbar.window.StatusBarWindowController
@@ -24,5 +26,7 @@
override fun create(
statusBarWindowController: StatusBarWindowController,
statusBarModePerDisplayRepository: StatusBarModePerDisplayRepository,
+ statusBarConfigurationController: StatusBarConfigurationController,
+ darkIconDispatcher: DarkIconDispatcher,
): StatusBarInitializer = FakeStatusBarInitializer()
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarInitializerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarInitializerKosmos.kt
index 6e99027..b8dafb2 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarInitializerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarInitializerKosmos.kt
@@ -19,7 +19,9 @@
import com.android.systemui.display.data.repository.displayRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.statusbar.data.repository.darkIconDispatcherStore
import com.android.systemui.statusbar.data.repository.fakeStatusBarModeRepository
+import com.android.systemui.statusbar.data.repository.statusBarConfigurationControllerStore
import com.android.systemui.statusbar.window.fakeStatusBarWindowControllerStore
val Kosmos.fakeStatusBarInitializer by Kosmos.Fixture { FakeStatusBarInitializer() }
@@ -39,6 +41,8 @@
fakeStatusBarInitializerFactory,
fakeStatusBarWindowControllerStore,
fakeStatusBarModeRepository,
+ statusBarConfigurationControllerStore,
+ darkIconDispatcherStore,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerKosmos.kt
new file mode 100644
index 0000000..2a2f5f9
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.headsup
+
+import com.android.internal.logging.uiEventLoggerFake
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.mockAvalancheController by Fixture { mock<AvalancheController>() }
+
+val Kosmos.avalancheController by Fixture {
+ AvalancheController(dumpManager, uiEventLoggerFake, headsUpManagerLogger, bgHandler = mock())
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerKosmos.kt
index de9485d..dfc8a68 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerKosmos.kt
@@ -16,8 +16,44 @@
package com.android.systemui.statusbar.notification.headsup
+import android.content.applicationContext
+import android.view.accessibility.accessibilityManagerWrapper
+import com.android.internal.logging.uiEventLoggerFake
+import com.android.systemui.concurrency.fakeExecutor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.plugins.statusbar.statusBarStateController
+import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.statusbar.notification.collection.provider.visualStabilityProvider
+import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager
+import com.android.systemui.statusbar.phone.keyguardBypassController
+import com.android.systemui.statusbar.policy.configurationController
+import com.android.systemui.util.concurrency.mockExecutorHandler
+import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.settings.fakeGlobalSettings
+import com.android.systemui.util.time.fakeSystemClock
-var Kosmos.headsUpManager by Fixture { mock<HeadsUpManager>() }
+var Kosmos.mockHeadsUpManager by Fixture { mock<HeadsUpManager>() }
+
+var Kosmos.headsUpManager: HeadsUpManager by Fixture {
+ HeadsUpManagerImpl(
+ applicationContext,
+ headsUpManagerLogger,
+ statusBarStateController,
+ keyguardBypassController,
+ mock<GroupMembershipManager>(),
+ visualStabilityProvider,
+ configurationController,
+ mockExecutorHandler(fakeExecutor),
+ fakeGlobalSettings,
+ fakeSystemClock,
+ fakeExecutor,
+ accessibilityManagerWrapper,
+ uiEventLoggerFake,
+ JavaAdapter(testScope.backgroundScope),
+ shadeInteractor,
+ avalancheController,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLoggerKosmos.kt
new file mode 100644
index 0000000..d595fa6
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLoggerKosmos.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.headsup
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.log.logcatLogBuffer
+import org.mockito.kotlin.mock
+
+val Kosmos.mockHeadsUpManagerLogger by Fixture { mock<HeadsUpManagerLogger>() }
+
+val Kosmos.headsUpManagerLogger by Fixture {
+ HeadsUpManagerLogger(logcatLogBuffer("HeadsUpManagerLogger"))
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/OnUserInteractionCallbackKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/OnUserInteractionCallbackKosmos.kt
index ec54c33..cc3f21b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/OnUserInteractionCallbackKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/OnUserInteractionCallbackKosmos.kt
@@ -22,14 +22,14 @@
import com.android.systemui.statusbar.notification.collection.inflation.OnUserInteractionCallbackImpl
import com.android.systemui.statusbar.notification.collection.notifCollection
import com.android.systemui.statusbar.notification.collection.render.notificationVisibilityProvider
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
var Kosmos.onUserInteractionCallback: OnUserInteractionCallback by
Kosmos.Fixture {
OnUserInteractionCallbackImpl(
notificationVisibilityProvider,
notifCollection,
- headsUpManager,
+ mockHeadsUpManager,
statusBarStateController,
visualStabilityCoordinator,
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt
index 383e31d..65f4ec1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt
@@ -21,6 +21,7 @@
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.shade.transition.largeScreenShadeInterpolator
+import com.android.systemui.statusbar.notification.headsup.mockAvalancheController
import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -33,6 +34,6 @@
/*bypassController=*/ stackScrollAlgorithmBypassController,
/*statusBarKeyguardViewManager=*/ statusBarKeyguardViewManager,
/*largeScreenShadeInterpolator=*/ largeScreenShadeInterpolator,
- /*avalancheController=*/ avalancheController,
+ /*avalancheController=*/ mockAvalancheController,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt
index a5c4bfd..67343c95 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt
@@ -18,7 +18,6 @@
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
-import com.android.systemui.statusbar.notification.headsup.AvalancheController
import com.android.systemui.util.mockito.mock
var Kosmos.stackScrollAlgorithmSectionProvider by Fixture {
@@ -28,5 +27,3 @@
var Kosmos.stackScrollAlgorithmBypassController by Fixture {
mock<StackScrollAlgorithm.BypassController>()
}
-
-var Kosmos.avalancheController by Fixture { mock<AvalancheController>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt
index e972c2c..64f16da 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt
@@ -25,14 +25,14 @@
import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
val Kosmos.windowRootViewVisibilityInteractor by Fixture {
WindowRootViewVisibilityInteractor(
scope = applicationCoroutineScope,
windowRootViewVisibilityRepository = windowRootViewVisibilityRepository,
keyguardRepository = keyguardRepository,
- headsUpManager = headsUpManager,
+ headsUpManager = mockHeadsUpManager,
powerInteractor = powerInteractor,
activeNotificationsInteractor = activeNotificationsInteractor,
) {
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/DozeServiceHostKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/DozeServiceHostKosmos.kt
index f86824a..d0bf584 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/DozeServiceHostKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/DozeServiceHostKosmos.kt
@@ -26,7 +26,7 @@
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.plugins.statusbar.statusBarStateController
import com.android.systemui.shade.domain.interactor.shadeLockscreenInteractor
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notificationShadeWindowController
import com.android.systemui.statusbar.policy.batteryController
import com.android.systemui.statusbar.policy.deviceProvisionedController
@@ -42,7 +42,7 @@
wakefulnessLifecycle,
statusBarStateController,
deviceProvisionedController,
- headsUpManager,
+ mockHeadsUpManager,
batteryController,
scrimController,
{ biometricUnlockController },
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerKosmos.kt
index 5b7f23b..9adaeff9 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerKosmos.kt
@@ -24,7 +24,7 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notificationShadeWindowController
import com.android.systemui.statusbar.policy.configurationController
import com.android.systemui.util.kotlin.JavaAdapter
@@ -36,7 +36,7 @@
applicationContext,
notificationShadeWindowController,
configurationController,
- headsUpManager,
+ mockHeadsUpManager,
shadeInteractor,
{ sceneInteractor },
JavaAdapter(testScope.backgroundScope),
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
index 6083414..7743a1c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
@@ -36,7 +36,7 @@
import com.android.systemui.statusbar.commandQueue
import com.android.systemui.statusbar.notification.collection.provider.launchFullScreenIntentProvider
import com.android.systemui.statusbar.notification.collection.render.notificationVisibilityProvider
-import com.android.systemui.statusbar.notification.headsup.headsUpManager
+import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notification.notificationTransitionAnimatorControllerProvider
import com.android.systemui.statusbar.notification.row.onUserInteractionCallback
import com.android.systemui.statusbar.notificationClickNotifier
@@ -58,7 +58,7 @@
fakeExecutorHandler,
fakeExecutor,
notificationVisibilityProvider,
- headsUpManager,
+ mockHeadsUpManager,
activityStarter,
commandQueue,
notificationClickNotifier,
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 50b6990..c9f06ac 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -10837,8 +10837,12 @@
opti++;
}
synchronized (this) {
+ // TODO: b/361161826 - Always pass in the dumpAll and let
+ // BroadcastController decide how to treat it.
+ final boolean requestDumpAll = "filter".equals(dumpPackage)
+ ? dumpAll : true;
mBroadcastController.dumpBroadcastsLocked(fd, pw, args, opti,
- /* dumpAll= */ true, dumpPackage);
+ requestDumpAll, dumpPackage);
}
} else if ("broadcast-stats".equals(cmd)) {
if (opti < args.length) {
diff --git a/services/core/java/com/android/server/am/BroadcastController.java b/services/core/java/com/android/server/am/BroadcastController.java
index aa06b7e..bfacfbb 100644
--- a/services/core/java/com/android/server/am/BroadcastController.java
+++ b/services/core/java/com/android/server/am/BroadcastController.java
@@ -47,6 +47,8 @@
import static com.android.server.am.ActivityManagerService.UPDATE_TIME_PREFERENCE_MSG;
import static com.android.server.am.ActivityManagerService.UPDATE_TIME_ZONE;
import static com.android.server.am.ActivityManagerService.checkComponentPermission;
+import static com.android.server.am.BroadcastRecord.debugLog;
+import static com.android.server.am.BroadcastRecord.intentToString;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1017,6 +1019,13 @@
android.Manifest.permission.ACCESS_BROADCAST_RESPONSE_STATS,
callingPid, callingUid, "recordResponseEventWhileInBackground");
}
+
+ if (brOptions.isDebugLogEnabled()) {
+ if (!isShellOrRoot(callingUid)
+ && (callerApp == null || !callerApp.hasActiveInstrumentation())) {
+ brOptions.setDebugLogEnabled(false);
+ }
+ }
}
// Verify that protected broadcasts are only being sent by system code,
@@ -1622,6 +1631,10 @@
}
}
while (ir < NR) {
+ // Instant Apps cannot use FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
+ if (callerInstantApp) {
+ intent.setFlags(intent.getFlags() & ~Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS);
+ }
if (receivers == null) {
receivers = new ArrayList();
}
@@ -1647,7 +1660,9 @@
callerAppProcessState, mService.mPlatformCompat);
broadcastSentEventRecord.setBroadcastRecord(r);
- if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Enqueueing ordered broadcast " + r);
+ if (DEBUG_BROADCAST || r.debugLog()) {
+ Slog.v(TAG_BROADCAST, "Enqueueing broadcast " + r);
+ }
queue.enqueueBroadcastLocked(r);
} else {
// There was nobody interested in the broadcast, but we still want to record
@@ -1657,11 +1672,19 @@
// This was an implicit broadcast... let's record it for posterity.
addBroadcastStatLocked(intent.getAction(), callerPackage, 0, 0, 0);
}
+ if (DEBUG_BROADCAST || debugLog(brOptions)) {
+ Slog.v(TAG_BROADCAST, "Skipping broadcast " + intentToString(intent)
+ + " due to no receivers");
+ }
}
return ActivityManager.BROADCAST_SUCCESS;
}
+ private boolean isShellOrRoot(int uid) {
+ return uid == SHELL_UID || uid == ROOT_UID;
+ }
+
@GuardedBy("mService")
private void scheduleCanceledResultTo(ProcessRecord resultToApp, IIntentReceiver resultTo,
Intent intent, int userId, BroadcastOptions options, int callingUid,
@@ -2178,6 +2201,8 @@
boolean printedAnything = false;
boolean onlyReceivers = false;
int filteredUid = Process.INVALID_UID;
+ boolean onlyFilter = false;
+ String dumpIntentAction = null;
if ("history".equals(dumpPackage)) {
if (opti < args.length && "-s".equals(args[opti])) {
@@ -2185,8 +2210,7 @@
}
onlyHistory = true;
dumpPackage = null;
- }
- if ("receivers".equals(dumpPackage)) {
+ } else if ("receivers".equals(dumpPackage)) {
onlyReceivers = true;
dumpPackage = null;
if (opti + 2 <= args.length) {
@@ -2205,7 +2229,23 @@
}
}
}
+ } else if ("filter".equals(dumpPackage)) {
+ onlyFilter = true;
+ dumpPackage = null;
+ if (opti + 2 <= args.length) {
+ if ("--action".equals(args[opti++])) {
+ dumpIntentAction = args[opti++];
+ if (dumpIntentAction == null) {
+ pw.printf("Missing argument for --action option\n");
+ return;
+ }
+ } else {
+ pw.printf("Unknown argument: %s\n", args[opti]);
+ return;
+ }
+ }
}
+
if (DEBUG_BROADCAST) {
Slogf.d(TAG_BROADCAST, "dumpBroadcastsLocked(): dumpPackage=%s, onlyHistory=%b, "
+ "onlyReceivers=%b, filteredUid=%d", dumpPackage, onlyHistory,
@@ -2213,7 +2253,7 @@
}
pw.println("ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)");
- if (!onlyHistory && dumpAll) {
+ if (!onlyHistory && !onlyFilter && dumpAll) {
if (mRegisteredReceivers.size() > 0) {
boolean printed = false;
Iterator it = mRegisteredReceivers.values().iterator();
@@ -2257,14 +2297,14 @@
if (!onlyReceivers) {
needSep = mBroadcastQueue.dumpLocked(fd, pw, args, opti,
- dumpConstants, dumpHistory, dumpAll, dumpPackage, needSep);
+ dumpConstants, dumpHistory, dumpAll, dumpPackage, dumpIntentAction, needSep);
printedAnything |= needSep;
}
needSep = true;
synchronized (mStickyBroadcasts) {
- if (!onlyHistory && !onlyReceivers && mStickyBroadcasts != null
+ if (!onlyHistory && !onlyReceivers && !onlyFilter && mStickyBroadcasts != null
&& dumpPackage == null) {
for (int user = 0; user < mStickyBroadcasts.size(); user++) {
if (needSep) {
@@ -2312,13 +2352,12 @@
}
}
- if (!onlyHistory && !onlyReceivers && dumpAll) {
+ if (!onlyHistory && !onlyReceivers && !onlyFilter && dumpAll) {
pw.println();
- pw.println(" Queue " + mBroadcastQueue.toString() + ": "
+ pw.println(" Queue " + mBroadcastQueue + ": "
+ mBroadcastQueue.describeStateLocked());
pw.println(" mHandler:");
mService.mHandler.dump(new PrintWriterPrinter(pw), " ");
- needSep = true;
printedAnything = true;
}
diff --git a/services/core/java/com/android/server/am/BroadcastHistory.java b/services/core/java/com/android/server/am/BroadcastHistory.java
index d6e3d43..6ddf60b 100644
--- a/services/core/java/com/android/server/am/BroadcastHistory.java
+++ b/services/core/java/com/android/server/am/BroadcastHistory.java
@@ -29,6 +29,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Objects;
/**
* Collection of recent historical broadcasts that are available to be dumped
@@ -163,10 +164,11 @@
@NeverCompile
public boolean dumpLocked(@NonNull PrintWriter pw, @Nullable String dumpPackage,
- @NonNull String queueName, @NonNull SimpleDateFormat sdf,
- boolean dumpAll, boolean needSep) {
- dumpBroadcastList(pw, sdf, mFrozenBroadcasts, "Frozen");
- dumpBroadcastList(pw, sdf, mPendingBroadcasts, "Pending");
+ @Nullable String dumpIntentAction, @NonNull String queueName,
+ @NonNull SimpleDateFormat sdf, boolean dumpAll) {
+ boolean needSep = true;
+ dumpBroadcastList(pw, sdf, mFrozenBroadcasts, dumpIntentAction, dumpAll, "Frozen");
+ dumpBroadcastList(pw, sdf, mPendingBroadcasts, dumpIntentAction, dumpAll, "Pending");
int i;
boolean printed = false;
@@ -187,6 +189,10 @@
if (dumpPackage != null && !dumpPackage.equals(r.callerPackage)) {
continue;
}
+ if (dumpIntentAction != null && !Objects.equals(dumpIntentAction,
+ r.intent.getAction())) {
+ continue;
+ }
if (!printed) {
if (needSep) {
pw.println();
@@ -195,9 +201,16 @@
pw.println(" Historical broadcasts [" + queueName + "]:");
printed = true;
}
- if (dumpAll) {
+ if (dumpIntentAction != null) {
pw.print(" Historical Broadcast " + queueName + " #");
- pw.print(i); pw.println(":");
+ pw.print(i); pw.println(":");
+ r.dump(pw, " ", sdf);
+ if (!dumpAll) {
+ break;
+ }
+ } else if (dumpAll) {
+ pw.print(" Historical Broadcast " + queueName + " #");
+ pw.print(i); pw.println(":");
r.dump(pw, " ", sdf);
} else {
pw.print(" #"); pw.print(i); pw.print(": "); pw.println(r);
@@ -213,7 +226,7 @@
}
} while (ringIndex != lastIndex);
- if (dumpPackage == null) {
+ if (dumpPackage == null && dumpIntentAction == null) {
lastIndex = ringIndex = mSummaryHistoryNext;
if (dumpAll) {
printed = false;
@@ -276,15 +289,28 @@
}
private void dumpBroadcastList(@NonNull PrintWriter pw, @NonNull SimpleDateFormat sdf,
- @NonNull ArrayList<BroadcastRecord> broadcasts, @NonNull String flavor) {
+ @NonNull ArrayList<BroadcastRecord> broadcasts, @Nullable String dumpIntentAction,
+ boolean dumpAll, @NonNull String flavor) {
pw.print(" "); pw.print(flavor); pw.println(" broadcasts:");
if (broadcasts.isEmpty()) {
pw.println(" <empty>");
} else {
+ boolean printedAnything = false;
for (int idx = broadcasts.size() - 1; idx >= 0; --idx) {
final BroadcastRecord r = broadcasts.get(idx);
+ if (dumpIntentAction != null && !Objects.equals(dumpIntentAction,
+ r.intent.getAction())) {
+ continue;
+ }
pw.print(flavor); pw.print(" broadcast #"); pw.print(idx); pw.println(":");
r.dump(pw, " ", sdf);
+ printedAnything = true;
+ if (dumpIntentAction != null && !dumpAll) {
+ break;
+ }
+ }
+ if (!printedAnything) {
+ pw.println(" <no-matches>");
}
}
}
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index 6386af6..a7d74a9 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -264,7 +264,8 @@
@GuardedBy("mService")
public abstract boolean dumpLocked(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
@NonNull String[] args, int opti, boolean dumpConstants, boolean dumpHistory,
- boolean dumpAll, @Nullable String dumpPackage, boolean needSep);
+ boolean dumpAll, @Nullable String dumpPackage, @Nullable String dumpIntentAction,
+ boolean needSep);
/**
* Execute {@link #dumpLocked} and store the output into
@@ -276,7 +277,7 @@
PrintWriter pw = new PrintWriter(out)) {
pw.print("Message: ");
pw.println(msg);
- dumpLocked(fd, pw, null, 0, false, false, false, null, false);
+ dumpLocked(fd, pw, null, 0, false, false, false, null, null, false);
pw.flush();
}
}, DropBoxManager.IS_TEXT);
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index 9e4666c..b270513 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -798,7 +798,9 @@
mService.mOomAdjuster.mCachedAppOptimizer.freezeAppAsyncImmediateLSP(r.callerApp);
return;
}
- if (DEBUG_BROADCAST) logv("Enqueuing " + r + " for " + r.receivers.size() + " receivers");
+ if (DEBUG_BROADCAST || r.debugLog()) {
+ logv("Enqueuing " + r + " for " + r.receivers.size() + " receivers");
+ }
final int cookie = traceBegin("enqueueBroadcast");
r.applySingletonPolicy(mService);
@@ -1019,7 +1021,9 @@
& Intent.FLAG_RECEIVER_BOOT_UPGRADE) != 0;
long startTimeNs = SystemClock.uptimeNanos();
- if (DEBUG_BROADCAST) logv("Scheduling " + r + " to cold " + queue);
+ if (DEBUG_BROADCAST || r.debugLog()) {
+ logv("Scheduling " + r + " to cold " + queue);
+ }
queue.app = mService.startProcessLocked(queue.processName, info, true, intentFlags,
hostingRecord, zygotePolicyFlags, allowWhileBooting, false);
if (queue.app == null) {
@@ -1176,7 +1180,9 @@
}
}
- if (DEBUG_BROADCAST) logv("Scheduling " + r + " to warm " + app);
+ if (DEBUG_BROADCAST || r.debugLog()) {
+ logv("Scheduling " + r + " to warm " + app);
+ }
setDeliveryState(queue, app, r, index, receiver, BroadcastRecord.DELIVERY_SCHEDULED,
"scheduleReceiverWarmLocked");
@@ -1562,12 +1568,17 @@
// bookkeeping to update for ordered broadcasts
if (!isDeliveryStateTerminal(oldDeliveryState)
&& isDeliveryStateTerminal(newDeliveryState)) {
- if (DEBUG_BROADCAST
- && newDeliveryState != BroadcastRecord.DELIVERY_DELIVERED) {
- logw("Delivery state of " + r + " to " + receiver
+ if ((DEBUG_BROADCAST && newDeliveryState != BroadcastRecord.DELIVERY_DELIVERED)
+ || r.debugLog()) {
+ final String msg = "Delivery state of " + r + " to " + receiver
+ " via " + app + " changed from "
+ deliveryStateToString(oldDeliveryState) + " to "
- + deliveryStateToString(newDeliveryState) + " because " + reason);
+ + deliveryStateToString(newDeliveryState) + " because " + reason;
+ if (newDeliveryState == BroadcastRecord.DELIVERY_DELIVERED) {
+ logv(msg);
+ } else {
+ logw(msg);
+ }
}
notifyFinishReceiver(queue, app, r, index, receiver);
@@ -2417,12 +2428,33 @@
@GuardedBy("mService")
public boolean dumpLocked(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
@NonNull String[] args, int opti, boolean dumpConstants, boolean dumpHistory,
- boolean dumpAll, @Nullable String dumpPackage, boolean needSep) {
+ boolean dumpAll, @Nullable String dumpPackage, @Nullable String dumpIntentAction,
+ boolean needSep) {
final long now = SystemClock.uptimeMillis();
final IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
ipw.increaseIndent();
ipw.println();
+ if (dumpIntentAction == null) {
+ dumpProcessQueues(ipw, now);
+ dumpBroadcastsWithIgnoredPolicies(ipw);
+ dumpForegroundUids(ipw);
+
+ if (dumpConstants) {
+ mFgConstants.dump(ipw);
+ mBgConstants.dump(ipw);
+ }
+ }
+
+ if (dumpHistory) {
+ final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+ needSep = mHistory.dumpLocked(ipw, dumpPackage, dumpIntentAction, mQueueName,
+ sdf, dumpAll);
+ }
+ return needSep;
+ }
+
+ private void dumpProcessQueues(@NonNull IndentingPrintWriter ipw, @UptimeMillisLong long now) {
ipw.println("📋 Per-process queues:");
ipw.increaseIndent();
for (int i = 0; i < mProcessQueues.size(); i++) {
@@ -2470,28 +2502,21 @@
}
ipw.decreaseIndent();
ipw.println();
+ }
+ private void dumpBroadcastsWithIgnoredPolicies(@NonNull IndentingPrintWriter ipw) {
ipw.println("Broadcasts with ignored delivery group policies:");
ipw.increaseIndent();
mService.dumpDeliveryGroupPolicyIgnoredActions(ipw);
ipw.decreaseIndent();
ipw.println();
+ }
+ private void dumpForegroundUids(@NonNull IndentingPrintWriter ipw) {
ipw.println("Foreground UIDs:");
ipw.increaseIndent();
ipw.println(mUidForeground);
ipw.decreaseIndent();
ipw.println();
-
- if (dumpConstants) {
- mFgConstants.dump(ipw);
- mBgConstants.dump(ipw);
- }
-
- if (dumpHistory) {
- final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- needSep = mHistory.dumpLocked(ipw, dumpPackage, mQueueName, sdf, dumpAll, needSep);
- }
- return needSep;
}
}
diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index 8d0805d..c1b0a76 100644
--- a/services/core/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
@@ -1285,31 +1285,43 @@
}
@Override
+ @NonNull
public String toString() {
if (mCachedToString == null) {
- String label = intent.getAction();
- if (label == null) {
- label = intent.toString();
- }
mCachedToString = "BroadcastRecord{" + toShortString() + "}";
}
return mCachedToString;
}
+ @NonNull
public String toShortString() {
if (mCachedToShortString == null) {
- String label = intent.getAction();
- if (label == null) {
- label = intent.toString();
- }
+ final String label = intentToString(intent);
mCachedToShortString = Integer.toHexString(System.identityHashCode(this))
+ " " + label + "/u" + userId;
}
return mCachedToShortString;
}
+ @NonNull
+ public static String intentToString(@NonNull Intent intent) {
+ String label = intent.getAction();
+ if (label == null) {
+ label = intent.toString();
+ }
+ return label;
+ }
+
+ public boolean debugLog() {
+ return debugLog(options);
+ }
+
+ public static boolean debugLog(@Nullable BroadcastOptions options) {
+ return options != null && options.isDebugLogEnabled();
+ }
+
@NeverCompile
- public void dumpDebug(ProtoOutputStream proto, long fieldId) {
+ public void dumpDebug(@NonNull ProtoOutputStream proto, long fieldId) {
long token = proto.start(fieldId);
proto.write(BroadcastRecordProto.USER_ID, userId);
proto.write(BroadcastRecordProto.INTENT_ACTION, intent.getAction());
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index 49149e1..1503d88 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -1005,6 +1005,11 @@
}
@GuardedBy(anyOf = {"mService", "mProcLock"})
+ boolean hasActiveInstrumentation() {
+ return mInstr != null;
+ }
+
+ @GuardedBy(anyOf = {"mService", "mProcLock"})
boolean isKilledByAm() {
return mKilledByAm;
}
diff --git a/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java b/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
index 461a9f3..8865039 100644
--- a/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
+++ b/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
@@ -16,8 +16,9 @@
package com.android.server.display;
+import static android.hardware.display.DisplayTopology.pxToDp;
+
import android.hardware.display.DisplayTopology;
-import android.util.DisplayMetrics;
import android.view.Display;
import android.view.DisplayInfo;
@@ -140,8 +141,7 @@
* @return The width of the display in dp
*/
private float getWidth(DisplayInfo info) {
- return info.logicalWidth * (float) DisplayMetrics.DENSITY_DEFAULT
- / info.logicalDensityDpi;
+ return pxToDp(info.logicalWidth, info.logicalDensityDpi);
}
/**
@@ -149,8 +149,7 @@
* @return The height of the display in dp
*/
private float getHeight(DisplayInfo info) {
- return info.logicalHeight * (float) DisplayMetrics.DENSITY_DEFAULT
- / info.logicalDensityDpi;
+ return pxToDp(info.logicalHeight, info.logicalDensityDpi);
}
private boolean isDisplayAllowedInTopology(DisplayInfo info) {
diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java
index 56cb6f49..febf24e 100644
--- a/services/core/java/com/android/server/input/InputSettingsObserver.java
+++ b/services/core/java/com/android/server/input/InputSettingsObserver.java
@@ -71,6 +71,9 @@
(reason) -> updateMouseSwapPrimaryButton()),
Map.entry(Settings.System.getUriFor(Settings.System.MOUSE_SCROLLING_ACCELERATION),
(reason) -> updateMouseScrollingAcceleration()),
+ Map.entry(Settings.System.getUriFor(
+ Settings.System.MOUSE_POINTER_ACCELERATION_ENABLED),
+ (reason) -> updateMouseAccelerationEnabled()),
Map.entry(Settings.System.getUriFor(Settings.System.TOUCHPAD_POINTER_SPEED),
(reason) -> updateTouchpadPointerSpeed()),
Map.entry(Settings.System.getUriFor(Settings.System.TOUCHPAD_NATURAL_SCROLLING),
@@ -191,6 +194,11 @@
InputSettings.isMouseScrollingAccelerationEnabled(mContext));
}
+ private void updateMouseAccelerationEnabled() {
+ mNative.setMouseAccelerationEnabled(
+ InputSettings.isMousePointerAccelerationEnabled(mContext));
+ }
+
private void updateTouchpadPointerSpeed() {
mNative.setTouchpadPointerSpeed(
constrainPointerSpeedValue(InputSettings.getTouchpadPointerSpeed(mContext)));
diff --git a/services/core/java/com/android/server/input/NativeInputManagerService.java b/services/core/java/com/android/server/input/NativeInputManagerService.java
index ab5a680..7dbde64 100644
--- a/services/core/java/com/android/server/input/NativeInputManagerService.java
+++ b/services/core/java/com/android/server/input/NativeInputManagerService.java
@@ -138,6 +138,8 @@
void setMouseSwapPrimaryButtonEnabled(boolean enabled);
+ void setMouseAccelerationEnabled(boolean enabled);
+
void setTouchpadPointerSpeed(int speed);
void setTouchpadNaturalScrollingEnabled(boolean enabled);
@@ -429,6 +431,9 @@
public native void setMouseSwapPrimaryButtonEnabled(boolean enabled);
@Override
+ public native void setMouseAccelerationEnabled(boolean enabled);
+
+ @Override
public native void setTouchpadPointerSpeed(int speed);
@Override
diff --git a/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java b/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
index e1f26d6..a8b61af 100644
--- a/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
+++ b/services/core/java/com/android/server/inputmethod/IInputMethodManagerImpl.java
@@ -159,6 +159,9 @@
Manifest.permission.WRITE_SECURE_SETTINGS})
void onImeSwitchButtonClickFromSystem(int displayId);
+ @PermissionVerified(Manifest.permission.TEST_INPUT_METHOD)
+ boolean shouldShowImeSwitcherButtonForTest();
+
InputMethodSubtype getCurrentInputMethodSubtype(@UserIdInt int userId);
void setAdditionalInputMethodSubtypes(String imiId, InputMethodSubtype[] subtypes,
@@ -380,6 +383,14 @@
mCallback.onImeSwitchButtonClickFromSystem(displayId);
}
+ @EnforcePermission(Manifest.permission.TEST_INPUT_METHOD)
+ @Override
+ public boolean shouldShowImeSwitcherButtonForTest() {
+ super.shouldShowImeSwitcherButtonForTest_enforcePermission();
+
+ return mCallback.shouldShowImeSwitcherButtonForTest();
+ }
+
@Override
public InputMethodSubtype getCurrentInputMethodSubtype(@UserIdInt int userId) {
return mCallback.getCurrentInputMethodSubtype(userId);
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index c653dec..1f414ac 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -4129,6 +4129,20 @@
}
}
+ /**
+ * A test API for CTS to check whether the IME Switcher button should be shown when the IME
+ * is shown.
+ */
+ @IInputMethodManagerImpl.PermissionVerified(Manifest.permission.TEST_INPUT_METHOD)
+ public boolean shouldShowImeSwitcherButtonForTest() {
+ final int callingUserId = UserHandle.getCallingUserId();
+ synchronized (ImfLock.class) {
+ final int userId = resolveImeUserIdLocked(callingUserId);
+ return shouldShowImeSwitcherLocked(
+ InputMethodService.IME_ACTIVE | InputMethodService.IME_VISIBLE, userId);
+ }
+ }
+
@NonNull
private static IllegalArgumentException getExceptionForUnknownImeId(
@Nullable String imeId) {
diff --git a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
index 49d4332..b863c96 100644
--- a/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
+++ b/services/core/java/com/android/server/inputmethod/ZeroJankProxy.java
@@ -302,6 +302,12 @@
mInner.onImeSwitchButtonClickFromSystem(displayId);
}
+ @IInputMethodManagerImpl.PermissionVerified(Manifest.permission.TEST_INPUT_METHOD)
+ @Override
+ public boolean shouldShowImeSwitcherButtonForTest() {
+ return mInner.shouldShowImeSwitcherButtonForTest();
+ }
+
@Override
public InputMethodSubtype getCurrentInputMethodSubtype(int userId) {
return mInner.getCurrentInputMethodSubtype(userId);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 7375a68..f50e8aa 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3082,16 +3082,42 @@
private void sendRegisteredOnlyBroadcast(Intent baseIntent) {
int[] userIds = mUmInternal.getProfileIds(mAmi.getCurrentUserId(), true);
- Intent intent = new Intent(baseIntent).addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
- for (int userId : userIds) {
- getContext().sendBroadcastAsUser(intent, UserHandle.of(userId), null);
- }
- // explicitly send the broadcast to all DND packages, even if they aren't currently running
- for (int userId : userIds) {
- for (String pkg : mConditionProviders.getAllowedPackages(userId)) {
- Intent pkgIntent = new Intent(baseIntent).setPackage(pkg).setFlags(
- Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
- getContext().sendBroadcastAsUser(pkgIntent, UserHandle.of(userId));
+ if (Flags.nmBinderPerfReduceZenBroadcasts()) {
+ for (int userId : userIds) {
+ Context userContext = getContext().createContextAsUser(UserHandle.of(userId), 0);
+ String[] dndPackages = mConditionProviders.getAllowedPackages(userId)
+ .toArray(new String[0]);
+
+ // We send the broadcast to all DND packages in the second step, so leave them out
+ // of this first broadcast for *running* receivers. That ensures each package only
+ // receives it once.
+ Intent registeredOnlyIntent = new Intent(baseIntent)
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ userContext.sendBroadcastMultiplePermissions(registeredOnlyIntent,
+ /* receiverPermissions= */ new String[0],
+ /* excludedPermissions= */ new String[0],
+ /* excludedPackages= */ dndPackages);
+
+ for (String pkg : dndPackages) {
+ Intent pkgIntent = new Intent(baseIntent).setPackage(pkg)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ userContext.sendBroadcast(pkgIntent);
+ }
+ }
+ } else {
+ Intent intent = new Intent(baseIntent).addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ for (int userId : userIds) {
+ getContext().sendBroadcastAsUser(intent, UserHandle.of(userId), null);
+ }
+
+ // explicitly send the broadcast to all DND packages, even if they aren't currently
+ // running
+ for (int userId : userIds) {
+ for (String pkg : mConditionProviders.getAllowedPackages(userId)) {
+ Intent pkgIntent = new Intent(baseIntent).setPackage(pkg).setFlags(
+ Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ getContext().sendBroadcastAsUser(pkgIntent, UserHandle.of(userId));
+ }
}
}
}
@@ -4276,16 +4302,16 @@
@Override
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public @NonNull String[] getTypeAdjustmentDeniedPackages() {
+ public @NonNull int[] getAllowedAdjustmentKeyTypesForPackage(String pkg) {
checkCallerIsSystemOrSystemUiOrShell();
- return mAssistants.getTypeAdjustmentDeniedPackages();
+ return mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg);
}
- @Override
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void setTypeAdjustmentForPackageState(String pkg, boolean enabled) {
+ public void setAssistantAdjustmentKeyTypeStateForPackage(String pkg, int type,
+ boolean enabled) {
checkCallerIsSystemOrSystemUiOrShell();
- mAssistants.setTypeAdjustmentForPackageState(pkg, enabled);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, type, enabled);
handleSavePolicyFile();
}
@@ -7083,7 +7109,7 @@
toRemove.add(potentialKey);
} else if (notificationClassificationUi()
&& !mAssistants.isTypeAdjustmentAllowedForPackage(
- r.getSbn().getPackageName())) {
+ r.getSbn().getPackageName(), adjustments.getInt(KEY_TYPE))) {
toRemove.add(potentialKey);
}
}
@@ -11740,7 +11766,11 @@
private static final String ATT_DENIED = "denied_adjustments";
private static final String ATT_ENABLED_TYPES = "enabled_key_types";
private static final String ATT_NAS_UNSUPPORTED = "unsupported_adjustments";
- private static final String ATT_TYPES_DENIED_APPS = "types_denied_apps";
+ // Encapsulates a list of packages and the bundle types enabled for each package.
+ private static final String TAG_TYPES_ENABLED_FOR_APPS = "types_enabled_for_apps";
+ // Encapsulates the bundle types enabled for a package.
+ private static final String ATT_APP_ENABLED_TYPES = "app_enabled_types";
+ private static final String ATT_PACKAGE = "package";
private final Object mLock = new Object();
@@ -11756,8 +11786,14 @@
@GuardedBy("mLock")
private Map<Integer, HashSet<String>> mNasUnsupported = new ArrayMap<>();
+ // Types of classifications (aka bundles) enabled/allowed for this package.
+ // If the set is NULL (or package is not in the list), default classification allow list
+ // (the global one) should be used.
+ // If the set is empty, that indicates the package explicitly has all classifications
+ // disallowed.
@GuardedBy("mLock")
- private Set<String> mClassificationTypeDeniedPackages = new ArraySet<>();
+ private Map<String, Set<Integer>> mClassificationTypePackagesEnabledTypes =
+ new ArrayMap<>();
protected ComponentName mDefaultFromConfig = null;
@@ -11958,41 +11994,88 @@
}
}
+ /**
+ * Returns whether the type adjustment is allowed for this particular package.
+ * If no package-specific restrictions have been set, defaults to the same value as
+ * isAdjustmentKeyTypeAllowed(type).
+ */
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- protected @NonNull boolean isTypeAdjustmentAllowedForPackage(String pkg) {
+ protected boolean isTypeAdjustmentAllowedForPackage(String pkg,
+ @Adjustment.Types int type) {
synchronized (mLock) {
if (notificationClassificationUi()) {
- return !mClassificationTypeDeniedPackages.contains(pkg);
+ if (mClassificationTypePackagesEnabledTypes.containsKey(pkg)) {
+ Set<Integer> enabled = mClassificationTypePackagesEnabledTypes.get(pkg);
+ if (enabled != null) {
+ return enabled.contains(type);
+ }
+ }
+ // If mClassificationTypePackagesEnabledTypes does not contain the pkg, or
+ // the stored set is null, return the default.
+ return isAdjustmentKeyTypeAllowed(type);
}
}
- return true;
+ return false;
}
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- protected @NonNull String[] getTypeAdjustmentDeniedPackages() {
+ protected @NonNull int[] getAllowedAdjustmentKeyTypesForPackage(String pkg) {
synchronized (mLock) {
if (notificationClassificationUi()) {
- return mClassificationTypeDeniedPackages.toArray(new String[0]);
+ if (mClassificationTypePackagesEnabledTypes.containsKey(pkg)) {
+ Set<Integer> enabled = mClassificationTypePackagesEnabledTypes.get(pkg);
+ if (enabled != null) {
+ // Convert Set to int[] for return.
+ int[] returnEnabled = new int[enabled.size()];
+ int i = 0;
+ for (int val: enabled) {
+ returnEnabled[i] = val;
+ i++;
+ }
+ return returnEnabled;
+ }
+ }
+ // If package is not in the map, or the value is null, return the default.
+ return getAllowedAdjustmentKeyTypes();
}
}
- return new String[]{};
+ return new int[]{};
}
/**
* Set whether a particular package can have its notification channels adjusted to have a
* different type by NotificationAssistants.
+ * Note: once this method is called to enable or disable a specific type for a package,
+ * the global default is set as the starting point, and the type is enabled/disabled from
+ * there. Future changes to the global default will not apply automatically to this package.
*/
@FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void setTypeAdjustmentForPackageState(String pkg, boolean enabled) {
+ public void setAssistantAdjustmentKeyTypeStateForPackage(String pkg,
+ @Adjustment.Types int type,
+ boolean enabled) {
if (!notificationClassificationUi()) {
return;
}
synchronized (mLock) {
- if (enabled) {
- mClassificationTypeDeniedPackages.remove(pkg);
- } else {
- mClassificationTypeDeniedPackages.add(pkg);
+ Set<Integer> enabledTypes = null;
+ if (mClassificationTypePackagesEnabledTypes.containsKey(pkg)) {
+ enabledTypes = mClassificationTypePackagesEnabledTypes.get(pkg);
}
+ if (enabledTypes == null) {
+ // Use global default to start.
+ enabledTypes = new ArraySet<Integer>();
+ // Convert from int[] to Set<Integer>
+ for (int value : getAllowedAdjustmentKeyTypes()) {
+ enabledTypes.add(value);
+ }
+ }
+
+ if (enabled) {
+ enabledTypes.add(type);
+ } else {
+ enabledTypes.remove(type);
+ }
+ mClassificationTypePackagesEnabledTypes.put(pkg, enabledTypes);
}
}
@@ -12459,16 +12542,25 @@
TextUtils.join(",", mAllowedAdjustmentKeyTypes));
out.endTag(null, ATT_ENABLED_TYPES);
if (notificationClassificationUi()) {
- out.startTag(null, ATT_TYPES_DENIED_APPS);
- out.attribute(null, ATT_TYPES,
- TextUtils.join(",", mClassificationTypeDeniedPackages));
- out.endTag(null, ATT_TYPES_DENIED_APPS);
+ out.startTag(null, TAG_TYPES_ENABLED_FOR_APPS);
+ for (String pkg: mClassificationTypePackagesEnabledTypes.keySet()) {
+ Set<Integer> allowedTypes =
+ mClassificationTypePackagesEnabledTypes.get(pkg);
+ if (allowedTypes != null) {
+ out.startTag(null, ATT_APP_ENABLED_TYPES);
+ out.attribute(null, ATT_PACKAGE, pkg);
+ out.attribute(null, ATT_TYPES, TextUtils.join(",", allowedTypes));
+ out.endTag(null, ATT_APP_ENABLED_TYPES);
+ }
+ }
+ out.endTag(null, TAG_TYPES_ENABLED_FOR_APPS);
}
}
}
@Override
- protected void readExtraTag(String tag, TypedXmlPullParser parser) throws IOException {
+ protected void readExtraTag(String tag, TypedXmlPullParser parser) throws IOException,
+ XmlPullParserException {
if (!notificationClassification()) {
return;
}
@@ -12495,12 +12587,25 @@
}
}
}
- } else if (notificationClassificationUi() && ATT_TYPES_DENIED_APPS.equals(tag)) {
- final String apps = XmlUtils.readStringAttribute(parser, ATT_TYPES);
+ } else if (TAG_TYPES_ENABLED_FOR_APPS.equals(tag)) {
+ final int appsOuterDepth = parser.getDepth();
synchronized (mLock) {
- mClassificationTypeDeniedPackages.clear();
- if (!TextUtils.isEmpty(apps)) {
- mClassificationTypeDeniedPackages.addAll(Arrays.asList(apps.split(",")));
+ mClassificationTypePackagesEnabledTypes.clear();
+ while (XmlUtils.nextElementWithin(parser, appsOuterDepth)) {
+ if (!ATT_APP_ENABLED_TYPES.equals(parser.getName())) {
+ continue;
+ }
+ final String app = XmlUtils.readStringAttribute(parser, ATT_PACKAGE);
+ Set<Integer> allowedTypes = new ArraySet<>();
+ final String typesString = XmlUtils.readStringAttribute(parser, ATT_TYPES);
+ if (!TextUtils.isEmpty(typesString)) {
+ allowedTypes = Arrays.stream(typesString.split(","))
+ .map(Integer::valueOf)
+ .collect(Collectors.toSet());
+ }
+ // Empty type list is allowed, because empty type list signifies the user
+ // has manually cleared the package of allowed types.
+ mClassificationTypePackagesEnabledTypes.put(app, allowedTypes);
}
}
}
diff --git a/services/core/java/com/android/server/notification/flags.aconfig b/services/core/java/com/android/server/notification/flags.aconfig
index 65a38ae..f15c23e 100644
--- a/services/core/java/com/android/server/notification/flags.aconfig
+++ b/services/core/java/com/android/server/notification/flags.aconfig
@@ -187,3 +187,13 @@
description: "Enables sound uri with vibration source in notification channel"
bug: "351975435"
}
+
+flag {
+ name: "nm_binder_perf_reduce_zen_broadcasts"
+ namespace: "systemui"
+ description: "Don't send duplicate zen-related (policy changed, etc) broadcasts"
+ bug: "324376849"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/pm/BroadcastHelper.java b/services/core/java/com/android/server/pm/BroadcastHelper.java
index 676c6fa..3660607 100644
--- a/services/core/java/com/android/server/pm/BroadcastHelper.java
+++ b/services/core/java/com/android/server/pm/BroadcastHelper.java
@@ -360,13 +360,17 @@
@Nullable SparseArray<int[]> broadcastAllowList,
@NonNull AndroidPackage pkg,
@NonNull String[] sharedUidPackages,
- @NonNull String reasonForTrace) {
+ @NonNull String reasonForTrace,
+ int callingUidForTrace) {
final boolean isForWholeApp = componentNames.contains(packageName);
+ final String callingPackageNameForTrace = mContext.getPackageManager().getNameForUid(
+ callingUidForTrace);
if (isForWholeApp || !android.content.pm.Flags.reduceBroadcastsForComponentStateChanges()) {
tracePackageChangedBroadcastEvent(
android.content.pm.Flags.reduceBroadcastsForComponentStateChanges(),
reasonForTrace, packageName, "<implicit>" /* targetPackageName */,
- "whole" /* targetComponent */, componentNames.size());
+ "whole" /* targetComponent */, componentNames.size(),
+ callingPackageNameForTrace);
sendPackageChangedBroadcastWithPermissions(packageName, dontKillApp, componentNames,
packageUid, reason, userIds, instantUserIds, broadcastAllowList,
null /* targetPackageName */, null /* requiredPermissions */);
@@ -390,7 +394,7 @@
if (!TextUtils.equals(packageName, "android")) {
tracePackageChangedBroadcastEvent(true /* applyFlag */, reasonForTrace, packageName,
"android" /* targetPackageName */, "notExported" /* targetComponent */,
- notExportedComponentNames.size());
+ notExportedComponentNames.size(), callingPackageNameForTrace);
sendPackageChangedBroadcastWithPermissions(packageName, dontKillApp,
notExportedComponentNames, packageUid, reason, userIds, instantUserIds,
broadcastAllowList, "android" /* targetPackageName */,
@@ -401,7 +405,7 @@
// Second, send the PACKAGE_CHANGED broadcast to the application itself.
tracePackageChangedBroadcastEvent(true /* applyFlag */, reasonForTrace, packageName,
packageName /* targetPackageName */, "notExported" /* targetComponent */,
- notExportedComponentNames.size());
+ notExportedComponentNames.size(), callingPackageNameForTrace);
sendPackageChangedBroadcastWithPermissions(packageName, dontKillApp,
notExportedComponentNames, packageUid, reason, userIds, instantUserIds,
broadcastAllowList, packageName /* targetPackageName */,
@@ -415,7 +419,7 @@
}
tracePackageChangedBroadcastEvent(true /* applyFlag */, reasonForTrace, packageName,
sharedPackage /* targetPackageName */, "notExported" /* targetComponent */,
- notExportedComponentNames.size());
+ notExportedComponentNames.size(), callingPackageNameForTrace);
sendPackageChangedBroadcastWithPermissions(packageName, dontKillApp,
notExportedComponentNames, packageUid, reason, userIds, instantUserIds,
broadcastAllowList, sharedPackage /* targetPackageName */,
@@ -427,7 +431,7 @@
if (!exportedComponentNames.isEmpty()) {
tracePackageChangedBroadcastEvent(true /* applyFlag */, reasonForTrace, packageName,
"<implicit>" /* targetPackageName */, "exported" /* targetComponent */,
- exportedComponentNames.size());
+ exportedComponentNames.size(), callingPackageNameForTrace);
sendPackageChangedBroadcastWithPermissions(packageName, dontKillApp,
exportedComponentNames, packageUid, reason, userIds, instantUserIds,
broadcastAllowList, null /* targetPackageName */,
@@ -770,7 +774,8 @@
dontKillApp,
new ArrayList<>(Collections.singletonList(pkg.getPackageName())),
pkg.getUid(), null /* reason */,
- "static_shared_library_changed" /* reasonForTrace */);
+ "static_shared_library_changed" /* reasonForTrace */,
+ Process.SYSTEM_UID);
}
}
}
@@ -962,7 +967,8 @@
@NonNull ArrayList<String> componentNames,
int packageUid,
@NonNull String reason,
- @NonNull String reasonForTrace) {
+ @NonNull String reasonForTrace,
+ int callingUidForTrace) {
PackageStateInternal setting = snapshot.getPackageStateInternal(packageName,
Process.SYSTEM_UID);
if (setting == null || setting.getPkg() == null) {
@@ -980,7 +986,7 @@
mHandler.post(() -> sendPackageChangedBroadcastInternal(
packageName, dontKillApp, componentNames, packageUid, reason, userIds,
instantUserIds, broadcastAllowList, setting.getPkg(),
- sharedUserPackages, reasonForTrace));
+ sharedUserPackages, reasonForTrace, callingUidForTrace));
mPackageMonitorCallbackHelper.notifyPackageChanged(packageName, dontKillApp, componentNames,
packageUid, reason, userIds, instantUserIds, broadcastAllowList, mHandler);
}
@@ -1277,7 +1283,7 @@
private static void tracePackageChangedBroadcastEvent(boolean applyFlag,
@NonNull String reasonForTrace, @Nullable String packageName,
@Nullable String targetPackageName, @Nullable String targetComponent,
- int componentSize) {
+ int componentSize, @Nullable String callingPackageNameForTrace) {
if (!Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
return;
@@ -1291,6 +1297,7 @@
builder.append(",tpn="); builder.append(targetPackageName);
builder.append(",tc="); builder.append(targetComponent);
builder.append(",cs="); builder.append(componentSize);
+ builder.append(",cpnft="); builder.append(callingPackageNameForTrace);
Trace.instant(Trace.TRACE_TAG_SYSTEM_SERVER, builder.toString());
}
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index b48b39c..85b92c7 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -2983,7 +2983,7 @@
}
}
- public void sendPendingBroadcasts(String reasonForTrace) {
+ public void sendPendingBroadcasts(String reasonForTrace, int callingUidForTrace) {
String[] packages;
ArrayList<String>[] components;
int numBroadcasts = 0, numUsers;
@@ -3028,7 +3028,7 @@
for (int i = 0; i < numBroadcasts; i++) {
mBroadcastHelper.sendPackageChangedBroadcast(snapshot, packages[i],
true /* dontKillApp */, components[i], uids[i], null /* reason */,
- reasonForTrace);
+ reasonForTrace, callingUidForTrace);
}
}
diff --git a/services/core/java/com/android/server/pm/PackageHandler.java b/services/core/java/com/android/server/pm/PackageHandler.java
index 0a06704..bc03b10b 100644
--- a/services/core/java/com/android/server/pm/PackageHandler.java
+++ b/services/core/java/com/android/server/pm/PackageHandler.java
@@ -76,7 +76,7 @@
void doHandleMessage(Message msg) {
switch (msg.what) {
case SEND_PENDING_BROADCAST: {
- mPm.sendPendingBroadcasts((String) msg.obj);
+ mPm.sendPendingBroadcasts((String) msg.obj, msg.arg1);
break;
}
case POST_INSTALL: {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index a0bbc45..aaa4fdf 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3503,7 +3503,8 @@
* if the resetEnabledSettingsOnAppDataCleared is {@code true}.
*/
@GuardedBy("mLock")
- private void resetComponentEnabledSettingsIfNeededLPw(String packageName, int userId) {
+ private void resetComponentEnabledSettingsIfNeededLPw(String packageName, int userId,
+ int callingUid) {
final AndroidPackage pkg = packageName != null ? mPackages.get(packageName) : null;
if (pkg == null || !pkg.isResetEnabledSettingsOnAppDataCleared()) {
return;
@@ -3542,9 +3543,8 @@
mPendingBroadcasts.addComponents(userId, packageName, updatedComponents);
if (!mHandler.hasMessages(SEND_PENDING_BROADCAST)) {
mHandler.sendMessageDelayed(
- mHandler.obtainMessage(SEND_PENDING_BROADCAST,
- "reset_component_state_changed" /* obj */),
- BROADCAST_DELAY);
+ mHandler.obtainMessage(SEND_PENDING_BROADCAST, callingUid, 0 /* arg2 */,
+ "reset_component_state_changed" /* obj */), BROADCAST_DELAY);
}
}
@@ -3841,8 +3841,9 @@
mPendingBroadcasts.addComponent(userId, componentPkgName, componentName.getClassName());
if (!mHandler.hasMessages(SEND_PENDING_BROADCAST)) {
- mHandler.sendMessageDelayed(mHandler.obtainMessage(SEND_PENDING_BROADCAST,
- "component_label_icon_changed" /* obj */), BROADCAST_DELAY);
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(SEND_PENDING_BROADCAST, callingUid, 0 /* arg2 */,
+ "component_label_icon_changed" /* obj */), BROADCAST_DELAY);
}
}
@@ -4101,8 +4102,10 @@
final long broadcastDelay = SystemClock.uptimeMillis() > mServiceStartWithDelay
? BROADCAST_DELAY
: BROADCAST_DELAY_DURING_STARTUP;
- mHandler.sendMessageDelayed(mHandler.obtainMessage(SEND_PENDING_BROADCAST,
- "component_state_changed" /* obj */), broadcastDelay);
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(SEND_PENDING_BROADCAST, callingUid,
+ 0 /* arg2 */, "component_state_changed" /* obj */),
+ broadcastDelay);
}
}
}
@@ -4121,7 +4124,7 @@
userId, pkgSettings.get(packageName).getAppId());
mBroadcastHelper.sendPackageChangedBroadcast(newSnapshot, packageName,
false /* dontKillApp */, components, packageUid, null /* reason */,
- "component_state_changed" /* reasonForTrace */);
+ "component_state_changed" /* reasonForTrace */, callingUid);
}
} finally {
Binder.restoreCallingIdentity(callingId);
@@ -4349,7 +4352,8 @@
true /* dontKillApp */,
new ArrayList<>(Collections.singletonList(pkg.getPackageName())),
pkg.getUid(),
- Intent.ACTION_OVERLAY_CHANGED, "overlay_changed" /* reasonForTrace */);
+ Intent.ACTION_OVERLAY_CHANGED, "overlay_changed" /* reasonForTrace */,
+ Process.SYSTEM_UID);
}
}, overlayFilter);
@@ -4847,7 +4851,8 @@
mInstantAppRegistry.deleteInstantApplicationMetadata(packageName, userId);
synchronized (mLock) {
if (succeeded) {
- resetComponentEnabledSettingsIfNeededLPw(packageName, userId);
+ resetComponentEnabledSettingsIfNeededLPw(packageName, userId,
+ callingUid);
}
}
}
@@ -6357,7 +6362,8 @@
@Override
public void setMimeGroup(String packageName, String mimeGroup, List<String> mimeTypes) {
final Computer snapshot = snapshotComputer();
- enforceOwnerRights(snapshot, packageName, Binder.getCallingUid());
+ final int callingUid = Binder.getCallingUid();
+ enforceOwnerRights(snapshot, packageName, callingUid);
mimeTypes = CollectionUtils.emptyIfNull(mimeTypes);
for (int i = 0; i < mimeTypes.size(); i++) {
if (mimeTypes.get(i).length() > 255) {
@@ -6401,7 +6407,7 @@
final int packageUid = UserHandle.getUid(userIds[i], appId);
mBroadcastHelper.sendPackageChangedBroadcast(snapShot, packageName,
true /* dontKillApp */, components, packageUid, reason,
- "mime_group_changed" /* reasonForTrace */);
+ "mime_group_changed" /* reasonForTrace */, callingUid);
}
}
});
@@ -8196,8 +8202,8 @@
mRemovePackageHelper.cleanUpForMoveInstall(volumeUuid, packageName, fromCodePath);
}
- void sendPendingBroadcasts(String reasonForTrace) {
- mInstallPackageHelper.sendPendingBroadcasts(reasonForTrace);
+ void sendPendingBroadcasts(String reasonForTrace, int callingUidForTrace) {
+ mInstallPackageHelper.sendPendingBroadcasts(reasonForTrace, callingUidForTrace);
}
void handlePackagePostInstall(@NonNull InstallRequest request, boolean launchedForRestore) {
diff --git a/services/core/java/com/android/server/power/hint/HintManagerService.java b/services/core/java/com/android/server/power/hint/HintManagerService.java
index c4e4c42..1726f0d 100644
--- a/services/core/java/com/android/server/power/hint/HintManagerService.java
+++ b/services/core/java/com/android/server/power/hint/HintManagerService.java
@@ -1594,12 +1594,9 @@
}
halParams.tids = params.tids;
}
- if (halParams.calculationWindowMillis
- == mDefaultCpuHeadroomCalculationWindowMillis) {
- synchronized (mCpuHeadroomLock) {
- final CpuHeadroomResult res = mCpuHeadroomCache.get(halParams);
- if (res != null) return res;
- }
+ synchronized (mCpuHeadroomLock) {
+ final CpuHeadroomResult res = mCpuHeadroomCache.get(halParams);
+ if (res != null) return res;
}
final boolean shouldCheckUserModeCpuTime =
mEnforceCpuHeadroomUserModeCpuTimeCheck
@@ -1622,11 +1619,8 @@
Slog.wtf(TAG, "CPU headroom from Power HAL is invalid");
return null;
}
- if (halParams.calculationWindowMillis
- == mDefaultCpuHeadroomCalculationWindowMillis) {
- synchronized (mCpuHeadroomLock) {
- mCpuHeadroomCache.add(halParams, result);
- }
+ synchronized (mCpuHeadroomLock) {
+ mCpuHeadroomCache.add(halParams, result);
}
if (shouldCheckUserModeCpuTime) {
synchronized (mCpuHeadroomLock) {
@@ -1737,12 +1731,9 @@
final GpuHeadroomParams halParams = new GpuHeadroomParams();
halParams.calculationType = params.calculationType;
halParams.calculationWindowMillis = params.calculationWindowMillis;
- if (halParams.calculationWindowMillis
- == mDefaultGpuHeadroomCalculationWindowMillis) {
- synchronized (mGpuHeadroomLock) {
- final GpuHeadroomResult res = mGpuHeadroomCache.get(halParams);
- if (res != null) return res;
- }
+ synchronized (mGpuHeadroomLock) {
+ final GpuHeadroomResult res = mGpuHeadroomCache.get(halParams);
+ if (res != null) return res;
}
// return from HAL directly
try {
@@ -1751,11 +1742,8 @@
Slog.wtf(TAG, "GPU headroom from Power HAL is invalid");
return null;
}
- if (halParams.calculationWindowMillis
- == mDefaultGpuHeadroomCalculationWindowMillis) {
- synchronized (mGpuHeadroomLock) {
- mGpuHeadroomCache.add(halParams, headroom);
- }
+ synchronized (mGpuHeadroomLock) {
+ mGpuHeadroomCache.add(halParams, headroom);
}
return headroom;
} catch (RemoteException e) {
diff --git a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
index 6709e3a..a318c4b 100644
--- a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
+++ b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.Manifest.permission.MANAGE_ACTIVITY_TASKS;
import static android.app.ActivityManager.INTENT_SENDER_ACTIVITY;
import static android.app.ActivityOptions.ANIM_OPEN_CROSS_PROFILE_APPS;
import static android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
@@ -35,6 +36,7 @@
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME;
import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
@@ -510,6 +512,14 @@
}
if (mComponentSpecified) {
+ Slog.w(TAG, "Starting home with component specified, uid=" + mCallingUid);
+ if (mService.isCallerRecents(mCallingUid)
+ || ActivityTaskManagerService.checkPermission(MANAGE_ACTIVITY_TASKS,
+ mCallingPid, mCallingUid) == PERMISSION_GRANTED) {
+ // Allow home component specified from trusted callers.
+ return false;
+ }
+
final ComponentName homeComponent = mIntent.getComponent();
final Intent homeIntent = mService.getHomeIntent();
final ActivityInfo aInfo = mService.mRootWindowContainer.resolveHomeActivity(
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
index f9a06e2..4c2d849 100644
--- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
+++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
@@ -50,6 +50,7 @@
import static com.android.window.flags.Flags.balRequireOptInByPendingIntentCreator;
import static com.android.window.flags.Flags.balShowToastsBlocked;
import static com.android.window.flags.Flags.balStrictModeRo;
+import static com.android.window.flags.Flags.balStrictModeGracePeriod;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import static java.util.Objects.requireNonNull;
@@ -90,6 +91,7 @@
import com.android.server.UiThread;
import com.android.server.am.PendingIntentRecord;
import com.android.server.wm.BackgroundLaunchProcessController.BalCheckConfiguration;
+import com.android.window.flags.Flags;
import java.lang.annotation.Retention;
import java.util.ArrayList;
@@ -515,7 +517,9 @@
return !callerExplicitOptOut();
}
return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
+ != MODE_BACKGROUND_ACTIVITY_START_DENIED
+ && mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
+ != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
}
public boolean realCallerExplicitOptInOrAutoOptIn() {
@@ -523,7 +527,9 @@
return !realCallerExplicitOptOut();
}
return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
+ != MODE_BACKGROUND_ACTIVITY_START_DENIED
+ && mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
+ != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
}
public boolean callerExplicitOptOut() {
@@ -1650,18 +1656,27 @@
return bas;
}
- TaskFragment adjacentTaskFragment = taskFragment.getAdjacentTaskFragment();
- if (adjacentTaskFragment == null) {
+ if (!taskFragment.hasAdjacentTaskFragment()) {
return bas;
}
- // Check the second fragment.
- topActivity = adjacentTaskFragment.getActivity(topOfStackPredicate);
- if (topActivity == null) {
- return bas;
+ // Check the adjacent fragment.
+ if (!Flags.allowMultipleAdjacentTaskFragments()) {
+ TaskFragment adjacentTaskFragment = taskFragment.getAdjacentTaskFragment();
+ topActivity = adjacentTaskFragment.getActivity(topOfStackPredicate);
+ if (topActivity == null) {
+ return bas;
+ }
+ return checkCrossUidActivitySwitchFromBelow(topActivity, uid, bas);
}
-
- return checkCrossUidActivitySwitchFromBelow(topActivity, uid, bas);
+ final BlockActivityStart[] out = { bas };
+ taskFragment.forOtherAdjacentTaskFragments(adjacentTaskFragment -> {
+ final ActivityRecord top = adjacentTaskFragment.getActivity(topOfStackPredicate);
+ if (top != null) {
+ out[0] = checkCrossUidActivitySwitchFromBelow(top, uid, out[0]);
+ }
+ });
+ return out[0];
}
/**
@@ -1898,7 +1913,14 @@
(state.mOriginatingPendingIntent != null));
}
- logIfOnlyAllowedBy(finalVerdict, state, BAL_ALLOW_GRACE_PERIOD);
+ if (logIfOnlyAllowedBy(finalVerdict, state, BAL_ALLOW_GRACE_PERIOD)) {
+ if (balStrictModeRo() && balStrictModeGracePeriod()) {
+ String abortDebugMessage = "Activity start is only allowed by grace period. "
+ + "This may stop working in the future. "
+ + "intent: " + state.mIntent;
+ strictModeLaunchAborted(state.mRealCallingUid, abortDebugMessage);
+ }
+ }
logIfOnlyAllowedBy(finalVerdict, state, BAL_ALLOW_NON_APP_VISIBLE_WINDOW);
if (balImprovedMetrics()) {
@@ -1942,24 +1964,29 @@
* Logs details about the activity starts if the only reason it is allowed is the provided
* {@code balCode}.
*/
- private static void logIfOnlyAllowedBy(BalVerdict finalVerdict, BalState state, int balCode) {
+ private static boolean logIfOnlyAllowedBy(BalVerdict finalVerdict, BalState state,
+ int balCode) {
if (finalVerdict.getRawCode() == balCode) {
if (state.realCallerExplicitOptInOrAutoOptIn()
&& state.mResultForRealCaller != null
&& state.mResultForRealCaller.allows()
&& state.mResultForRealCaller.getRawCode() != balCode) {
// real caller could allow with a different exemption
+ return false;
} else if (state.callerExplicitOptInOrAutoOptIn()
&& state.mResultForCaller != null
&& state.mResultForCaller.allows()
&& state.mResultForCaller.getRawCode() != balCode) {
// caller could allow with a different exemption
+ return false;
} else {
// log to determine grace period length distribution
Slog.wtf(TAG, "Activity start ONLY allowed by " + balCodeToString(balCode) + " "
+ finalVerdict.mMessage + ": " + state);
+ return true;
}
}
+ return false;
}
@VisibleForTesting
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 09214cd..5fe1ceb 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2913,6 +2913,7 @@
// contains another opaque activity.
if (mFixedRotationLaunchingApp != null && mFixedRotationLaunchingApp.isVisible()
&& !mTransitionController.isCollecting()
+ && !mTransitionController.isPlayingTarget(mFixedRotationLaunchingApp)
&& !mAtmService.mBackNavigationController.isMonitoringFinishTransition()) {
final Transition finishTransition = mTransitionController.mFinishingTransition;
if (finishTransition == null || !finishTransition.mParticipants.contains(
diff --git a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
index 63af5c6..a017a11 100644
--- a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
+++ b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
@@ -23,6 +23,8 @@
import android.annotation.Nullable;
import android.util.Slog;
+import com.android.window.flags.Flags;
+
import java.util.ArrayList;
/** Helper class to ensure activities are in the right visible state for a container. */
@@ -110,21 +112,37 @@
if (adjacentTaskFragments != null && adjacentTaskFragments.contains(
childTaskFragment)) {
- if (!childTaskFragment.isTranslucent(starting)
- && !childTaskFragment.getAdjacentTaskFragment().isTranslucent(
- starting)) {
+ final boolean isTranslucent;
+ if (Flags.allowMultipleAdjacentTaskFragments()) {
+ isTranslucent = childTaskFragment.isTranslucent(starting)
+ || childTaskFragment.forOtherAdjacentTaskFragments(
+ adjacentTaskFragment -> {
+ return adjacentTaskFragment.isTranslucent(starting);
+ });
+ } else {
+ isTranslucent = childTaskFragment.isTranslucent(starting)
+ || childTaskFragment.getAdjacentTaskFragment()
+ .isTranslucent(starting);
+ }
+ if (!isTranslucent) {
// Everything behind two adjacent TaskFragments are occluded.
mBehindFullyOccludedContainer = true;
}
continue;
}
- final TaskFragment adjacentTaskFrag = childTaskFragment.getAdjacentTaskFragment();
- if (adjacentTaskFrag != null) {
+ if (childTaskFragment.hasAdjacentTaskFragment()) {
if (adjacentTaskFragments == null) {
adjacentTaskFragments = new ArrayList<>();
}
- adjacentTaskFragments.add(adjacentTaskFrag);
+ if (Flags.allowMultipleAdjacentTaskFragments()) {
+ final ArrayList<TaskFragment> adjacentTfs = adjacentTaskFragments;
+ childTaskFragment.forOtherAdjacentTaskFragments(adjacentTf -> {
+ adjacentTfs.add(adjacentTf);
+ });
+ } else {
+ adjacentTaskFragments.add(childTaskFragment.getAdjacentTaskFragment());
+ }
}
} else if (child.asActivityRecord() != null) {
setActivityVisibilityState(child.asActivityRecord(), starting, resumeTopActivity);
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index cba606c..98ed6f7 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -101,7 +101,8 @@
// isLeashReadyForDispatching (used to dispatch the leash of the control) is
// depending on mGivenInsetsReady. Therefore, triggering notifyControlChanged here
// again, so that the control with leash can be eventually dispatched
- if (!mGivenInsetsReady && isServerVisible() && !givenInsetsPending) {
+ if (!mGivenInsetsReady && isServerVisible() && !givenInsetsPending
+ && mControlTarget != null) {
mGivenInsetsReady = true;
ImeTracker.forLogging().onProgress(mStatsToken,
ImeTracker.PHASE_WM_POST_LAYOUT_NOTIFY_CONTROLS_CHANGED);
diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
index 7276007..d1585d0 100644
--- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
@@ -384,7 +384,7 @@
}
final boolean serverVisibleChanged = mServerVisible != isServerVisible;
setServerVisible(isServerVisible);
- if (mControl != null) {
+ if (mControl != null && mControlTarget != null) {
final boolean positionChanged = updateInsetsControlPosition(windowState);
if (!(positionChanged || mHasPendingPosition)
// The insets hint would be updated while changing the position. Here updates it
diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java
index ce85184..9df65f6 100644
--- a/services/core/java/com/android/server/wm/InsetsStateController.java
+++ b/services/core/java/com/android/server/wm/InsetsStateController.java
@@ -371,7 +371,7 @@
array.add(provider);
}
- void notifyControlChanged(InsetsControlTarget target, InsetsSourceProvider provider) {
+ void notifyControlChanged(@NonNull InsetsControlTarget target, InsetsSourceProvider provider) {
addToPendingControlMaps(target, provider);
notifyPendingInsetsControlChanged();
}
diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java
index 0604953..790858d 100644
--- a/services/core/java/com/android/server/wm/LockTaskController.java
+++ b/services/core/java/com/android/server/wm/LockTaskController.java
@@ -263,10 +263,9 @@
// should be finish together in the Task.
if (activity != taskRoot || activity != taskTop) {
final TaskFragment taskFragment = activity.getTaskFragment();
- final TaskFragment adjacentTaskFragment = taskFragment.getAdjacentTaskFragment();
if (taskFragment.asTask() != null
|| !taskFragment.isDelayLastActivityRemoval()
- || adjacentTaskFragment == null) {
+ || !taskFragment.hasAdjacentTaskFragment()) {
// Don't block activity from finishing if the TaskFragment don't have any adjacent
// TaskFragment, or it won't finish together with its adjacent TaskFragment.
return false;
@@ -281,7 +280,7 @@
}
final boolean hasOtherActivityInTask = task.getActivity(a -> !a.finishing
- && a != activity && a.getTaskFragment() != adjacentTaskFragment) != null;
+ && a != activity && !taskFragment.isAdjacentTo(a.getTaskFragment())) != null;
if (hasOtherActivityInTask) {
// Do not block activity from finishing if there are another running activities
// after the current and adjacent TaskFragments are removed. Note that we don't
@@ -653,6 +652,10 @@
if (!isSystemCaller) {
task.mLockTaskUid = callingUid;
if (task.mLockTaskAuth == LOCK_TASK_AUTH_PINNABLE) {
+ if (mLockTaskModeTasks.contains(task)) {
+ ProtoLog.w(WM_DEBUG_LOCKTASK, "Already locked.");
+ return;
+ }
// startLockTask() called by app, but app is not part of lock task allowlist. Show
// app pinning request. We will come back here with isSystemCaller true.
ProtoLog.w(WM_DEBUG_LOCKTASK, "Mode default, asking user");
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 7b7b3eb..367adc3 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -518,11 +518,14 @@
}
}
- // TODO(b/373709676): update usages.
/** @deprecated b/373709676 replace with {@link #getAdjacentTaskFragments()}. */
@Deprecated
@Nullable
TaskFragment getAdjacentTaskFragment() {
+ if (Flags.allowMultipleAdjacentTaskFragments()) {
+ throw new IllegalStateException("allowMultipleAdjacentTaskFragments is enabled. "
+ + "Use #getAdjacentTaskFragments instead");
+ }
return mAdjacentTaskFragment;
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 813fec1..f634beb 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -345,6 +345,7 @@
void setMouseReverseVerticalScrollingEnabled(bool enabled);
void setMouseScrollingAccelerationEnabled(bool enabled);
void setMouseSwapPrimaryButtonEnabled(bool enabled);
+ void setMouseAccelerationEnabled(bool enabled);
void setTouchpadPointerSpeed(int32_t speed);
void setTouchpadNaturalScrollingEnabled(bool enabled);
void setTouchpadTapToClickEnabled(bool enabled);
@@ -502,6 +503,9 @@
// True if the mouse primary button is swapped (left/right buttons).
bool mouseSwapPrimaryButtonEnabled{false};
+ // True if the mouse cursor will accelerate as the mouse moves faster.
+ bool mousePointerAccelerationEnabled{true};
+
// The touchpad pointer speed, as a number from -7 (slowest) to 7 (fastest).
int32_t touchpadPointerSpeed{0};
@@ -847,6 +851,7 @@
outConfig->mouseReverseVerticalScrollingEnabled =
mLocked.mouseReverseVerticalScrollingEnabled;
outConfig->mouseSwapPrimaryButtonEnabled = mLocked.mouseSwapPrimaryButtonEnabled;
+ outConfig->mousePointerAccelerationEnabled = mLocked.mousePointerAccelerationEnabled;
outConfig->touchpadPointerSpeed = mLocked.touchpadPointerSpeed;
outConfig->touchpadNaturalScrollingEnabled = mLocked.touchpadNaturalScrollingEnabled;
@@ -1458,6 +1463,21 @@
InputReaderConfiguration::Change::MOUSE_SETTINGS);
}
+void NativeInputManager::setMouseAccelerationEnabled(bool enabled) {
+ { // acquire lock
+ std::scoped_lock _l(mLock);
+
+ if (mLocked.mousePointerAccelerationEnabled == enabled) {
+ return;
+ }
+
+ mLocked.mousePointerAccelerationEnabled = enabled;
+ } // release lock
+
+ mInputManager->getReader().requestRefreshConfiguration(
+ InputReaderConfiguration::Change::POINTER_SPEED);
+}
+
void NativeInputManager::setPointerSpeed(int32_t speed) {
{ // acquire lock
std::scoped_lock _l(mLock);
@@ -3220,6 +3240,11 @@
im->setMouseSwapPrimaryButtonEnabled(enabled);
}
+static void nativeSetMouseAccelerationEnabled(JNIEnv* env, jobject nativeImplObj, bool enabled) {
+ NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
+ im->setMouseAccelerationEnabled(enabled);
+}
+
static jboolean nativeSetKernelWakeEnabled(JNIEnv* env, jobject nativeImplObj, jint deviceId,
jboolean enabled) {
NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
@@ -3280,6 +3305,7 @@
{"setMouseScrollingAccelerationEnabled", "(Z)V",
(void*)nativeSetMouseScrollingAccelerationEnabled},
{"setMouseSwapPrimaryButtonEnabled", "(Z)V", (void*)nativeSetMouseSwapPrimaryButtonEnabled},
+ {"setMouseAccelerationEnabled", "(Z)V", (void*)nativeSetMouseAccelerationEnabled},
{"setTouchpadPointerSpeed", "(I)V", (void*)nativeSetTouchpadPointerSpeed},
{"setTouchpadNaturalScrollingEnabled", "(Z)V",
(void*)nativeSetTouchpadNaturalScrollingEnabled},
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/BroadcastHelperTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/BroadcastHelperTest.java
index 0ae7699..58e4b91 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/BroadcastHelperTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/BroadcastHelperTest.java
@@ -36,6 +36,7 @@
import android.app.ActivityManagerInternal;
import android.content.Context;
import android.content.Intent;
+import android.os.Binder;
import android.os.Handler;
import android.os.Message;
import android.os.UserHandle;
@@ -233,6 +234,7 @@
mBroadcastHelper.sendPackageChangedBroadcast(mMockSnapshot,
PACKAGE_CHANGED_TEST_PACKAGE_NAME, true /* dontKillApp */, componentNames,
- UserHandle.USER_SYSTEM, "test" /* reason */, "test" /* reasonForTrace */);
+ UserHandle.USER_SYSTEM, "test" /* reason */, "test" /* reasonForTrace */,
+ Binder.getCallingUid());
}
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt b/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
index c65024f8..b09947a 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
@@ -17,7 +17,7 @@
package com.android.server.display
import android.hardware.display.DisplayTopology
-import android.util.DisplayMetrics
+import android.hardware.display.DisplayTopology.pxToDp
import android.view.Display
import android.view.DisplayInfo
import com.google.common.truth.Truth.assertThat
@@ -62,10 +62,8 @@
fun addDisplay() {
coordinator.onDisplayAdded(displayInfo)
- val widthDp = displayInfo.logicalWidth * (DisplayMetrics.DENSITY_DEFAULT.toFloat()
- / displayInfo.logicalDensityDpi)
- val heightDp = displayInfo.logicalHeight * (DisplayMetrics.DENSITY_DEFAULT.toFloat()
- / displayInfo.logicalDensityDpi)
+ val widthDp = pxToDp(displayInfo.logicalWidth.toFloat(), displayInfo.logicalDensityDpi)
+ val heightDp = pxToDp(displayInfo.logicalHeight.toFloat(), displayInfo.logicalDensityDpi)
verify(mockTopology).addDisplay(displayInfo.displayId, widthDp, heightDp)
verify(mockTopologyChangedCallback).invoke(mockTopologyCopy)
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
index ea80f28..db6aeeb 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
@@ -602,7 +602,7 @@
mQueue.dumpDebug(new ProtoOutputStream(),
ActivityManagerServiceDumpBroadcastsProto.BROADCAST_QUEUE);
mQueue.dumpLocked(FileDescriptor.err, new PrintWriter(Writer.nullWriter()),
- null, 0, true, true, true, null, false);
+ null, 0, true, true, true, null, null, false);
mQueue.dumpToDropBoxLocked(TAG);
BroadcastQueue.logv(TAG);
@@ -1019,7 +1019,7 @@
mQueue.dumpDebug(new ProtoOutputStream(),
ActivityManagerServiceDumpBroadcastsProto.BROADCAST_QUEUE);
mQueue.dumpLocked(FileDescriptor.err, new PrintWriter(Writer.nullWriter()),
- null, 0, true, true, true, null, false);
+ null, 0, true, true, true, null, null, false);
}
waitForIdle();
diff --git a/services/tests/performancehinttests/src/com/android/server/power/hint/HintManagerServiceTest.java b/services/tests/performancehinttests/src/com/android/server/power/hint/HintManagerServiceTest.java
index bd15bd0..cd94c0f 100644
--- a/services/tests/performancehinttests/src/com/android/server/power/hint/HintManagerServiceTest.java
+++ b/services/tests/performancehinttests/src/com/android/server/power/hint/HintManagerServiceTest.java
@@ -1411,7 +1411,6 @@
halParams3.tids = tids;
halParams3.calculationType = CpuHeadroomParams.CalculationType.AVERAGE;
- // this params should not be cached as the window is not default
CpuHeadroomParamsInternal params4 = new CpuHeadroomParamsInternal();
params4.calculationWindowMillis = 123;
CpuHeadroomParams halParams4 = new CpuHeadroomParams();
@@ -1450,11 +1449,7 @@
assertEquals(halRet2, service.getBinderServiceInstance().getCpuHeadroom(params2));
assertEquals(halRet3, service.getBinderServiceInstance().getCpuHeadroom(params3));
assertEquals(halRet4, service.getBinderServiceInstance().getCpuHeadroom(params4));
- verify(mIPowerMock, times(1)).getCpuHeadroom(any());
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams1));
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams2));
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams3));
- verify(mIPowerMock, times(1)).getCpuHeadroom(eq(halParams4));
+ verify(mIPowerMock, times(0)).getCpuHeadroom(any());
// after 500ms more it should be served with cache
Thread.sleep(500);
@@ -1463,11 +1458,7 @@
assertEquals(halRet2, service.getBinderServiceInstance().getCpuHeadroom(params2));
assertEquals(halRet3, service.getBinderServiceInstance().getCpuHeadroom(params3));
assertEquals(halRet4, service.getBinderServiceInstance().getCpuHeadroom(params4));
- verify(mIPowerMock, times(1)).getCpuHeadroom(any());
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams1));
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams2));
- verify(mIPowerMock, times(0)).getCpuHeadroom(eq(halParams3));
- verify(mIPowerMock, times(1)).getCpuHeadroom(eq(halParams4));
+ verify(mIPowerMock, times(0)).getCpuHeadroom(any());
// after 1+ seconds it should be served from HAL as it exceeds 1000 millis interval
Thread.sleep(600);
@@ -1574,18 +1565,14 @@
clearInvocations(mIPowerMock);
assertEquals(halRet1, service.getBinderServiceInstance().getGpuHeadroom(params1));
assertEquals(halRet2, service.getBinderServiceInstance().getGpuHeadroom(params2));
- verify(mIPowerMock, times(1)).getGpuHeadroom(any());
- verify(mIPowerMock, times(0)).getGpuHeadroom(eq(halParams1));
- verify(mIPowerMock, times(1)).getGpuHeadroom(eq(halParams2));
+ verify(mIPowerMock, times(0)).getGpuHeadroom(any());
// after 500ms it should be served with cache
Thread.sleep(500);
clearInvocations(mIPowerMock);
assertEquals(halRet1, service.getBinderServiceInstance().getGpuHeadroom(params1));
assertEquals(halRet2, service.getBinderServiceInstance().getGpuHeadroom(params2));
- verify(mIPowerMock, times(1)).getGpuHeadroom(any());
- verify(mIPowerMock, times(0)).getGpuHeadroom(eq(halParams1));
- verify(mIPowerMock, times(1)).getGpuHeadroom(eq(halParams2));
+ verify(mIPowerMock, times(0)).getGpuHeadroom(any());
// after 1+ seconds it should be served from HAL as it exceeds 1000 millis interval
Thread.sleep(600);
diff --git a/services/tests/servicestests/src/com/android/server/security/advancedprotection/AdvancedProtectionServiceTest.java b/services/tests/servicestests/src/com/android/server/security/advancedprotection/AdvancedProtectionServiceTest.java
index c7a06b8..b1df0f1 100644
--- a/services/tests/servicestests/src/com/android/server/security/advancedprotection/AdvancedProtectionServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/security/advancedprotection/AdvancedProtectionServiceTest.java
@@ -31,7 +31,6 @@
import android.os.test.TestLooper;
import android.provider.Settings;
import android.security.advancedprotection.AdvancedProtectionFeature;
-import android.security.advancedprotection.AdvancedProtectionManager;
import android.security.advancedprotection.IAdvancedProtectionCallback;
import androidx.annotation.NonNull;
@@ -55,8 +54,7 @@
private Context mContext;
private AdvancedProtectionService.AdvancedProtectionStore mStore;
private TestLooper mLooper;
- AdvancedProtectionFeature mTestFeature2g = new AdvancedProtectionFeature(
- AdvancedProtectionManager.FEATURE_ID_DISALLOW_CELLULAR_2G);
+ AdvancedProtectionFeature mFeature = new AdvancedProtectionFeature("test-id");
@Before
public void setup() throws Settings.SettingNotFoundException {
@@ -107,7 +105,7 @@
@NonNull
@Override
public AdvancedProtectionFeature getFeature() {
- return mTestFeature2g;
+ return mFeature;
}
@Override
@@ -137,7 +135,7 @@
@NonNull
@Override
public AdvancedProtectionFeature getFeature() {
- return mTestFeature2g;
+ return mFeature;
}
@Override
@@ -167,7 +165,7 @@
@NonNull
@Override
public AdvancedProtectionFeature getFeature() {
- return mTestFeature2g;
+ return mFeature;
}
@Override
@@ -240,10 +238,8 @@
@Test
public void testGetFeatures() {
- AdvancedProtectionFeature feature1 = new AdvancedProtectionFeature(
- AdvancedProtectionManager.FEATURE_ID_DISALLOW_CELLULAR_2G);
- AdvancedProtectionFeature feature2 = new AdvancedProtectionFeature(
- AdvancedProtectionManager.FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES);
+ AdvancedProtectionFeature feature1 = new AdvancedProtectionFeature("id-1");
+ AdvancedProtectionFeature feature2 = new AdvancedProtectionFeature("id-2");
AdvancedProtectionHook hook = new AdvancedProtectionHook(mContext, true) {
@NonNull
@Override
@@ -272,10 +268,8 @@
@Test
public void testGetFeatures_featureNotAvailable() {
- AdvancedProtectionFeature feature1 = new AdvancedProtectionFeature(
- AdvancedProtectionManager.FEATURE_ID_DISALLOW_CELLULAR_2G);
- AdvancedProtectionFeature feature2 = new AdvancedProtectionFeature(
- AdvancedProtectionManager.FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES);
+ AdvancedProtectionFeature feature1 = new AdvancedProtectionFeature("id-1");
+ AdvancedProtectionFeature feature2 = new AdvancedProtectionFeature("id-2");
AdvancedProtectionHook hook = new AdvancedProtectionHook(mContext, true) {
@NonNull
@Override
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
index d1dc8d6..4f5cdb7 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
@@ -19,9 +19,13 @@
import static android.service.notification.Adjustment.KEY_IMPORTANCE;
import static android.service.notification.Adjustment.TYPE_CONTENT_RECOMMENDATION;
import static android.service.notification.Adjustment.TYPE_NEWS;
+import static android.service.notification.Adjustment.TYPE_OTHER;
import static android.service.notification.Adjustment.TYPE_PROMOTION;
+import static android.service.notification.Adjustment.TYPE_SOCIAL_MEDIA;
+import static android.service.notification.Flags.notificationClassification;
import static com.android.server.notification.NotificationManagerService.DEFAULT_ALLOWED_ADJUSTMENTS;
+import static com.android.server.notification.NotificationManagerService.DEFAULT_ALLOWED_ADJUSTMENT_KEY_TYPES;
import static com.google.common.truth.Truth.assertThat;
@@ -144,6 +148,17 @@
mAssistants.readXml(parser, mNm::canUseManagedServices, false, USER_ALL);
}
+ private void setDefaultAllowedAdjustmentKeyTypes(NotificationAssistants assistants) {
+ assistants.setAssistantAdjustmentKeyTypeState(TYPE_OTHER, false);
+ assistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
+ assistants.setAssistantAdjustmentKeyTypeState(TYPE_SOCIAL_MEDIA, false);
+ assistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, false);
+ assistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, false);
+
+ for (int type : DEFAULT_ALLOWED_ADJUSTMENT_KEY_TYPES) {
+ assistants.setAssistantAdjustmentKeyTypeState(type, true);
+ }
+ }
@Before
public void setUp() throws Exception {
@@ -154,6 +169,9 @@
com.android.internal.R.string.config_defaultAssistantAccessComponent,
mCn.flattenToString());
mAssistants = spy(mNm.new NotificationAssistants(mContext, mLock, mUserProfiles, miPm));
+ if (notificationClassification()) {
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
+ }
when(mNm.getBinderService()).thenReturn(mINm);
mContext.ensureTestableResources();
@@ -695,7 +713,7 @@
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, true);
assertThat(mAssistants.getAllowedAdjustmentKeyTypes()).asList()
- .containsExactlyElementsIn(List.of(TYPE_PROMOTION, TYPE_CONTENT_RECOMMENDATION));
+ .containsExactly(TYPE_PROMOTION, TYPE_CONTENT_RECOMMENDATION);
}
@Test
@@ -716,7 +734,7 @@
writeXmlAndReload(USER_ALL);
assertThat(mAssistants.getAllowedAdjustmentKeyTypes()).asList()
- .containsExactlyElementsIn(List.of(TYPE_NEWS, TYPE_CONTENT_RECOMMENDATION));
+ .containsExactly(TYPE_NEWS, TYPE_CONTENT_RECOMMENDATION);
}
@Test
@@ -732,76 +750,146 @@
@Test
@EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void testSetAssistantAdjustmentKeyTypeStateForPackage_allowsAndDenies() {
- // Given that a package is allowed to have its type adjusted,
- String allowedPackage = "allowed.package";
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).isEmpty();
- mAssistants.setTypeAdjustmentForPackageState(allowedPackage, true);
-
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).isEmpty();
- assertTrue(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPackage));
-
- // Set type adjustment disallowed for this package
- mAssistants.setTypeAdjustmentForPackageState(allowedPackage, false);
-
- // Then the package is marked as denied
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).asList()
- .containsExactly(allowedPackage);
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPackage));
-
- // Set type adjustment allowed again
- mAssistants.setTypeAdjustmentForPackageState(allowedPackage, true);
-
- // Then the package is marked as allowed again
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).isEmpty();
- assertTrue(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPackage));
+ public void testSetAssistantAdjustmentKeyTypeStateForPackage_usesGlobalDefault() {
+ String pkg = "my.package";
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_PROMOTION)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isFalse();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactlyElementsIn(DEFAULT_ALLOWED_ADJUSTMENT_KEY_TYPES);
}
@Test
@EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void testSetAssistantAdjustmentKeyTypeStateForPackage_deniesMultiple() {
- // Given packages not allowed to have their type adjusted,
- String deniedPkg1 = "denied.Pkg1";
- String deniedPkg2 = "denied.Pkg2";
- String deniedPkg3 = "denied.Pkg3";
- // Set type adjustment disallowed for these packages
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg1, false);
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg2, false);
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg3, false);
+ public void testSetAssistantAdjustmentKeyTypeStateForPackage_allowsAndDenies() {
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
+ // Given that a package is set to have a type adjustment allowed,
+ String pkg = "my.package";
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_NEWS, true);
- // Then the packages are marked as denied
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).asList()
- .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg2, deniedPkg3));
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg1));
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg2));
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg3));
+ // The newly set state is the combination of the global default and the newly set type.
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isTrue();
- // And when we re-allow one of them,
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg2, true);
+ // Set type adjustment disallowed for this package
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_NEWS, false);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_PROMOTION, false);
- // Then the rest of the original packages are still marked as denied.
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).asList()
- .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg3));
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg1));
- assertTrue(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg2));
- assertFalse(mAssistants.isTypeAdjustmentAllowedForPackage(deniedPkg3));
+ // Then the package is marked as denied
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).isEmpty();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isFalse();
+
+ // Set type adjustment allowed again
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_NEWS, true);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_PROMOTION, true);
+
+ // Then the package is marked as allowed again
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_PROMOTION)).isTrue();
+
+ // Set type adjustment promotions false,
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_PROMOTION, false);
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_PROMOTION)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
+ public void testSetAssistantAdjustmentKeyTypeStateForPackage_allowsMultiplePkgs() {
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
+ // Given packages allowed to have their type adjusted to TYPE_NEWS,
+ String allowedPkg1 = "allowed.Pkg1";
+ String allowedPkg2 = "allowed.Pkg2";
+ String allowedPkg3 = "allowed.Pkg3";
+ // Set type adjustment allowed for these packages
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg1, TYPE_NEWS, true);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg2, TYPE_NEWS, true);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg3, TYPE_NEWS, true);
+
+ // The newly set state is the combination of the global default and the newly set type.
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg1)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg2)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg3)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg1, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg2, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg3, TYPE_NEWS)).isTrue();
+
+ // And when we deny some of them,
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg2, TYPE_NEWS, false);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg2, TYPE_PROMOTION,
+ false);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg3, TYPE_PROMOTION,
+ false);
+
+ // Then the rest of the original packages are still marked as allowed.
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg1)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg2)).isEmpty();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg3)).asList()
+ .containsExactly(TYPE_NEWS);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg1, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg2, TYPE_NEWS)).isFalse();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(allowedPkg3, TYPE_NEWS)).isTrue();
}
@Test
@EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
public void testSetAssistantAdjustmentKeyTypeStateForPackage_readWriteXml() throws Exception {
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
mAssistants.loadDefaultsFromConfig(true);
String deniedPkg1 = "denied.Pkg1";
String allowedPkg2 = "allowed.Pkg2";
- String deniedPkg3 = "denied.Pkg3";
+ String allowedPkg3 = "allowed.Pkg3";
// Set type adjustment disallowed or allowed for these packages
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg1, false);
- mAssistants.setTypeAdjustmentForPackageState(allowedPkg2, true);
- mAssistants.setTypeAdjustmentForPackageState(deniedPkg3, false);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(deniedPkg1, TYPE_PROMOTION, false);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg2, TYPE_NEWS, true);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg3, TYPE_NEWS, true);
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(allowedPkg3, TYPE_SOCIAL_MEDIA,
+ true);
writeXmlAndReload(USER_ALL);
- assertThat(mAssistants.getTypeAdjustmentDeniedPackages()).asList()
- .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg3));
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(deniedPkg1)).isEmpty();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg2)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(allowedPkg3)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_SOCIAL_MEDIA, TYPE_PROMOTION);
+ }
+
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
+ public void testSetAssistantAdjustmentKeyTypeStateForPackage_noGlobalImpact() throws Exception {
+ setDefaultAllowedAdjustmentKeyTypes(mAssistants);
+ // When the global state is changed,
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, true);
+
+ // The package state reflects the global state.
+ String pkg = "my.package";
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_PROMOTION)).isTrue();
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION);
+
+ // Once the package specific state is modified,
+ mAssistants.setAssistantAdjustmentKeyTypeStateForPackage(pkg, TYPE_SOCIAL_MEDIA, true);
+
+ // The package specific state combines the global state with those modifications
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_SOCIAL_MEDIA)).isTrue();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION, TYPE_SOCIAL_MEDIA);
+
+ // And further changes to the global state are ignored.
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, false);
+ assertThat(mAssistants.isTypeAdjustmentAllowedForPackage(pkg, TYPE_NEWS)).isTrue();
+ assertThat(mAssistants.getAllowedAdjustmentKeyTypesForPackage(pkg)).asList()
+ .containsExactly(TYPE_NEWS, TYPE_PROMOTION, TYPE_SOCIAL_MEDIA);
}
}
\ No newline at end of file
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 601023f..301165f 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -365,6 +365,9 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
+import platform.test.runner.parameterized.Parameters;
+
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
@@ -380,9 +383,6 @@
import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
-import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
-import platform.test.runner.parameterized.Parameters;
-
@SmallTest
@RunWith(ParameterizedAndroidJunit4.class)
@RunWithLooper
@@ -644,6 +644,9 @@
doNothing().when(mContext).sendBroadcast(any(), anyString());
doNothing().when(mContext).sendBroadcastAsUser(any(), any());
doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any());
+ doNothing().when(mContext).sendBroadcastMultiplePermissions(any(), any(), any(), any());
+ doReturn(mContext).when(mContext).createContextAsUser(eq(mUser), anyInt());
+
TestableContentResolver cr = mock(TestableContentResolver.class);
when(mContext.getContentResolver()).thenReturn(cr);
doNothing().when(cr).registerContentObserver(any(), anyBoolean(), any(), anyInt());
@@ -7631,7 +7634,7 @@
when(mAssistants.isSameUser(any(), anyInt())).thenReturn(true);
when(mAssistants.isServiceTokenValidLocked(any())).thenReturn(true);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), anyInt())).thenReturn(true);
// Set up notifications that will be adjusted
final NotificationRecord r1 = spy(generateNotificationRecord(
@@ -11235,7 +11238,8 @@
}
@Test
- public void onZenModeChanged_sendsBroadcasts() throws Exception {
+ @DisableFlags(Flags.FLAG_NM_BINDER_PERF_REDUCE_ZEN_BROADCASTS)
+ public void onZenModeChanged_sendsBroadcasts_oldBehavior() throws Exception {
when(mAmi.getCurrentUserId()).thenReturn(100);
when(mUmInternal.getProfileIds(eq(100), anyBoolean())).thenReturn(new int[]{100, 101, 102});
when(mConditionProviders.getAllowedPackages(anyInt())).then(new Answer<List<String>>() {
@@ -11288,6 +11292,74 @@
}
@Test
+ @EnableFlags(Flags.FLAG_NM_BINDER_PERF_REDUCE_ZEN_BROADCASTS)
+ public void onZenModeChanged_sendsBroadcasts() throws Exception {
+ when(mAmi.getCurrentUserId()).thenReturn(100);
+ when(mUmInternal.getProfileIds(eq(100), anyBoolean())).thenReturn(new int[]{100, 101, 102});
+ when(mConditionProviders.getAllowedPackages(anyInt())).then(new Answer<List<String>>() {
+ @Override
+ public List<String> answer(InvocationOnMock invocation) {
+ int userId = invocation.getArgument(0);
+ switch (userId) {
+ case 100:
+ return Lists.newArrayList("a", "b", "c");
+ case 101:
+ return Lists.newArrayList();
+ case 102:
+ return Lists.newArrayList("b");
+ default:
+ throw new IllegalArgumentException(
+ "Why would you ask for packages of userId " + userId + "?");
+ }
+ }
+ });
+ Context context100 = mock(Context.class);
+ doReturn(context100).when(mContext).createContextAsUser(eq(UserHandle.of(100)), anyInt());
+ Context context101 = mock(Context.class);
+ doReturn(context101).when(mContext).createContextAsUser(eq(UserHandle.of(101)), anyInt());
+ Context context102 = mock(Context.class);
+ doReturn(context102).when(mContext).createContextAsUser(eq(UserHandle.of(102)), anyInt());
+
+ mService.getBinderService().setZenMode(Settings.Global.ZEN_MODE_NO_INTERRUPTIONS, null,
+ "testing!", false);
+ waitForIdle();
+
+ // Verify broadcasts per user: registered receivers first, then DND packages.
+ InOrder inOrder = inOrder(context100, context101, context102);
+
+ inOrder.verify(context100).sendBroadcastMultiplePermissions(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)),
+ eq(new String[0]), eq(new String[0]), eq(new String[] {"a", "b", "c"}));
+ inOrder.verify(context100).sendBroadcast(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setPackage("a")
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT)));
+ inOrder.verify(context100).sendBroadcast(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setPackage("b")
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT)));
+ inOrder.verify(context100).sendBroadcast(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setPackage("c")
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT)));
+
+ inOrder.verify(context101).sendBroadcastMultiplePermissions(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)),
+ eq(new String[0]), eq(new String[0]), eq(new String[] {}));
+
+ inOrder.verify(context102).sendBroadcastMultiplePermissions(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)),
+ eq(new String[0]), eq(new String[0]), eq(new String[] {"b"}));
+ inOrder.verify(context102).sendBroadcast(
+ eqIntent(new Intent(ACTION_INTERRUPTION_FILTER_CHANGED)
+ .setPackage("b")
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT)));
+ }
+
+ @Test
@EnableFlags(android.app.Flags.FLAG_MODES_API)
public void onAutomaticRuleStatusChanged_sendsBroadcastToRuleOwner() throws Exception {
mService.mZenModeHelper.getCallbacks().forEach(c -> c.onAutomaticRuleStatusChanged(
@@ -17305,7 +17377,7 @@
NotificationManagerService.WorkerHandler.class);
mService.setHandler(handler);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), anyInt())).thenReturn(true);
Bundle signals = new Bundle();
signals.putInt(KEY_TYPE, TYPE_NEWS);
@@ -17349,7 +17421,11 @@
NotificationManagerService.WorkerHandler.class);
mService.setHandler(handler);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), eq(TYPE_NEWS)))
+ .thenReturn(true);
+ // Blocking adjustments for a different type does nothing
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), eq(TYPE_PROMOTION)))
+ .thenReturn(false);
Bundle signals = new Bundle();
signals.putInt(KEY_TYPE, TYPE_NEWS);
@@ -17364,8 +17440,9 @@
assertThat(r.getChannel().getId()).isEqualTo(NEWS_ID);
- // When we block adjustments for this package
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(false);
+ // When we block adjustments for this package/type
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), eq(TYPE_PROMOTION)))
+ .thenReturn(false);
signals.putInt(KEY_TYPE, TYPE_PROMOTION);
mBinderService.applyAdjustmentFromAssistant(null, adjustment);
@@ -17695,7 +17772,7 @@
when(mAssistants.isSameUser(any(), anyInt())).thenReturn(true);
when(mAssistants.isServiceTokenValidLocked(any())).thenReturn(true);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), anyInt())).thenReturn(true);
// Post a single notification
final boolean hasOriginalSummary = false;
@@ -17735,7 +17812,7 @@
when(mAssistants.isSameUser(any(), anyInt())).thenReturn(true);
when(mAssistants.isServiceTokenValidLocked(any())).thenReturn(true);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), anyInt())).thenReturn(true);
// Post grouped notifications
final String originalGroupName = "originalGroup";
@@ -17784,7 +17861,7 @@
when(mAssistants.isSameUser(any(), anyInt())).thenReturn(true);
when(mAssistants.isServiceTokenValidLocked(any())).thenReturn(true);
when(mAssistants.isAdjustmentKeyTypeAllowed(anyInt())).thenReturn(true);
- when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString())).thenReturn(true);
+ when(mAssistants.isTypeAdjustmentAllowedForPackage(anyString(), anyInt())).thenReturn(true);
// Post grouped notifications
final String originalGroupName = "originalGroup";
diff --git a/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
index bef4531..5122aee 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
@@ -239,6 +239,11 @@
verifyLockTaskStarted(STATUS_BAR_MASK_PINNED, DISABLE2_NONE);
// THEN screen pinning toast should be shown
verify(mStatusBarService).showPinningEnterExitToast(eq(true /* entering */));
+
+ // WHEN the app calls startLockTaskMode while the Task is already locked
+ mLockTaskController.startLockTaskMode(tr, false, TEST_UID);
+ // THEN a pinning request should NOT be shown
+ verify(mStatusBarManagerInternal, never()).showScreenPinningRequest(anyInt(), anyInt());
}
@Test
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index e7c9e92..e27dbe5 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -1869,10 +1869,18 @@
}
private boolean shouldDeleteObsoleteData(UserHandle userHandle) {
- final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
- // If a profile owner is not defined for the given user, obsolete data should be deleted
- return dpmInternal == null
- || dpmInternal.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle) == null;
+ if (android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()) {
+ final SupervisionManagerInternal smInternal = getSupervisionManagerInternal();
+ // If supervision is not enabled for the given user, obsolete data should be deleted.
+ return smInternal == null
+ || !smInternal.isSupervisionEnabledForUser(userHandle.getIdentifier());
+ } else {
+ final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
+ // If a profile owner is not defined for the given user, obsolete data should be deleted
+ return dpmInternal == null
+ || dpmInternal.getProfileOwnerOrDeviceOwnerSupervisionComponent(userHandle)
+ == null;
+ }
}
private String buildFullToken(String packageName, String token) {